进程调度----FCFS,SJF,优先级调度,RR

tech2023-05-28  58

1,FCFS

先服务先调度

FCFS策略可以通过FIFO队列容易的实现。当一个进程进入就绪队列时,它的PCB会被连接到队列尾部。当CPU空闲时,它会分配给位于队列头部的进程,并且这个运行进程从队列中移去。

缺点:平均等待时间往往很长。

假设有这么三个进程P1,P2,P3按顺序到达,并且按FCFS顺序进行处理

进程执行时间P124P26P36

平均等待时间=((0-0)+(24-0)+(30-0))/3=18ms

1.1,护航效果

考虑动态情况下FCFS调度性能:

假设有一个CPU密集型进程和多个I/O密集型进程,随着进程在系统中的运行,可能会有这样的情况:

CPU密集型进程得到CPU并使用它,这段时间里,其他I/O进程处理完它们的I/O,转到就绪队列里,等待CPU;当这些I/O密集型进程在等待的时候,I/O设备空闲当CPU密集型进程完成CPU的执行之后,转至I/O执行进程;而此时I/O密集型进程因为具有很短的CPU执行,很快就会回到I/O队列,此时CPU空闲之后,CPU密集型进程会移回到就绪队列并拿到CPU的执行权,I/O密集型进程完成了I/O工作之后,会在就绪队列中等待CPU的释放。由于所有其他进程都等待一个大进程释放CPU,故称之为护航效果

2,SJF

最短作业优先调度

这个算法将每个进程与其啊次CPU执行的长度关联起来。当CPU变为空闲的时候,它会被赋给具有最短CPU执行的进程!

SJF有抢占式的和非抢占式的

假设有这么四个进程

进程到达时间执行时间P108P214P329P435

非抢占式的:

0ms时,P1进程进来了,P1拿到CPU的执行权,当P1运行完之后,已经是4ms了;此时P2,P3,P4均已到达,此时会根据CPU执行时间进行调度!所以进程的执行顺序是P1-P2-P4-P3

抢占式的:

第0ms的时候,P1到达并拿到CPU的执行权;

第1ms的时候,P2到达,此时P1的剩余执行时间还有7ms,而P2的执行时间只需要4ms,所以调度程序会让P2拿到CPU的执行权;

第2ms的时候,P3到达了,此时P1,P2,P3的所需执行时间分别为:7ms,2ms,9ms,所以会让P2继续执行;

第3ms的时候,P4到达了,此时P1,P2,P3,P4所需的执行时间分别为:7ms,1ms,9ms,5ms,所以后续的执行顺序应该是:P2-P4-P1-P3

这样就是图中所示的信息!

值得一提的是:抢占式SJF调度有时被称为最短剩余时间优先调度

3,优先级调度

SJF算法是通用优先级调度算法的一个特例

进程会被分配到一个优先级,但值得一提的是,对于0优先级表示最高还是最低并没有定论!

有的系统用低数字表示高优先级,有的则用来表示低优先级!

3.1,优先级的定义

优先级的定义可以分为外部的和内部的

内部的:采用一些测量数据来计算进程优先级:时限,内存要求,打开文件数量,平均I/O执行时间与CPU平均执行之比;这些都可以用于计算优先级外部的:进程重要性,用于支付使用那个计算机的费用类型和数量,赞助部门,其他因素等;也可以用来计算优先级

3.2,问题

优先级调度算法的一个主要问题就是:无穷阻塞/饥饿

极端情况下优先级高的进程可以让优先级低的进程一直等待;

通俗点说就是:假如有一个优先级为0(这里假设数字越低,优先级越低)的进程在等待CPU执行,每当快轮到它时,都会有一个更高优先级的进程进来,还不止一次,这样它就永远都得不到运行!

3.3,解决方法

低优先级进程的无穷等待问题的解决方案之一就是老化。

老化可以逐渐增加在系统中等待很久的进程的优先级,例如可以每个一段时间就提高进程的优先级数字(这里假设数字越低,优先级越低)

3.4,示例

这里假设数字越低,优先级越高

进程执行时间优先级P1101P213P322

执行的顺序:

4,RR

轮转调度算法

轮转调度算法就是专门为分时系统设计的,类似于FCFS调度,但是增加了抢占以切换进程。

将一个较小时间单元定义为时间量或者时间片,时间片的大小通常为10~100ms,就绪队列作为循环队列,CPU调度程序循环整个就绪队列,为每个进程分配不超过一个时间片的CPU

在轮转时有两种情况

进程CPU剩余执行时间>时间片 执行完一个时间片的时间后,定时器会中断,交由下一个进程执行 进程CPU剩余执行时间<时间片 进程执行完成之后,会释放CPU,交由下一个进程执行

4.1,示例

进程到达时间执行时间P10100P2450P3675

假设一个时间片是25ms

值得一提的是:时间片的大小不能一味的以为越大越好!

过大的话:极端情况下RR算法与FCFS算法一样

过小的话:会导致频繁的上下文切换,导致时间的浪费!

最新回复(0)