处理机调度

处理机调度概念:

处理机调度:从就绪队列中挑选下一个占用CPU运行的进程;从多个可用CPU中挑选就绪进程可使用的CPU资源
调度程序:挑选就绪进程的内核函数。
什么时候进行调度呢?依据什么原则挑选进程/线程呢?
在运行态进程退出或者进入等待状态时进行调度,或者当前进程被抢占时调度。
(CPU资源的使用模式:进程在CPU计算和I/O操作之间交替。CPU在计算模式的时间往往比较短,而且短时间计算的频率较高,长时间计算的频率较低)

比较调度算法的准则:
CPU使用率(CPU处于忙状态的时间百分比)
吞吐量(单位时间内完成的进程数量)
周转时间(进程从初始化到结束(包括等待)的总时间)
等待时间(进程在就绪队列中的总时间)
响应时间(从提交请求到产生响应所花费的总时间)

调度算法
先来先服务法
短进程优先算法
最高响应比优先算法
时间片轮转算法
多级反馈队列算法
公平共享调度算法

1.先来先服务法(First Come First Served)
依据进程进入就绪状态的先后顺序排列;进程进入等待或结束状态时,就绪队列中的下一个进程占用CPU
特征:优点是简单;缺点是平均等待时间波动大,I/O资源和CPU资源的利用率较低
2.短进程优先算法(SPN)
选择就绪队列中执行时间最短进程占用CPU进入运行状态
特征:优点是具有最优平均周转时间;缺点是可能导致饥饿,需要预估下一个CPU计算的持续时间
3.最高响应比优先算法(HRRN)
选择就绪队列中响应比R值最高的进程(R= (W+S)/S)(W:等待时间 S:执行时间)(在短进程优先算法的基础上改进,不可抢占,关注进程的等待时间,可以避免无限期的推迟)
4.时间片轮转算法(RR,Round-Robin)
时间片为分配处理机资源的基本时间单元;当时间片结束时,按FCFS算法切换到下一个就绪进程;每隔(N-1)个时间片进程执行一个时间片Q
特征:RR算法有额外的上下文切换的开销。选择时间片长短时,如果时间片太长会使等待时间太长,极端情况下退化成FCFS,如果时间片太小,反应会很迅速,但是产生大量的上下文切换,会影响到系统的吞吐量。
时间片长度选择目标:选择一个合适的时间片长度,经验规则是维持上下文切换开销处于1%以内。
5.多级反馈队列算法(MLFQ)
把就绪队列分成多个独立的子队列
每个队列有自己的调度算法
队列间的调度用时间片轮转
多级反馈队列算法是进程可在不同队列间移动的多级队列算法,时间片的大小随优先级级别增加而增加,如进程在当前的时间片没有完成,则降到下一个优先级。一个进程优先级较高,先分配在时间片短的队列中,如果经过一个时间片后,还没有运行完,那么转到下一个低优先级时间片长的队列中。
MLFQ算法的特征:CPU密集型进程的优先级下降很快,I/O密集型进程停留在高优先级
6.公平共享调度算法(FSS,Fair Share Scheduling)
FSS控制用户对系统资源的访问;一些用户组比其他用户组更重要;保证不重要的组无法垄断资源,未使用的资源按比例分配,没有达到资源使用率目标的组获得更高的优先级

调度算法总结:
先来先服务法:不公平,平均等待时间较差
短进程优先算法:不公平,平均周转时间最小;需要精准预测计算时间;可能导致饥饿
最高响应比优先算法:不可抢占;基于SPN
时间片轮转算法:公平,但是平均等待时间较差
多级反馈队列:多种算法的集合
公平共享调度:公平是第一要素

对称多处理器的进程分配:
1.静态进程分配:进程从开始到结束都被分配到一个固定的处理机上执行;每个处理机有自己的就绪队列;调度开销小;处理机可能忙闲不均
2.动态进程分配:进程在执行中可分配到任意空闲处理机执行;所有处理机共享一个公共的就绪对列;调度开销大;个处理机的负载是均衡的

优先级反置(Priority Inversion)
操作系统中高优先级进程长期等待低优先级进程所占用资源的现象;基于优先级的可抢占调度算法存在优先级反置
怎么处理呢?两种基本的做法(理论上):
1.优先级继承(Priority Inheritance)
占用资源的低优先级进程继承申请资源的高优先级进程的优先级(只在占有资源的低优先级进程进程被阻塞时,才提高占有资源进程的优先级)
2.优先级天花板协议(Priority Ceiling Protocol)
占用资源进程的优先级和所有可能申请该资源的进程的最高优先级相同(不管是否发生等待,都提升占用资源进程的优先级;优先级高于系统中所有被锁定的资源的优先级上限,任务执行临界区时就不会被阻塞)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值