🌈个人主页:小新_-
🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
🏆所属专栏:操作系统 欢迎订阅,持续更新中~~~
✨让小新带着你快乐的学习吧~✨
目录
一、调度的概念与层次
(一)基本概念
(二)三个层次
1、高级调度(作业调度)
2、中级调度(内存调度)
3、低级调度(进程调度)
(三)三层调度的对比与联系
(四)补充
进程的“挂起态”和七状态模型
【总结】
二、进程调度的时机、切换与过程、方式
(一)时机
1、什么时候需要进程调度
进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。
2、什么时候不能进行进程调度
为什么呢?首先我们得了解俩个概念。
临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。
临界区:访问临界资源的那段代码。
内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)
(二)切换与过程
1、“狭义的调度”与“切换”的区别
“狭义的进程调度”与“进程切换”的区别:
狭义的进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)
进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。
广义的进程调度包含了选择一个进程和进程切换两个步骤。
2、进程切换的过程需要做什么
进程切换的过程主要完成了:
- 对原来运行进程各种数据的保存
- 对新的进程各种数据的恢复
(如:程序计数器、程序状态字、各种数据寄存器等处理机现场信息,这些信息一般保存在进程控制块)
注意:进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。
(三)方式
1、非剥夺调度方式(非抢占式)
非剥夺调度方式,又称非抢占方式。即,只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。
实现简单,系统开销小但是无法及时处理紧急任务,适合于早期的批处理系统
2、剥夺调度方式(抢占式)
剥夺调度方式,又称抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。
可以优先处理更紧急的进程,也可实现让各进程按时间片轮流执行的功能(通过时钟中断)。适合于分时操作系统、实时操作系统
【总结】
三、调度器和闲逛进程
1、调度器/调度进程
②、③由调度程序引起,调度程序决定:
让谁运行?--调度算法
运行多长时间?--时间片大小
调度时机--——什么事件会触发“调度程序”?
- 创建新进程
- 进程退出
- 运行进程阻塞
- I/0中断发生(可能唤醒某些阻塞进程)。
- 非抢占式调度策略,只有运行进程阻塞或退出才触发调度程序工作
- 抢占式调度策略,每个时钟中断或k个时钟中断会触发调度程序工作
2、闲逛进程
调度程序永远的备胎,没有其他就绪进程时,运行闲逛进程(idle)
闲逛进程的特性:
- 优先级最低。
- 可以是0地址指令,占一个完整的指令周期(指令周期末尾例行检查中断)
- 能耗低
四、调度算法的评价指标
(一)CPU利用率
由于早期的CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作
CPU利用率:指CPU“忙碌”的时间占总时间的比例。
Eg:某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒,再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?
(二)系统吞吐量
(三)周转时间
对于计算机的用户来说,他很关心自己的作业从提交到完成花了多少时间。
周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。
它包括四个部分:作业在外存后备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等待进程调度(低级调度)的时间、进程在CPU上执行的时间、进程等待I/0操作完成的时间。后三项在一个作业的整个处理过程中,可能发生多次。
(四)等待时间
计算机的用户希望自己的作业尽可能少的等待处理机
等待时间,指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。
对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待1/0完成的期间其实进程也是在被服务的,所以不计入等待时间。
对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。
一个作业总共需要被CPU服务多久,被I/O设备服务多久一般是确定不变的,因此调度算法其实只会影响作业/进程的等待时间。当然,与前面指标类似,也有“平均等待时间”来评价整体性能。
(五)响应时间
对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。
响应时间,指从用户提交请求到首次产生响应所用的时间。
【总结】
六、调度算法
Tips:
1、算法思想
2、算法规则
3、这种调度算法是用于作业调度还是进程调度?
4、抢占式?非抢占式?
5、是否会导致饥饿?(某进程/作业长期得不到服务)
(一)先来先服务(FCFS)
(二)短作业优先(SJF)
注意几个小细节:
1.如果题目中未特别说明,所提到的“短作业/进程优先算法”默认是非抢占式的
2.很多书上都会说“SIF 调度算法的平均等待时间、平均周转时间最少”严格来说,这个表述是错误的,不严谨的。之前的例子表明,最短剩余时间优先算法得到的平均等待时间、平均周转时间还要更少应该加上一个条件“在所有进程同时可运行时,采用SIF调度算法的平均等待时间、平均周转时间最小”。
或者说“在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少”
如果不加上述前提条件,则应该说“抢占式的短作业/进程优先调度算法(最短剩余时间优先,SRNT算法)的平均等待时间、平均周转时间最少”
3.虽然严格来说,SJF的平均等待时间、平均周转时间并不一定最少,但相比于其他算法(如FCFS),SJF依然可以获得较少的平均等待时间、平均周转时间
如果选择题中遇到“SIF 算法的平均等待时间、平均周转时间最少”的选项,那最好判断其他选项4是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项
(三)高响应比优先算法(HRRN)
【总结】
(四)时间片轮转算法(RR)
(五)优先级调度算法
(六)多级反馈队列调度算法
【总结】
(七)多级队列调度算法
最后,感谢大家的观看!