调度

定义:
从一个状态切换到另一个状态时,涉及(触发)调度。

一、背景

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
策略(用户态进程):抢占式,非抢占式
(内核态进程)内核中允许/不允许抢占:内核中不会出现抢占现象?

二、调度原则

在这里插入图片描述
进程的CPU占有率不断变化,可高可低。
合理安排CPU忙/不忙(IO)时的进程
在这里插入图片描述
进程调度的评价指标:
在这里插入图片描述
2.吞吐量越高,效率越好
3.进程从启动开始算, 等待时间+服务时间=周转时间
4.处于就绪态进程经过多长时间而转换为运行态(好像与上面的不一样)
5.响应时间越快越好

在这里插入图片描述
尽量量化指标(不会含糊):如开水龙头马上出水 和 浇花连水管(但从水龙头到土地需要一定的时间)
下面的几个指标很难全面顾忌,不同应用需求不一样
如桌面系统在乎低延迟,数据中心的服务器在乎吞吐率(大带宽的请求)
吞吐量-带宽,响应时间-延迟
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、调度算法

分三类
1.通常操作系统(桌面、服务器):

在这里插入图片描述
(1)先来先服务
前面进程的执行时间越长,后面的等待时间越长
优点:简单
缺点:
1.平均等待时间、周转时间都很大
2.没考虑抢占(响应时间也受影响)
改进:选择下一个最短的进程(短任务优先,短进程优先)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SPN的最优平均等待时间最小
在这里插入图片描述
缺点:
1.短进程会不断加塞,长进程一直等待(饥饿,有违公平性原则)
2.需要预先知道进程何时结束(不知道执行时间长度无法利用该算法进行排序)
解决办法:
1.先预估一下(根据过去预测未来,根据部分时间的执行情况,按公式规律预估下一阶段,有加权公式)

在这里插入图片描述
在这里插入图片描述
HRRN算法:(比前面算法多考虑了等待时间)
也需要预知执行时间
在这里插入图片描述
轮循RR(时间片轮转调度算法):让各个进程轮流占用CPU去执行(保证了公平性,但是有代价)
设定个时间片,如图中为20,进程时间小于20的,执行完了就给下个进程;大于20的,只能执行20的时间,然后给下个进程(P2执行完了,下次轮到他就跳过他了)
优缺点:切换上下文,设置时间片(经验,太大太小都不好)

在这里插入图片描述
在这里插入图片描述
综合各个算法的方法:
多级队列:不同队列采取不同的调度算法,根据优先级不同来选择
在这里插入图片描述
MLFQ多级反馈队列:根据它的执行过程变化,而改变它的优先级,任务的优先级会随着不同的情况而动态调整。
CPU密集型进程、IO密集型进程?

在这里插入图片描述
公平共享调度FSS调度算法:(针对多人共享?公平是第一要素)
在这里插入图片描述

在这里插入图片描述

总结:
在这里插入图片描述

实时调度

2.实时调度(用在工业控制,如火车、机床等嵌入式工厂,确保某些任务在规定时间内必须完成
硬/软实时
硬实时:规定时间内必须完成,否则灾难性后果严重,比如控制水坝(失败发大水)
软实时:尽量在固定时间内完成,比如视频达不到60帧可能会掉帧

衡量实时性需求的术语:
任务(job):
released time:
relative deadline
absolute deadline

静态优先级调度:任务执行之前就将优先级确定了
动态优先级调度:任务的优先级会随着任务的执行而动态的变化在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
RM:(静态)在一个实时系统里面,任务的周期和执行时间一开始就确定好,根据执行周期来设置优先级
EDF:(动态调度算法)根据任务离deadline的距离来设定不同任务的优先级
在这里插入图片描述

3.多处理器

1.有很多进程,哪个进程放到哪个CPU中去
2.合理安排各个CPU的负载(负载平衡,避免某个CPU很忙某个很闲的情况出现)
在这里插入图片描述

优先级反转

出现的问题:
T1,T2,T3为三个进程,且优先级是降序排列
图中蓝色区域为共享进程
低优先级任务影响了高优先级任务
T3先执行,然后到了t2时刻访问共享资源,t3时刻T1开始执行,到t4时T1需要访问共享资源,则只能等待共享资源被T3释放,T3执行至t5(T2开始执行,抢占了T3的执行,使得T3暂停,T2开始执行),虽然T2优先级低于T1,但是因为T1在等待T3的共享资源,而导致T2执行时间延长
解决办法:
1.优先级继承方法(弹幕理解:免费升舱):低优先级进程继承了高优先级进程的优先级(因为T1需要等待T3执行完毕,T3优先级提升到T1,尽快执行完共享资源,从而使得T1能够尽早执行,使得T2无法抢占T3)
2.优先级天花板方法:开始时先统计每个进程会用到哪些资源,并给资源也指定优先级(资源的优先级等于最高的优先级进程的优先级)
在这里插入图片描述
在这里插入图片描述

发布了65 篇原创文章 · 获赞 0 · 访问量 2051

猜你喜欢

转载自blog.csdn.net/ljmiiianng/article/details/103635399