进程调度算法小结

进程调度算法,说白了在有限的CPU资源下,如何充分的利用CPU 高效的为各个进程服务。

 

 

村里新开了一个网吧        类比一台机器

网吧里有一台可供上网的电脑       类比单核CPU

来了一群小学生兴高采烈的想上网      类比一堆进程等着CPU来执行

网吧的老板                          类比操作系统的进程调度器

OK 到这里,一堆进程抢着一个单核CPU执行 被我们类比成了一群小学生去网吧抢一台电脑上网。

 

 

非抢占式时代

(任何一个小学生上机了,其他人必须等他玩够了才能上,他没玩够都只能在旁边看着)

 

1.先来先服务算法

很好理解了,按照小学生们进入网吧的顺序排队,一个一个的玩,上一个玩够了 下一个才能上。

问题:来的晚的小明同学就很气,明明自己就想上网看一下拼嘻嘻买的练习册邮到哪了,五分钟都用不上的事,硬是要等前面的张三同学打一局50分钟还不投的LOL排位

对于执行时间短来的晚的进程很不友好,执行时间长的进程排在前面会导致后面的进程响应时间大大增长

 

2.短任务优先算法

也很好理解,不论小学生们什么时候进的网吧,每次都按每个小学生想上网的时间排序,再按顺序上网

问题:爱学习的小明同学早早的就能占上电脑,但是张三同学就很恼火,从早上八点来的想打一局LOL 排到晚上还没排到,后来的小马晚上五点来的都能排在他前边

很容易使执行时间长的进程排在后面长时间饥饿

 

3.高响应比优先算法

既然光靠进网吧顺序排序不公平,光靠占用电脑上网时间排序也不中,那不如二者结合一下  

响应比 = (等待时间+要求服务时间)/ 要求服务时间   根据响应比排序,这下小学生们都觉得公平多了。

完全串行执行,用户体验不好,多个进程不能并行执行

 

 

抢占式时代

(不需要等上一个小学生玩够,根据网管的规则可以直接让下一个小学生上去爽一爽)

抢占式相比较非抢占式,就是一天网吧老板来了,发现小学生们规规矩矩的排队,无论按什么规则,总有排在后面的小学生默默落泪

网吧老板心里不是滋味,于是想办法打破之前的规则,制定新的规则,不需要上一个小学生玩够就可以根据规则,让下一个小学生上去爽一会,再轮给下一个小学生。没办法,一台电脑大家挤一挤嘛。

 

4.时间片轮转算法

小学生还是按照进网吧的先后顺序排队,网吧老板拿出一块秒表,每个小学生上机就开始计时,到了规定的时间就让下一个小学生上。

问题: 老板如果把秒表设定十秒,结果每个小学生上机后光是开机+关机就要用掉5秒,那他娘的轮来轮去时间都浪费在开机关机上了。

时间片设计的过端会导致CPU频繁的上下文切换,会浪费资源

 

5.优先级调度算法

老板根据想上网时间,来网吧顺序,以及家里有没有背景(是否是内核进程)来综合考虑,发给每个小学生发一张数字卡片,拿到的数字越小代表优先级越高

然后根据优先级排序,顺序让小学生们上机

老板还会动态的更新小学生手里的数字卡片,最大努力的保证公平,也最大努力的让家里有背景的同学赢在起跑线上。

 

 

最后看一下进程调度切换的实现

 

posted @ 2022-01-11 21:57  六小扛把子  阅读(136)  评论(0编辑  收藏  举报