进程调度
进程调度是操作系统的基本功能,在多道程序系统中,内存中有多个进程,每个进程交替的去使用处理机,而合理的调度是至关重要的。处理机的调度有三种类型,分别是高级调度、中级调度、低级调度,其中低级调度发生的频率最高。
1 调度的类型与准则
1.1 调度类型
(1)高级调度:又称作业调度、宏观调度。
任务:决定将外存上后备队列中的那些作业调入内存。
调度工作决定:
- 接纳多少作业:取决于多道的程度,即内存允许放多少个作业。
- 接纳哪些作业:有调度算法决定。
适用于批处理系统。
(2)中级调度:又称进程调度、微观调度
主要作用:内存和外存对换区之间进行进程对换,以解决内存紧张的问题。
(3)低级调度:又称进程调度、微观调度
任务:决定就绪队列中的哪些进程将获得处理机。
调度方式:非剥夺式和剥夺式
抢占原则:时间片、优先权和进程长短
适用于分时、实时、批处理系统
1.2 进程调度的方式
进程调度方式分为不可剥夺方式和可剥夺方式。
不可剥夺方式: 不可剥夺方式也被称为非抢占方式。采用这种调度方式时,一旦把处理机分配给某个进程,该进程将一直执行下去,直到运行完毕或因某种原因不能运行,才把处理机分配给其它进程,决不允许其它进程强占正在运行进程占有的处理机。简单来说当该进程占用CPU时,不能被别的进程强制掠夺该CPU。
**可剥夺方式:**可剥夺方式也被称为抢占方式。在这种方式下,允许一个进程按照某种原则,抢占其它进程占有的处理机。抢占采用优先权原则的比较多,也就是说,如果一个进程比正在运行进程的优先级高,则它可以抢占处理机而运行。简单来说当该进程占用CPU时,可以被别的进程强制掠夺该CPU。
1.3 进程调度时机
- 进程退出
- 进程阻塞
- 新进程创建
- 中断发生
- 时钟中断
1.4 进程的性能准则
面向用户的准则:
- 响应时间快(响应时间:从用户通过键盘提交请求到首次得到响应的时间)
- 周转时间短(周转时间:作业从提交到完成的时间间隔。)
- 优先权准则
- 截止时间的保证
面向系统的准则:
- 系统吞吐量:单位时间内完成的作业数。
- 处理机利用率
- 各类资源平衡利用
- 公平
周转时间Ti:周转时间=完成时间-到达时间
平均周转时间:平均周转时间=周转时间/进程个数
带权周转时间:带权周转时间=周转时间/服务时间=(等待时间+实际服务时间)/实际服务时间
平均带权周转时间:平均带权周转时间=(周转时间/服务时间)/进程个数
2 调度算法
(1)先来先服务调度算法FCFS
- 算法思想:对于作业调度,从后备作业中选择最先进入该队列的作业,将他们调入内存,为它们分配资源、创建进程,然后放入就绪队列。–对于进程调度,从就绪队列中选择最先进入该队列的进程,分配处理机,使之运行。
- 特点:易于实现–有利用长作业,短作业不满。
(2)短作业(进程)优先调度算法SJF
- 算法思想:短作业优先是从后备队列中选择估计运行时间最短的作业,将它们调入内存。短进程优先是从就绪队列中选择估计运行时间最短的进程,将处理机分配给它,使之执行并一直到完成或因发生某事件而阻塞放弃处理机时,再重新调度。
- 特点:极端情况下,长作业得不到调度。作业或进程的长短只能估计,不准确。完全不考虑紧迫程度,使紧急事件得不到处理。
(3)时间片轮转调度算法RR
- 算法思想:进程按FCFS在就绪队列排队,调度程序把CPU分配给队首进程,令其执行一个时间片,一个时间片执行完毕将进程排在队尾。
- 时间片大小的确定:响应时间:T=用户数目N*时间片q
响应时间T:当N一定,T与q成正比。T若要求快,则q也要小。
就绪队列的进程数N:T一定,q与N成反比。N越多,q要小。
系统的处理能力:保证用户键入的常用命令能在一个时间片内处理完毕。
(4)优先权调度算法
- 算法思想:
从后备队列中选择若干优先权最高的作业,将它们调入内存。
或从就绪队列中选择优先权最高的进程,将处理机分配给它。 - 优先权类型:
静态优先权,确定因素:进程类型、进程对资源的需求、用户要求。
动态优先权,确定因素:等待时间、运行时间。
特点:综合考虑各种情况优先权调度算法
(5)多级反馈队列
- 算法思想:
根据作业的性质和类型不同,将就绪队列再分为若干个子队列,每个进程分属于一个队列。
在多级队列的基础上,不但设多个队列,且为每个队列赋予不同的优先权,第一个队列的优先权最高,第二个队列次之,其余队列的优先权逐个降低。
各个队列中的进程执行时间片大小逐渐增大。
新进程投入第一个队列。
调度从第一个队列进行,仅当第一个队列为空时,才调度第二个队列中的进程。
例题:
假定要在一台处理器上执行下表所示作业,且假定这些作业在时刻0以1、2、3、4、5的顺序到达。说明分别使用FCFS、RR(时间片=1)、SJF、非剥夺式优先级调度算法以及多级队列反馈算法(第i级队列的时间片=2i-1)时,这些作业的执行情况(优先级的高低顺序依次为1到5),针对以上每种调度算法,给出平均周转时间和平均带权周转时间。
作业 | 执行时间 | 优先级 |
---|---|---|
1 | 10 | 3 |
2 | 1 | 1 |
3 | 2 | 3 |
4 | 1 | 4 |
5 | 5 | 2 |
解(1)作业执行情况可以用甘特图来表示。
(2)各个作业对应于各个算法的周转时间和加权周转时间可得:
周转时间Ti:周转时间=完成时间-到达时间
平均周转时间:平均周转时间=周转时间/进程个数
带权周转时间:带权周转时间=周转时间/服务时间=(等待时间+实际服务时间)/实际服务时间
平均带权周转时间:平均带权周转时间=(周转时间/服务时间)/进程个数
所以,FCFS的平均周转时间为13.4,平均加权周转时间为7.26。
RR的平均周转时间为9.2,平均加权周转时间为2.84。
SJF平均周转时间为7,平均加权周转时间为1.74。
非剥夺式优先级调度算法的平均周转时间为12,平均加权周转时间为6.36。