1.轮转调度
(1)时间片轮转调度算法
CPU的时间分成一段一段的,每一段就是一个时间片,进程轮流使用时间片。示意图如下:
(2)虚拟轮转法
时间片轮转调度算法对IO型进程不公平:对于CPU型进程,该进程获得CPU时间片后总是会用完整个时间片;但是对于IO型,它经常是运行一部分时间片后就去等待IO事件,总是用不完自己的时间片。为了解决这个问题,提出了虚拟轮转法,该算法的示意图如下:
虚拟轮转调度算法的思想是:进程用完时间片后,回到就绪队列;而进程因为等待某个事件放弃CPU,该进程等待的事件发生后,进程进入辅助队列;CPU首先从辅助队列中调度进程,当辅助队列为空时,才从就绪队列中调度进程。
2.最高优先级调度
选择优先级最高的进程运行,可以用一个数(优先数)来表示进程优先级。
通常情况下:
(1)系统进程优先级高于用户进程;
(2)前台进程优先级高于后台进程;
(3)操作系统更偏好于IO型进程。
在该算法的抢占式版本中存在一个问题:优先级反转。关于这个问题的具体介绍参见百度百科 优先级翻转 一文。
3.多级反馈队列
(1)非抢占式多级反馈队列调度算法
算法描述如下:
“该进程回到原来一级就绪队列”的方式:
A.回到队首或者队尾?如果回到队首,说明系统对这类进程更加友好;
B.当进程再次被调度上CPU时,是让它运行完剩余的时间片呢?还是重新分配一个完整的时间片?如果重新分配一个完整的时间片,说明系统对这类进程更加友好。
(2)抢占式多级反馈队列调度算法
与非抢占式多级反馈队列调度算法不同的只有上图关于非抢占式多级反馈队列调度算法描述中化红线的那一点,改为以下描述,即成为一个抢占式多级反馈队列调度算法:
“被抢占的进程回到原来一级就绪队列末尾”或者队首;当被抢占的进程再次被调度上CPU时,可以只是运行完之前剩余的时间,也可以重新分配一个完整的时间片。
多级反馈队列调度算法的示意图如下:
4.最短进程优先
跟批处理系统中的短作业优先算法一致。
(本文的大部分内容整理自coursera上陈向群讲的操作系统原理课程,只有少量自己的解释)
原文地址:http://blog.csdn.net/l294265421/article/details/46484493