【操作系统】-进程调度算法

七状态模型

 进程调度算法有抢占式和非抢占式,对调度算法的评价准则有很多,其中包括周转时间(作业成时间-作业达时间【王道】)带权周转时间(周转时间/实际运行时间)等

1.先来先服务FCFS-first come fisrt serve-(作业/进程)

优点:公平,简单,不会饥饿,非抢占

缺点:对长作业有利,对短作业不利(对cpu繁忙作业有利,对io繁忙作业不利)

举例:比如说排队买奶茶,我只买一杯奶茶就走,我原本高高兴兴以为排个十一二十分钟就可以了吧,结果!我前面一个人他要买100杯!这对我是不是非常不利呢?

2.短作业优先SJF-short job first-(作业/进程)

优点:抢占式的短作业优先调度算法平均等待时间和平均周转时间最小

缺点:对短作业有利,长作业不利,饥饿,有抢占式(最短剩余时间优先)也有非抢占式。作业的长短只是根据用户所提供的执行时间而定的,用户会有意无意缩短时间。

3.高响应比优先HRRN-highest response ratio next(作业/进程)

响应比:(等待时间+要求服务时间)/要求服务时间

优点:非抢占,综合考虑FCFS&SJF,不会饥饿

缺点:等待时间相同时,要求服务时间越短,响应比越高,有利于短作业

4.优先级调度算法(作业/进程)

特点:抢占/非抢占,静态优先级/动态优先级,饥饿,实时操作系统

优先级大小:系统进程>用户进程;前台进程>后台进程;i/o繁忙型进程>cpu繁忙型进程(注:io设备更慢,让他先走一步)cpu繁忙型等价于长作业。

5.时间片轮转RR-round robin(进程)

特点:抢占,不饥饿,响应快,分时操作系统

时间片:太大:退化为先来先服务;太小:频繁切换进程导致开销增大

6.多级反馈队列(进程)

特点:时间片轮转和优先级调度的结合,抢占,可能饥饿

优点:都挺好的,不必先估计进程的执行时间

缺点:只有上层队列全部为空的时候,当前队列才有可能被执行,所以可能导致饥饿

多级队列

各级队列从上到下优先级递减,时间片长度递增,最后一级队列中使用时间片轮转,其他队列使用先来先服务 。新进程放在第一级队列的末尾,当前队列时间片用完时,掉入下一级优先队列。

Q:为什么前n-1个队列是先来先服务,最后一级是时间片轮转?

每个进程在每级队列中都被分配到一个相等长度的时间片,大家的时间片按照先来先到的准则在队列中排队,时间片用完该进程就会被剥夺处理机,掉入下一级队列,而不是继续排队等待轮流分配的处理机,所以不是时间片轮转。而最后一级队列它已经没办法再往下掉了,只能轮流分配处理机,所以是时间片轮转。

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/114602158