一、时间片轮转调度算法
1、算法思想
公平地、轮流地为各个进程服务,让每个进程在一定时间间隔内都可以得到响应。
2、算法规则
按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片,若进程未在一个时间片内执行完,则会剥夺处理机,将进程重新放到就绪队列队尾重新排队。
3、用于作业/进程调度
用于进程调度
4、是否可抢占
抢占式算法
5、是否会导致饥饿
不会
6、优缺点
优点:公平,响应快,适用于分时操作系统。
缺点:由于高频率的进程切换,因此有一定的开销,不区分任务的紧急程度。
7、例题
例:各进程到达就绪队列的时间、需要运行时间如下表,使用时间片轮转调度算法,分析时间片大小是2时的进程运行情况。
进程 到达时间 运行时间 P1 0 5 P2 2 4 P3 4 1 P4 5 6 答:
0时刻(P1运行):只有P1到达就绪对列,让P1运行一个时间片2.。
2时刻(P2运行):P2到达就绪对列,P1被剥夺CPU,放到队尾,P2运行。
4时刻(P1运行):P3到达,先插到就绪队列队尾,紧接着,P2也插到队尾。
5时刻(P1运行):P4到达,插到就绪队尾。
6时刻(P3运行):P1时间片用完,重新回到就绪队尾。
7时刻(P2运行):P3主动放弃CPU。
9时刻(P4运行):P2时间片用完,并刚好运行完。
11时刻(P1运行):P4时间片用完,回到就绪队尾。
12时刻(P4运行):P1运行完,主动放弃CPU,就绪队列只剩P4。
二、优先级调度算法
1、算法思想
根据任务的紧急程度来决定处理顺序。
2、算法规则
每个 作业/进程 有各自的优先级,调度时选择优先级最高的 作业/进程。
3、用于作业/进程调度
可用于作业调度,也可用于进程调度,还可以用于I/O调度。
4、是否可抢占
抢占式、非抢占式都有。
5、是否会导致饥饿
会
6、优缺点
优点:用优先级区分紧急程度、重要程度,适用于实时操作系统,可灵活调整对各作业/进程的偏好程度。
缺点:若源源不断的高优先级到来,会导致饥饿。
7、例题
例:各进程到达就绪队列的时间、需要运行时间、进程优先级如下表。使用非抢占式的优先级调度算法,分析进程运行情况。
进程 到达时间 运行时间 优先级 P1 0 7 1 P2 2 4 2 P3 4 1 3 P4 5 4 2 非抢占式
答:
0时刻(P1运行):只有P1到达。
7时刻(P3运行):P1运行完主动放弃处理机,其余进程都已到达,P3优先级最高。
8时刻(P2运行):P3完成,P2、P4优先级相同,由于P2先到达,P2优先。
12时刻(P4):P2完成,只剩P4。
16时刻:所有进程结束。
抢占式
答:
0时刻(P1运行):P1到达。
2时刻(P2运行):P2到达,优先级更高。
4时刻(P3运行):P3到达,优先级更高。
5时刻(P2运行):P3完成,主动释放,P4到达,由于P2更先进入就绪队列,P2上。
7时刻(P4运行):只剩P1、P4,P4优先级高。
11时刻(P1运行):P4完成,P1上。
注意:优先级未必只有一个,可以按照不同优先级来组织队列,高优先级在队头。
如何合理设置各进程优先级:
系统进程优先级高于用户进程
前台进程优先级高于后台进程
操作系统更偏好I/O型进程
三、多级反馈队列调度算法
1、算法思想
对其他调度算法的折中权衡。
2、算法规则
①设置多级就绪队列,各级队列优先级从高到低,时间片从小到大。
②新进程到达时先进入第1级队列,按FCFS原则排队等待被分配时间片,若用完时间片进程未结束,则进程进入下一级队列队尾。如果此时已经是在最下级队列,则重新放回该队列队尾。
③只有第K级队列为空时,才会为k+1级队头的进程分配时间片。
3、用于作业/进程调度
进程调度
4、是否可抢占
抢占式
5、是否会导致饥饿
会
6、优缺点
对各进程公平,每个新到达的进程都可以很快得到响应,短进程只需较少的时间就可完成,不必实现估计进程的运行时间,可灵活调整对各进程的偏好程度。
7、例题
例:各进程到达就绪队列的时间、需要的运行时间如下表,使用多级反馈队列调度算法,分析各进程运行的过程。
进程 到达时间 运行时间 P1 0 8 P2 1 4 P3 5 1 答:
P1先到达,到第1级队列,使用1个时间片,然后进入下一个队列队尾。
P2到达,先到第1级队列,使用1个时间片,进入到下一队列队尾。
P1,在第2级队列,使用2个时间片,然后进入下一个队列队尾。
P2,在第2级队列,使用1个时间片后,P3到达第1级队列,P2被抢占,P2重新回到第2级队列队尾。
P3,在第1级队列,使用1个时间片,结束。
P2,在第2级队列,使用1个时间片,结束。
P1,在第3级队列,使用4个时间片,然后重新回到第3级队列队尾,重新调度。
上面三种调度算法适用于交互式系统。