文章目录
- 总览
- 时间片轮转
- 时间片大小为2
- 时间片大小为5
- 若按照先来先服务算法
- 优先级调度算法
- 例题( 非抢占式优先级调度算法)
- 例题( 抢占式优先级调度算法)
- 补充
- 思考
- 多级反馈队列调度算法
- 例题
- 小结
- 多级队列调度算法
总览
时间片轮转
分时操作系统是一种允许多个用户共享一台计算机资源的操作系统,它通过时间片轮转的方式为每个用户提供服务
注意其调度算法没有区分任务的紧急程度
时间片大小为2
注意此时默认新到达的进程先进入就绪队列,下处理机的进程后进入就绪队列
P2上处理机,下处理机,此时P3也刚进入就绪队列
此时P1上处理机,时间片内P4进入就绪队列
P1时间片结束,进入就绪队列
P3上时间片,此时时间片内主动放弃,此时也会发生调度
P2上处理机
P4上时间片,结束后再放入就绪队列
P1上处理机,时间片内完成,主动放弃,此时P4上处理机
此时由于就绪队列为空,所以继续执行P4一个时间片
时间片大小为5
若按照先来先服务算法
先来先服务(FCFS)算法可能会导致进程响应时间增大的原因是缺乏优先级考虑:FCFS算法在选择进程时,仅仅基于进程到达的顺序,而不考虑进程的优先级或者所需的服务时间。这意味着一些需要快速响应的短进程可能会因为排在长进程后面而被延迟处理。
优先级调度算法
实时操作系统(RTOS)是一种专门为满足实时性要求而设计的操作系统,它能够在外部事件发生时快速接受并处理相应的数据,确保在规定的时间内完成任务并做出响应
例题( 非抢占式优先级调度算法)
例题( 抢占式优先级调度算法)
补充
就绪队列未必只有一个,可以按照不同优先级来组织:有些操作系统可以设置多个就绪队列,每个队列对应不同的优先级。
把优先级高的进程排在更靠近队头的位置:有些操作系统会按照优先级高低在一个就绪队列中动态排队
频繁IO型操作的进程提升其优先级可使得让IO设备尽早投入工作,从而提高资源利用率
思考
多级反馈队列调度算法
实际应用中也可能是非抢占式的
公平:每个进程刚进来都是优先级最高的(优先被处理的)
及时响应:每个新到达的进程都是优先级最高,都会很快被响应
短进程花费时间更少:短进程经过的队列少,相比于长进程,其总共用的时间也少些
不必实现估计进程的运行时间:因为不会按照用户自己定义的时间来决定谁优先执行,都是统一按照队列的流动来的,直接会执行,所以用户造假也没用
灵活调整优先级:如使得IO密集型进程执行完该级的时间后,再将该进程放入原队列,保持其优先级
饥饿:源源不断短进程到来会导致长进程无法得到服务
例题
P0进入第1级队列,第一级队列的时间片大小只有一个时间片大小,P1执行完一个时间片后,此时还没有结束,便进入下一级队列,
此时P2到达第一级队列,由于第一级队列此时不为空,处理第一级,处理一个时间片后进入下一级队列,放在队尾
此时第一级队列为空,会给第二级队列分配时间片,第二级队列队头P1出队,此时分配的时间是两个时间片,此时P1的运行时间还没有全部结束,会被放到第三级队列
此时第二级队列不为空,P2出队列,运行P2,此时运行一个时间片后,P3进入第一级队列,由于此时第一级队列不为空,此时P2的进程被P1强占,然后P3上处理机
P3运行一个时间片后,运行完成,被调出内存,然后第二级队列队头P2继续运行,此时运行两个时间片总共运行完成
此时第一二级队列都空,第三级队列的进程上处理机,此时是四个时间片,此时P1运行完四个时间片后还剩一个时间才能运行2完成
由于此时P1已经在最下面,此时没办法再往下级队列走了,只会放回原队列队尾,然后再次调入
然后P1再使用四个时间片中的一个时间片即可完成
小结
多级队列调度算法
创建进程后根据分类插入某个队列
交互式进程需要及时的响应,所以优先级高于批处理进程
固定优先级:高优先级队列不空就先运行高优先级,这样会导致如果系统进程内有内容,那么交互式进程就永远不会被响应
时间片划分:每个时间片分为多个部分,然后分给各个队列中的某个进程执行,那么在时间片片内,任何一类的进程都会响应一次
注意这里各个类型队列中还有不同的调度方法,下列是一个举例(各个队列还可以采用不同的调度算法)
系统进程队列中依然存在许多优先级不同的进程,此时系统进程队列采用优先级调度,此时依然会选择优先级高的进程执行
交互式队列采用时间片轮转调度保证各个各个进程都在一定时间内被响应到
批处理队列:先来先服务,因为不关心响应时间