目录
2.2_1_处理机调度的概念、层次
知识总览:
2.2_1_1调度的基本概念
2.2_1_2.1调度的三个层次--高级调度
2.2_1_2.2调度的三个层次-- 中级调度
2.2_1_2.3调度的三个层次--低级调度
2.2_1_3 三层调度的联系和对比
2.2_1_4进程的挂起态与七状态模型
暂时调到外存等待的进程状态为挂起状态(挂起态,suspend)
挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态
五状态模型->七状态模型:
本节小结:
2.2_2_进程调度的时机、切换与过程、方式
2.2_2_1 进程调度的时机
进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。
但,并不是随时都可就行进程调度与切换,以下情况不能进行进程调度与切换的情况:
- 在处理机中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行经常切换。
- 进程在操作系统内核程序临界区中
- 在原子操作过程中(原语)。原子操作不可中断,要一气呵成(如之前讲过的修改PCB中进程状态标志,并把PCB放到相应队列)
进程在操作系统内核程序临界区中不能进行调度与切换
下面,我们来看一道2012年联考真题---进程处于临界区时不能进行处理机调度(X)
(但,普通临界区访问的临界资源不会直接影响操作系统内核的管理工作。因此在访问普通临界区时可以进行调度与切换)
2.2_2_2进程调度的方式
2.2_2_3进程的切换与过程
本节小结:
2.2_3_调度算法的评价指标
2.2_3_1 CPU利用率
2.2_3_2 系统吞吐量
2.2_3_3 周转时间
![](https://img-blog.csdnimg.cn/141bfb88e15745b898e7cea761c24220.png)
2.2_3_4等待时间
2.2_3_5 响应时间
对于计算机用户来说,会希望自己的提交的请求(比如通过键盘输入了一个调试命令)尽早地开始被系统服务、回应。
响应时间,指从用户提交请求到首次产生响应所用的时间。
本节小结:
2.2_4_FCFS、SJF、HRRN调度算法
2.2_4_1先来先服务FCFS
2.2_4_2短作业优先
2.2_4_2.1非抢占式
2.2_4_2.2抢占式
注意几个小细节:
- 如果题目中未特别说明,所提到的“短作业/进程优先算法”默认是非抢占式的
- 很多书上都会说“SJF调度算法的平均等待时间、平均周转时间最少”(严格来说,这个表述是错误的,不严谨的。之前的例子已经表明,最短剩余时间优先算法得到的平均等待时间、平均周转时间还要更少; 应该加上一个条件“在所谓进程同时可运行时,采用SJF调度算法的平均等待时间、平均周转时间最少”; 或者说“在所有进程都几乎同时到达时,采用SJF调度算法的平均等待时间、平均周转时间最少”; 如果不加上述前提条件,则应该说“抢占式的短作业/进程优先调度算法(最短剩余时间优先,SRNT算法)的平均等待时间、平均周转时间最少”)
- 虽然严格来说,SJF的平均等待时间、平均周转时间并不一定最少,但相比于其他算法(如FCFS),SJF依然可以获得较少的平均等待时间、平均周转时间
- 如果选择题中遇到’SJF算法的平均等待时间、平均周转时间最少“的选项,那组好判断一下其他选项是不是有很明显的错误,如果没有更合适的选项,那也应该选择该选项
对FCFS和SJF 两种算法的思考:
- FCFS算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题
- SJF算法是选择一个执行时间最短的作业为其服务。但是又完全不考虑各个作业的等待问题,因此导致了对对长作业不友好的问题,甚至还会造成饥饿问题
那么能不能设计一个算法,即考虑到各个作业的等待时间,也能兼顾运行时间呢?
高响应比优先算法
2.2_4_3高响应比优先
本节小结:
2.2_5_调度算法:时间片轮换、优先级、多级反馈队列
2.2_5_1时间片轮转
时间片大小为5的情况:
若按照先来先服务调度算法:
一般来说,设计时间片时要让切换进程的开销占比不超过1%
2.2_5_2优先级调度算法
2.2_5_2.1非抢占式:
2.2_5_2.2抢占式:
优先级调度算法 补充:
就绪队列未必只有一个,可以按照不同优先级来组织。另外,也可以把优先级高的进程排在更靠近对头的位置
根据优先级是否可以动态改变,可以将优先级分为静态优先级和动态优先级两种
静态优先级:创建进程时确定,之后一直不变
动态优先级:创建进程时有一个初始值,之后会根据情况动态地调整优先级
2.2_5_3多级反馈队列调度算法
·
本节小结: