这篇文章我们来看一下进程调度算法中的时间片轮转、优先级、多级反馈队列算法
目录
1.概述
2.时间片轮转调度算法(RR,Round-Robin)
3.优先级调度算法
4.多级反馈队列调度算法
5.分析对比
1.概述
首先,我们来看一下这篇文章的大体框架:
学习算法的大体思路如下:
- 算法思想
- 算法规则
- 这种调度算法是用于作业调度还是进程调度?
- 抢占式?非抢占式?
- 优点和缺点
- 是否会导致饥饿(饥饿:某进程/作业长期得不到服务)
2.时间片轮转调度算法(RR,Round-Robin)
算法思想总结:
下面看一道例题:
3.优先级调度算法
算法思想小结:
下面看一道例题:
补充:
就绪队列未必只有一个,可以按照不同优先级来组织。另外,也可以把优先级高的进程排在更靠近队头的位置
根据优先级是否可以动态改变,可将优先级分为静态优先级和动态优先级两种。
- 静态优先级:创建进程时确定,之后一直不变。
- 动态优先级:创建进程时有一个初始值,之后会根据情况动态地调整优先级。
如何合理地设置类进程的优先级?
通常:
- 系统进程优先级高于用户进程
- 前台进程优先级高于后台进程
- 操作系统更偏好l/O型进程(或称I/O繁忙型进程)
I/O设备和CPU可以并行工作。如果优先让I/O繁忙型进程优先运行的话,则越有可能让I/O设备尽早地投入工作,则资源利用率、系统吞吐量都会得到提升
注:与I/O型进程相对的是计算型进程(或称CPU繁忙型进程)
如果采用的是动态优先级,什么时候应该调整?
可以从追求公平、提升资源利用率等角度考虑
- 如果某进程在就绪队列中等待了很长时间,则可以适当提升其优先级
- 如果某进程占用处理机运行了很长时间,则可适当降低其优先级
- 如果发现一个进程频繁地进行I/O操作,则可适当提升其优先级
4.多级反馈队列调度算法
算法的提出:
FCFS算法的优点是公平;SJF算法的优点是能尽快处理完短作业,平均等待/周转时间等参数很优秀;时间片轮转调度算法可以让各个进程得到及时的响应;优先级调度算法可以灵活地调整各种进
程被服务的机会。
能否对其他算法做个折中权衡?得到一个综合表现优秀平衡的算法呢?
能,这就是多级反馈队列调度算法!
算法思想小结:
下面看一道例题:
5.分析对比
注:比起早期的批处理操作系统来说,由于计算机造价大幅降低,因此之后出现的交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标。而这几种算法恰好也能较好地满足交互式系统的需求。因此这三种算法适合用于交互式系统。(比如UNIX使用的就是多级反馈队列调度算法)