交互式系统中采用的调度算法
2015-06-13 22:21
267 查看
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上陈向群讲的操作系统原理课程,只有少量自己的解释)
(1)时间片轮转调度算法
CPU的时间分成一段一段的,每一段就是一个时间片,进程轮流使用时间片。示意图如下:
(2)虚拟轮转法
时间片轮转调度算法对IO型进程不公平:对于CPU型进程,该进程获得CPU时间片后总是会用完整个时间片;但是对于IO型,它经常是运行一部分时间片后就去等待IO事件,总是用不完自己的时间片。为了解决这个问题,提出了虚拟轮转法,该算法的示意图如下:
虚拟轮转调度算法的思想是:进程用完时间片后,回到就绪队列;而进程因为等待某个事件放弃CPU,该进程等待的事件发生后,进程进入辅助队列;CPU首先从辅助队列中调度进程,当辅助队列为空时,才从就绪队列中调度进程。
2.最高优先级调度
选择优先级最高的进程运行,可以用一个数(优先数)来表示进程优先级。
通常情况下:
(1)系统进程优先级高于用户进程;
(2)前台进程优先级高于后台进程;
(3)操作系统更偏好于IO型进程。
在该算法的抢占式版本中存在一个问题:优先级反转。关于这个问题的具体介绍参见百度百科 优先级翻转 一文。
3.多级反馈队列
(1)非抢占式多级反馈队列调度算法
算法描述如下:
“该进程回到原来一级就绪队列”的方式:
A.回到队首或者队尾?如果回到队首,说明系统对这类进程更加友好;
B.当进程再次被调度上CPU时,是让它运行完剩余的时间片呢?还是重新分配一个完整的时间片?如果重新分配一个完整的时间片,说明系统对这类进程更加友好。
(2)抢占式多级反馈队列调度算法
与非抢占式多级反馈队列调度算法不同的只有上图关于非抢占式多级反馈队列调度算法描述中化红线的那一点,改为以下描述,即成为一个抢占式多级反馈队列调度算法:
“被抢占的进程回到原来一级就绪队列末尾”或者队首;当被抢占的进程再次被调度上CPU时,可以只是运行完之前剩余的时间,也可以重新分配一个完整的时间片。
多级反馈队列调度算法的示意图如下:
4.最短进程优先
跟批处理系统中的短作业优先算法一致。
(本文的大部分内容整理自coursera上陈向群讲的操作系统原理课程,只有少量自己的解释)
相关文章推荐
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- 可自定义oem的萝卜家园 Ghost XP 新春装机版 V200801 下载
- Linux操作系统添加新硬盘方法
- Linux rdesktop操作系统下远程登录Windows XP桌面
- 32位操作系统认出超出4G内存的方法
- Linux rpm tar 操作系统下软件的安装与卸载方法
- JavaScript 获取用户客户端操作系统版本
- jsp 获取客户端的浏览器和操作系统信息
- Windows 操作系统的安全设置
- PHP获取用户的浏览器与操作系统信息的代码
- Perl操作系统环境变量的脚本代码
- 封装好的js判断操作系统与浏览器代码分享
- javascript实现获取浏览器版本、操作系统类型
- php根据操作系统转换文件名大小写的方法
- JS获得浏览器版本和操作系统版本的例子
- Python中使用异常处理来判断运行的操作系统平台方法
- 开源操作系统和必备工具网站收集
- 【爱之深】Linux Deepin 2014 试用札记(持续更新……)
- 如果操作系统是一条狗,那 Linux 就是斗牛犬