操作系统——13.处理机调度的时机、切换与过程、方式

2023-05-16

这篇文章我们继续来学习进程调度的相关知识。

目录

1.概述2

2.进程调度的时机

3.进程调度的方式

4.进程的切换与过程

5.小结


1.概述2

首先,我们来看一下本节类容的大体框架:

2.进程调度的时机

进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。

那什么时候需要进行进程调度呢?如下图所示:


 那什么时候不能进行进程调度与切换呢?如下图所示:

下面分辨两句话:

进程在操作系统内核程序临界区不能进行调度与切换(对的)

进程处于临界区不能进行处理机调度(错的)

补充概念:

临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。

临界区:访问临界资源的那段代码。

内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)

3.进程调度的方式

非剥夺调度方式,又称非抢占方式。即,只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。

优点:实现简单,系统开销小但是无法及时处理紧急任务,适合于早期的批处理系统

剥夺调度方式,又称抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。

优点:可以优先处理更紧急的进程,也可实现让各进程按时间片轮流执行的功能(通过时钟中断)。适合于分时操作系统、实时操作系统。

4.进程的切换与过程

“狭义的进程调度”与“进程切换”的区别:

狭义的进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)

进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。

广义的进程调度包含了选择一个进程和进程切换两个步骤。

进程切换的过程主要完成了:

  1. 对原来运行进程各种数据的保存
  2. 对新的进程各种数据的恢复(如:程序计数器、程序状态字、各种数据寄存器等处理机现场信息,这些信息一般保存在进程控制块)

注意:进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。

5.小结

下面用一张图来小结一下这篇文章的主要内容:

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统——13.处理机调度的时机、切换与过程、方式 的相关文章

  • 裸机开发之驱动开发

    一 驱动开发的基础理解 在计算中 xff0c 设备驱动程序是一种计算机程序 xff0c 用于操作或控制连接到计算机的特定类型的设备 驱动程序提供了与硬件设备的软件接口 xff0c 使操作系统和其他计算机程序可以访问硬件功能 xff0c 而无
  • STM32HAL库使用ESP8266模块

    ESP8266模块是一个可是实现蓝牙和WiFi一体的模块 xff0c ESP8266 是一个完整且自成体系的 WiFi 网络解决方案 xff0c 能够独立运行 xff0c 也可以作为 slave 搭载于其他 Host 运行 ESP8266模
  • 几种数字传感器介绍(一)————温湿度传感器(HDC1080)

    一 温湿度采集传感器 xff08 HDC1080 xff09 1 简要概述 HDC1080是一种集成温度传感器的数字湿度传感器 xff0c 具有出色的测量精度和超低的功耗 其具有14位测量分辨率 xff0c 相对湿度精度为 2 温度精度为
  • STM32F103xx / STM32F429VET6最小系统原理图

    STM32F429VET6核心板原理图 一 前言 先前使用过的是STM32F1系列 xff0c 只使用和绘制过STM32F103C8T6和STM32F103ZET6的板子 心血来潮想试一下STM32F4系列和F1系列在编程上有什么差别 xf
  • FreeRTOS - 多任务使用要点

    一 临界段应用 1 临界段作用 在程序访问资源时 xff0c 不希望被其他任务或者中断打断 xff0c 这段要执行的代码 xff0c 称为临界代码段 1 1不想被打断访问的资源 xff08 临界段保护 xff09 读取或者修改变量 xff0
  • 项目准备及自我介绍

    项目准备及自我介绍 1 自我介绍 面试官你好 xff0c 我叫XXX xff0c 就读于重庆邮电大学 xff1b 实验室是国家信息无障碍研发中心 xff1b 研究生期间 xff0c 参与两起机器人项目 xff0c 一是基于SLAM的清洁机器
  • 卸载重装Android Studio导入先前的版本,或者是误判SDK installed解决方法。(包含window,mac,Linux)

    我安装了几次Android Studio 之前一直不太稳定 xff0c 特别是想要导入别人的项目时 xff0c 版本不兼容真的会导致很多问题 尤其是他会下载gradle版本 xff0c 花费很长时间占用内存也就罢了 xff0c 更过分的是如
  • gcc编译过程

    gcc编译过程 文章目录 gcc编译过程1 预处理 Preproceessing 2 编译 Compilation 3 汇编 Assembly 4 链接 Linking 一般在windows下编译代码的时候是直接生成了可执行文件 xff0c
  • STM32串口printf调试输出(SSCOM V5.13.1)

    文章目录 1 原理图分析2 配置使能串口USART13 添加代码4 烧录连接显示5 浮点数输出 1 原理图分析 PC与CPU相互通信就是通过USB Type C接口和USB电平转换实现的 我们可以看到 xff0c CPU通过管脚USART1
  • CMakeLists文件的编译

    文章目录 CMakeLists的编译CMakeLists编译原理 文件路径 xff1a 编写CMakeLists txt CMakeLists常用命令 CmkeLists的基本步骤1 1 CMake版本1 2 软件包名称1 3 查找相关的C
  • 决策树--CART算法

    文章目录 1 Crat算法 分类树 1 1基尼系数1 2连续型特征处理1 3CART算法1 5 举例说明1 5 代码 2 回归树 1 Crat算法 分类树 1 1基尼系数 CART是基于基尼 Gini 系数最小化准则来进行特征选择 xff0
  • 深度学习——几种学习类型

    迁移学习 深度学习中 xff0c 最强大的理念之一就是 xff0c 有的时候神经网络可以从一个任务中习得知识 xff0c 并将这些知识应用到另一个独立的任务中 所以例如 xff0c 也许你已经训练好一个神经网络 xff0c 能够识别像猫这样
  • Ubuntu16.04无法更新apt,一直报错

    我是在VirtualBox里用的Ubuntu xff0c 安装好后一直无法更新apt Ubuntu版本是16 04 试过换各种源都失败了 xff0c 已经折磨我三天了 求求各位大佬帮我解答一下什么原因 图一是从系统设置里换源的问题 xff1
  • 用JS实现猜数字游戏

    实现目标 随机生成一个1到10的整数 xff0c 由你来猜 xff0c 直到猜对为止 实现效果图 实现方法 1 随机生成一个1到10的整数 使用Math random 方法 2 需要一直猜到正确为止 所以使用while循环更简单 3 核心算
  • 低版本Matlab(2020b)与高版本Visual Studio(VS2022)实现M、C/C++混合编程(调试)

    目录 前言一 构造编译器的配置文件到Matlab安装目录二 在Matlab中配置为使用 39 Microsoft Visual C 43 43 2022 C 39 以进行 C 语言编译三 验证M文件与C文件混合编译四 配置Cuda加速Mat
  • FreeRTOS任务的定义和任务切换的实现

    创建任务 定义任务栈 在多任务系统中需要为每个任务分配单独的栈空间 数组实现或者动态分配 存在RAM中 定义任务函数 任务函数在main c中定义 每个任务函数都是一个独立 无限循环且不能返回的函数 定义任务控制块 多任务系统为了顺利调度任
  • ubuntu16.04中ROS-Kinetic报错: not find a package configuration file provided by “gazebo_ros_control“

    报错如下 xff1a CMake Error at opt ros kinetic share catkin cmake catkinConfig cmake 83 find package Could not find a package
  • Linux系统下运行程序报错 对‘std::cout’未定义的引用

    其实 xff0c 将gcc改为g 43 43 就好了
  • 更改适配器选项没有VMnet1和VMnet8,且不能ping通即全部“请求超时”,打不开MobaXterm_Personal_22.0这个工具的解决方法

    我在网上查找到的有效的解决方法 第一步 第二步 第一步 百度文库 baidu com 我用的方法二 xff0c 结果我的网络适配器里只有VMnet8 第二步 因为我主要是想用MobaXterm这个工具 xff0c ping不通即 请求超时
  • 获取CSDN文章内容并转换为markdown文本的python

    这篇文章主要介绍了自己写的小工具 xff0c 可以直接获取csdn文章并转换为markdown格式 需要的朋友可以参考下 自己写的小工具 xff0c 可以直接获取csdn文章并转换为markdown格式 效果图 核心代码 span clas

随机推荐

  • JavaScript防抖和节流(从认识到理解到手写)

    JavaScript是事件驱动的 xff0c 大量的操作触发事件 xff0c 加入到事件队列中处理 有一些比较频繁的事件处理 就会造成性能损耗 xff0c 我们就可以通过防抖和节流 来限制事件频繁发生 xff0c 所以防抖和节流也是性能优化
  • 使用canal配合rocketmq监听mysql的binlog日志

    目录 一 安装配置canal 1 1 安装canal 1 2 配置canal基本属性 1 3 配置canal的mysql 二 mysql配置 2 1 开启mysql的binlog日志 2 2 配置 canal 专用用户 2 3 启动cana
  • 基于Jetson Tx2 Nx的Qt、Pyside2配置全流程(树莓派,ARM64同理可用)

    本人基于Jetson TX2 NX方法参照了nvidia官方问题解决论坛 xff0c 但是论坛有些帖子信息不太集中 xff0c 且存在错误 xff0c 因此 xff0c 做如下整合 xff0c 方便大家在做NVIDIA xff08 合理推断
  • 嵌入式面试分享3—IIC,SPI,TCP,UDP

    IIC上拉电阻的作用 xff1f 保证数据的稳定 xff0c 减少干扰 xff0c 为了避免总线信号的混乱 xff0c IIC的空闲状态只能有外部上拉 xff0c 而此时空闲设备被拉到了高阻态 xff0c 也就是相当于断路 xff0c 整个
  • 什么是事件流以及事件流的应用场景

    一 事件流的定义 xff1a 页面触发一个事件 xff0c 会按照一定的顺序响应事件 xff0c 事件的响应过程为事件流 通俗来讲就是网页对点击事件的排序就是事件流 二 事件流的分类 1 事件冒泡 从明确事件源到不明确事件源一次向上响应 2
  • 【数据库(SQL)】总结篇

    C 43 43 语言部分 总结篇 操作系统 总结篇 计算机网络 总结篇 设计模式 总结篇 本文目录 1 SQL1 1 介绍一下数据库分页1 2 介绍一下SQL中的聚合函数1 3 表跟表是怎么关联的1 4 说一说你对外连接的了解1 5 说说S
  • 网络编程 _pthread/fork

    1 查看while源代码 include lt stdlib h gt include lt stdio h gt include lt errno h gt include lt string h gt include lt netdb
  • [ROS学习笔记]ROS中使用激光雷达(RPLIDAR)

    RPLIDAR是低成本的二维雷达解决方案 xff0c 由SlamTec公司的RoboPeak团队开发 xff0c 本次学习用的是RPLidar A1型号激光雷达 xff0c 它能扫描360 xff0c 6米半径的范围它适合用于构建地图 xf
  • gazebo仿真环境搭建+配置+小车运动仿真

    ubuntu版本 xff1a 20 04 gazebo版本 xff1a gazebo11 1 打开gazebo 终端输入 gazebo 或者直接点gazebo软件图标 2 前往建筑编辑器 点击上方 Edit Buiding Edit 或者快
  • 总线学习(BUS)

    1 总线的概念 总线是指计算机设备和设备之间传输信息的公共数据通道 总线是连接计算机硬件系统内多种设备的通信线路 xff0c 一个重要特征是由总线上的所有设备共享 xff0c 可以将计算机系统的多种设备连接到总线上 如果是某两个设备或设备之
  • 贝叶斯滤波与卡尔曼滤波 一

    什么是滤波 xff1f 无论是建立的模型方程来推测出的数据 xff0c 还是用传感器直接测量出的数据 xff0c 总不是那么理想的拟合曲线 xff0c 总存在偏差 方差 xff0c 而滤波就是为了尽可能的减小这些方差 xff0c 减少噪声的
  • JS入门笔记:获取文档对象

    DOM获取元素的方法 1 getElementById 参数 a 参数为元素的id xff0c 并且是字符串形式 b 返回的是一个元素对象 c 使用console dir 打印获取的元素可以更好的察看其相关属性和方法 2 根据标签名来获取元
  • VCC、VDD、VSS、GND区别

    一 具体分析 xff1a 1 在电子电路中 xff0c VCC是电路的供电电压 VDD是芯片的工作电压 2 在普通的电子电路中 xff0c 一般VCC gt VDD 3 在COMS器件中 xff0c VDD是CMOS的漏极引脚 xff0c
  • 立创EDA入门

    如有错误 xff0c 感谢指正 如有错误 xff0c 感谢指正 xff0c 请私信博主 xff0c 有辛苦红包 xff0c 拜 一字之师 请根据目录寻找自己需要的段落 导语 xff1a 本博客为个人整理EDA学习记录帖 xff0c 如有错误
  • DockerFile构建过程

    DockerFile构建过程 了解镜像加载原理 Docker镜像加载原理 UnionFS 联合文件系统 xff09 UnionFS 联合文件系统 xff09 Union文件系统 UnionFS 是一种分层 轻量级并且高性能的文件系统 xff
  • 杂记——1.Navicat连接远程数据库时出现的2003错误

    1 问题描述 当我们用Navicat连接自己的远程数据库时 xff0c 在IP地址与密码都输入正确的情况下 xff0c 点击测试连接时有时会出现以下情况 导致连接失败 xff0c 这就会困扰许多新手小伙伴 xff0c 为什么我的IP与密码都
  • 杂记——9.eclipse启动Tomcat

    这篇文章 xff0c 我们简单的来说一下如何用eclipse启动Tomcat 具体步骤如下所述 第一步 xff1a 打开eclipse xff1a 第二步 xff1a 点击上方的 Window 第三步 xff1a 点击Preferences
  • 杂记——12.腾讯会议使用OBS虚拟摄像头实现多屏幕共享的解决方法

    这篇文章将来讲述一下腾讯会议如何使用OBS虚拟摄像头来实现多屏幕共享 目录 1 下载地址 2 下载与安装 2 1 OBS Studio的下载与安装 2 2 OBS VirtualCam 虚拟摄像头插件的下载与安装 3 运行与操作 4 小问题
  • 一种基于OpenCV的陪护机器人

    近年来人工智能不断发展 xff0c 从工业领域扩散到多个领域 xff0c 功能逐渐变多 xff0c 从以前的工业机器人到现如今的服务类机器人 xff0c 人工智能在不断提升与完善 本文针对老年人 xff0c 儿童 xff0c 病人等实际的应
  • 操作系统——13.处理机调度的时机、切换与过程、方式

    这篇文章我们继续来学习进程调度的相关知识 目录 1 概述2 2 进程调度的时机 3 进程调度的方式 4 进程的切换与过程 5 小结 1 概述2 首先 xff0c 我们来看一下本节类容的大体框架 xff1a 2 进程调度的时机 进程调度 xf