2-2进程管理-处理机调度

news2024/9/25 12:42:45

文章目录

  • 一.调度的层次
  • 二.进程调度的时机、切换与过程、调度方式
  • 三.调度器、闲逛进程
  • 四.调度算法的评价指标
  • 五.调度算法
    • (一)先来先服务SCFS
    • (二)短作业优先算法SJF
    • (三)高响应比优先HRRN
    • (四)时间片轮转调度算法RR
    • (五)优先级调度算法
    • (六)多级反馈队列调度算法
    • (七)多级队列调度

一.调度的层次

1.高级调度/作业调度:频率低

  • 无→创建态→就绪态
  • 外存→内存,面向作业

按照某种规则,从后备队列中选择合适的作业将其调入内存,并为其创建进程

2.中级调度/内存调度:提高内存利用率和系统吞吐量

  • 挂起态→就绪态(阻塞挂起→阻塞态)
  • 外存→内存(阻塞挂起在外存,阻塞态在内存),面向进程

按照某种规则,从挂起队列中选择合适的进程将其数据调回内存,并修改其状态为就绪态,挂在就绪队列上等待

  • 挂起态:将那些暂时不能运行的进程调至外存等待,把这时的进程状态称为挂起态。“挂起”和“阻塞”:两种状态都是暂时不能获得CPU的服务,但挂起态是将进程映像调到外存去了,而阻塞态下进程映像还在内存中。

在这里插入图片描述

3.低级调度/进程调度:高频,最基本

  • 就绪态→运行态
  • 内存→CPU

按照某种规则从就绪队列中选择一个进程为其分配处理机

总结
在这里插入图片描述

二.进程调度的时机、切换与过程、调度方式

1.需要进行进程调度与切换的情况:
(1)当前运行的进程主动放弃处理机
进程正常终止、运行过程中发生异常而终止、进程主动请求阻塞(如等待I/O)
(2)当前运行的进程被动放弃处理机
分给进程的时间片用完、有更紧急的事需要处理(如I/O中断)、有更高优先级的进程进入就绪队列

2.不能进行进程调度与切换的情况
(1)在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换。
(2)进程在操作系统内核程序临界区

  • 临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。
  • 临界区
    临界区指的是一个访问共用资源的程序片段(访问临界区的那段代码),而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待

(3)在原子操作过程中(原语)。原子操作不可中断,要一气呵成(如修改PCB中进程状态标志,并把PCB放到相应队列)

3.进程调度的方式
(1)非剥夺调度方式/非抢占方式:只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。实现简单,系统开销小但是无法及时处理紧急任务,适合于早期的批处理系统。
(2)剥夺调度方式/抢占方式:当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。可以优先处理更紧急的进程,也可实现让各进程按时间片轮流执行的功能(通过时钟中断)。适合于分时操作系统、实时操作系统

  • 进程调度和进程切换
    (1)(狭义的)进程调度:从就绪队列中选择一个要运行的进程
    (2)进程切换:一个进程让出处理机,由另一个进程占用处理机的过程(完成了对原来运行进程各种数据的保存、对新的进程各种数据的恢复)

总结:
1.一个线程是否可被时钟中断抢占?如果是,请说明在什么情况下可被抢占(被动放弃)
是。分给进程的时间片用完、有更紧急的事情需要处理(如I/O中断)、有更高优先级的进程进入就绪队列

2.在非抢占调度方式中,什么情况下正在运行的进程会放弃CPU?(主动放弃)
进程正常终止、运行过程中发生异常而终止、主动阻塞(如等待I/O)

3.什么时候不能进行进程调度
在处理中断的过程中、进程在操作系统内核程序临界区中、原子操作过程中(原语)

三.调度器、闲逛进程

1.什么事件会触发“调度程序”?
创建新进程、进程退出、运行进程阻塞、I/O中断发生(可能唤醒某些阻塞进程)。非抢占式调度策略,只有运行进程阻塞或退出才触发调度程序工作;抢占式调度策略,每个时钟中断或k个时钟中断会触发调度程序工作
2.不支持内核级线程的操作系统,调度程序的处理对象是进程;支持内核级线程的操作系统,调度程序的处理对象是内核线程
3.闲逛进程:没有其他就绪进程时,运行闲逛进程。
特性:优先级最低、可以是0地址指令,占一个完整的指令周期(指令周期末尾例行检查中断)、能耗低

四.调度算法的评价指标

1.CUP利用率:指CPU“忙碌”的时间占总时间的比例。
CUP利用率=忙碌时间/总时间

2.系统吞吐量:单位时间内完成作业的数量
系统吞吐量=总完成作业数/总时间

3.周转时间:从作业被提交给系统开始,到作业完成为止的这段时间间隔。包括作业在外存后备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等待进程调度(低级调度)的时间(就绪态)、进程在CPU上执行的时间(运行态)、进程等待I/O操作完成的时间(阻塞态)

作业周转时间=作业完成时间-作业提交时间

平均周转时间=各作业周转时间之和/作业数

带权周转时间=作业周转时间/作业实际运行的时间

平均带权周转时间=各作业带权周转时间之和/作业数

  • 带权周转时间和周转时间越小越好

4.等待时间:指进程/作业处于等待处理机状态时间之和。等待时间越长,用户满意度越低。

等待时间=周转时间-运行时间-I/O操作时间=(完成时间-到达时间)-运行时间-I/O操作时间

平均等待时间=各作业等待时间之和/作业数

  • 对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。
  • 对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。

5.响应时间:从用户提交请求到首次产生响应所用的时间。

五.调度算法

(一)先来先服务SCFS

先来的先分配处理机,不会导致饥饿,非抢占式的算法

针对:作业调度、进程调度
优点:算法简单、对长作业有利、有利于CPU繁忙型作业(计算型)
缺点:效率低、不利于短作业、不利于I/O繁忙型作业

(二)短作业优先算法SJF

优先选择当前已到达的且预计运行时间最短的进程,会产生“饥饿”现象。SJF(短作业优先)和SPF(短进程优先)是非抢占式的算法。但是也有抢占式的版本——最短剩余时间优先算法(SRTN)

针对:进程调度。(短进程优先用SPF)
优点:平均等待时间、平均周转时间较短(SRTN最短)
缺点:对长作业不利,造成饥饿现象,没有考虑作业的紧迫性,用户可能可以缩短作业预估时间,使得无法做到短作业优先

(三)高响应比优先HRRN

不会导致饥饿,非抢占式的算法
响应比=(等待时间+要求服务时间)/要求服务时间=1+等待时间/要求服务时间

针对:作业调度、进程调度

①等待时间相同情况下,要求服务时间越短响应比越大,有利于短作业进程
②要求服务时间相同,作业响应比由其等待时间决定,等待时间越长响应比越高,实现先来先服务
③对于长作业,作业的响应比可以随等待时间的增加而提高,等待时间足够长时,其响应比可以升到很高,从而获得处理机

以上三类算法一般适用于早期批处理系统

(四)时间片轮转调度算法RR

不会导致饥饿,抢占式算法。
使用与分时系统,使用时间片,就绪进程按照到达先后排成队列,依次在时间片内占用处理机,时间片到达时就释放处理机。时间片选择很重要,过大就变成了先来先服务,过短又变成了短作业优先。

针对:进程调度。进程才能被分配时间片

时间片影响因素:系统响应时间,就绪队列中的进程数目和系统的处理能力

注:①A时间片用完,若进程A仍未执行完,此时有新进程B到达。新进程B进入就绪队列,A再进就绪队列
②若时间片为2,C只用1就完成了运行,则C主动让出处理机,就绪队列的队头元素上处理机

优点:公平、响应快,适用于分时操作系统;
缺点:由于高频率的进程切换,因此有一定开销;不区分任务的紧急程度。

(五)优先级调度算法

产生“饥饿”现象,有抢占式的,也有非抢占式的

分类:
①剥夺型:立即停止当前运行进程,将处理机分配给更高优先级进程
②非剥夺型:等待当前进程运行完成,然后将处理机分配给更高优先级进程

优先级分类:
静态优先级:进程创建后无法对优先级进行修改
动态优先级:可以根据进程运行状态,对进程优先级进行动态调整

优先级设置原则:
系统进程>用户进程
交互型进程>非交互型进程
I/O进程>计算型进程(CPU繁忙型)
前台进程>后台进程

针对:作业调度、进程调度

优点:用优先级区分紧急程度、重要程度,适用于实时操作系统。可灵活地调整对各种作业/进程的偏好程度。
缺点:若源源不断地有高优先级进程到来,则可能导致饥饿

(六)多级反馈队列调度算法

抢占式算法,可能饥饿

①设置多个就绪队列,为每个队列设置不同的优先级,优先级依次递减。
②每个队列中的时间片各不相同,时间片依次递增。
③每个队列按照先来先服务原则进行进程排队,若规定时间片内没有完成,就将进程放入下一级队列。
④只有到高级队列为空的时候,低等级队列才能开始调度。

优点:
①终端型作业用户:短作业优先
②短批处理作业用户:周转时间较短
③长批处理作业用户:前面几个队列得到部分执行,不会长期得不到处理

针对:进程调度

  • 为什么多级反馈队列调度算法能较好地满足各类用户的需要?
    多级反馈队列调度算法能较好地满足各种类型用户的需要。对终端型用户而言,由于他们提交的作业大多属于交互型作业,作业通常比较短小,系统只要能使这些作业在第1级队列所规定的时间片内完成,便可使终端型作业用户感到满意;对于短批处理作业用户而言,它们的作业开始时像终端型作业一样,若仅在第1级队列中执行一个时间片即可完成,便可获得与终端型作业一样的响应时间,对于稍长的作业,通常也只需要在第2级队列和第3级队列中各执行一个时间片即可完成,其周转时间仍然较短;对于长批处理作业用户而言,它的长作业将依次在第1,2,…n级队列中运行,然后按时间片轮转方式运行,用户不用担心其作业长期得不到处理。

以上三类算法适用于交互式系统

(七)多级队列调度

队列之间可采取固定优先级,或时间片划分
①固定优先级:高优先级空时低优先级进程才能被调度
②时间片划分:如三个队列分配时间50%、40%、10%
③各队列可采用不同的调度策略,如:系统进程队列采用优先级调度,交互式队列采用RR,批处理队列采用FCFS

在这里插入图片描述

  • 为什么要进行处理机调度?
    若没有处理机调度,意味着要等到当前运行的进程执行完成后,下一个进程才能执行,而实际情况中,进程时常需要等待一些外部设备的输入,而外部设备的速度与处理机相比是非常缓慢的,若让处理机总是等待外部设备,则对处理机的资源是极大的浪费,从而提高处理机的利用率。用一句话说就是为了合理地处理计算机的软/硬件资源。

  • 调度算法有哪几种?结合第1章学习的分时操作系统和实时操作系统,思考有没有哪种调度算法比较适合这两种操作系统的。
    (1)先来先服务算法、短作业优先算法、优先级调度算法、高响应比优先算法、时间片轮转调度算法、多级反馈队列调度算法
    (2)先来先服务算法和短作业优先算法无法保证及时的接收和处理问题,因此无法保证在规定时间内响应每个用户的需求,也同样无法达到实时操作系统的及时性要求。优先级调度算法按照任务的优先级进行调度,对于更紧急的任务给予更高的优先级,适合实时操作系统
    (3)高响应比优先调度算法、时间片轮转调度算法、多级反馈队列调度算法都能保证每个任务在一定时间内分配到时间片,并轮流占用CPU,适合分时操作系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cas6.6关于redis连接问题的一次记录,主要问题 1远程主机强迫关闭了一个现有的连接,主要问题2ERR unknown command `HELLO`

项目背景: 公司要求用cas单点登录,这个cas需要引入redis当做ticket缓存,但是出现连接不上的问题由于用redismanager可视化软件看了是可以连接的,进行了查询是redis配置文件中需要配置参数问题截图如下 问题输出如下 2023-01-04…

192:vue+openlayers: 选择feature,弹窗操作,删除所选feature

第192个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中使用select来选择feature元素,选择的过程中弹窗出现删除和关闭按钮,删除的内容是selected的feature,关闭的是功能浮窗。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果Ope…

《设计模式》模板方法模式

《设计模式》模板方法模式定义: 模板方法模式又叫模板模式,在一个抽象类中公开定义了执行它的方法的模板,子类可以根据需要重写方法实现,但是调用将按照抽象类中定义的方式进行。模板方法模式相当于定义了一个操作中算法的骨架&a…

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出 目录回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料预测效果 基本介绍 MATLAB实现CNN-GRU卷积门控循环单元多输入多输出,运行环境Matlab2020及以上…

【国科大模式识别】第三次作业

【题目一】现有四个来自于两个类别的二维空间中的样本, 其中第一类的两个样本为 (1,4)T(1,4)^T(1,4)T 和 (2,3)T(2,3)^T(2,3)T, 第二类的两个样本为 (4,1)T(4,1)^T(4,1)T 和 (3,2)T(3,2)^T(3,2)T 。这里, 上标 TTT 表示向量转置。若采用规范化增广样本表示形式, 并假设初始的权…

权限问题的理解——Linux

这里是目录标题一、重定向二、 学Linux的意义三、shell命令的运行原理四、Linux权限管理1.Linux中具体用户的分类五、Linux文件相关的权限概念文件类型文件的权限文件的权限操作去掉权限加上权限八进制文件权限操作更改文件的拥有者和所属组六、目录的权限七、默认权限权限掩码…

树莓派项目归档

Flask Flask登录注册界面美化 Flask 修改路由 Flask 创建404json返回 返回虚拟温湿度 Flask-移植开发环境到VSCode-手机局域网访问测试 Flask AJAX 获取数据 Flask 将项目从win部署到树莓派 添加监控窗口 Flask 编写shell脚本快速启动服务 树莓派 树莓派4B Ubuntu MAT…

leetcode螺旋矩阵总结

螺旋矩阵题目: leetcode54,59,885,2326 leetcode54 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 输入:matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[…

MSTP技术中引入的必要性

目前,城域光传送网大量存在的是传统的SONET/SDH环网和简单的MSTP网络,对带宽的指配基本上是静态的,无法适应大量的突发性数据业务,需要大量的人工操作和维护,耗时耗力、容易出错。为了改变现状,人们不断在传…

第二章 Flink 环境部署

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、Flink架构 Flink 是一个分布式系统,需要有效分配和管理计算资源…

python-turtle画图

认识TurtleTurtle是一个渲染器基于底层图形编程结构(API)构建,主要用于场景的构建以及3D物体的绘制(3D游戏、虚拟场景等)Turtle是一个窗体程序Turtle是Python语言中的一个很流行的绘制图像的函数库,想象一个小海龟在一个横轴为x,纵轴为y的坐标…

时序数据库 TDengine 携手北京科技大学设计研究院,助力冶金工业智慧化

北京科技大学设计研究院有限公司作为北京科技大学全资产业化技术推广机构,从 2013 年开始在冶金、钢铁行业进行业务系统开发和实施,围绕先进材料、绿色低碳和智能制造不断深耕细作,持续创新。其拥有高效轧制与智能制造国家工程研究中心、国家…

DPDK工作原理和环境搭建

DPDK工作原理DPDK环境搭建编译DPDKDPDK工作原理DPDK实践之处理UDP数据总结DPDK环境搭建 工具准备:VMware、ubuntu16.04。 (1)VMware添加两个网卡。桥接网卡作为 DPDK 运行的网卡,NAT 网卡作为 ssh 连接的网卡。 (2&…

后台交互—springboot+mybatis整合小程序(源码演示)

后台准备pom.xml<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM…

【案例实战】SpringBoot整合GRPC微服务远程通信

1.什么是GRPC GRPC是RPC框架中的一种&#xff0c;是一个高性能&#xff0c;开源和通用的RPC框架&#xff0c;基于Protobuf序列化协议开发&#xff0c;且支持众多开发语言。 面向服务端和协议端&#xff0c;基于http/2设计&#xff0c;带来诸如双向流&#xff0c;流控&#xff…

足球视频AI(三)——YOLOV7目标检测自训练模型

一、基础概念 YoloV7提供的yolov7-tiny.onnx 对于图像中包含较大尺寸的足球检测准确率高。 但在实际应用中&#xff0c;足球视频中的足球非常小&#xff0c;默认的模型难于满足实际的足球检测需求。 1.1 识别目标 1&#xff09;固定机位的视频中足球的逐帧识别 1.2 实现思…

邮箱2023系统

邮箱2023系统 前言 VMMail作为一款开源的邮件系统&#xff0c;目前已经发布到了10.0版本。 该版本在 GitHub上是免费的&#xff0c;且代码也是开源的&#xff0c;所以该程序不会对 GitHub上的所有用户造成任何影响。 由于 VMMail开发时采用了开源代码&#xff0c;并在 GitHub上…

区块链之bolt数据库持久化与基本功能完善

文章目录bolt数据库安装使用bolt进行持久化存储bolt持久化的基本步骤创世区块的持久化新增区块的持久化完善区块链基本功能创世区块创建增加区块遍历区块链链接&#xff1a; 区块链项目github地址项目目前进度&#xff1a;bolt数据库安装 bolt数据库介绍&#xff1a; bolt数据…

Vue3过渡动画实现

文章目录P14Vue3过渡&动画实现过渡动画的使用过渡CSS动画效果同时设置过渡和动画mode和appearanimate.cssgsapgsap实现数字变化认识列表的过渡列表过渡的移动动画列表的交错过渡案例P14Vue3过渡&动画实现 过渡动画的使用 <template><button click"isShow…

进入新组织项目经理如何快速提升自己的影响力?

我们在工作中&#xff0c;经常以“对事不对人”来体现他们的专业性&#xff0c;但是这点并不符合人性。更多时候对人不对事&#xff0c;反倒能提高问题的解决能力。项目经理会发现&#xff0c;很多事情的推进&#xff0c;都建立在和对方的信任的基础上&#xff0c;所以先成为对…