时间片轮转与高响应比优先算法
轮转调度算法
轮转法的基本原理
在轮转(RR)法中,系统根据FCFS策略,将所有的就绪队列排成一个就绪队列,并可设置一定时间间隔(如30ms)产生一次终断,激活系统中的进程调度程序,完成一次调度,将CPU分配给队首进程,另其执行。当该进程的时间片耗尽或运行完毕时,系统再次将CPU分配给新的队首进程(或新到达的紧迫进程),由此,可保证就绪队列中的所有进程在一个确定的时间片内,都能获得一次CPU执行。
进程切换时机
在RR调度算法中,应在何事进行进程的切换,可分为两种情况:
若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将他从就绪队列中删除,再调度就绪队列中队首的进程运行,并启动一个新的时间片。
在一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序就把他送往就绪队列的尾部。
时间片大小确定
如果选择的时间片小,将有利于短作业,因为它能在该时间片内完成。但时间片小,意味着会进行频繁的进程调度和进程上下文的切换,无疑会增加系统的开销。反之,若时间片选择得太长,且为使每个进程都能在一个时间片内完成。RR算法便会退化成FCFS算法,无法满足短作业和交互式用户的需求。 一个较为可取的时间片大小是略大于一次典型的交互所需要的时间,使大多数交互式进程能在一个时间片内完成
高响应比优先调度算法
高响应比优先调度算法为每一个作业引入一个动态优先级,即优先级是可以改变的,令他随等待时间延长而增加,这将使长作业的优先级在等待期间不断的增加,等到足够的时间后,必然会有机会获得处理机。该优先级变化规律为:
由于等待时间与服务时间之和就是系统对该作业的响应时间,故该优先级又相当于响应比Rp。优先级又可表示为:
由上式可以看出
- 如果作业的等待时间相同,则要求服务的时间愈短,其优先级愈高,因而类似于SJF算法,有利于短作业。
- 当要求服务的的时间相同时,作业的优先级又取决于其等待时间,因而又类似于FCFS算法。
- 对于长作业的优先级,可以随等待时间的增加而增大,当其等待时间足够长时,也可获得处理机。
- 在每次进行调度前,都需要进行响应比的计算,显然会增加系统开销。
两种算法代码实现如下:
|
|