没有合适的资源?快使用搜索试试~ 我知道了~
p299 - p312 进程之间的调度算法
需积分: 0 0 下载量 74 浏览量
2023-05-15
10:07:59
上传
评论
收藏 2.32MB PDF 举报
温馨提示
试读
24页
p299 - p312 进程之间的调度算法
资源推荐
资源详情
资源评论
进程调度算法
进程调度算法也称 CPU 调度算法,毕竟进程是由 CPU 调度的。
当 CPU 空闲时,操作系统就选择内存中的某个「就绪状态」的进程,并给其分配 CPU。
什么时候会发⽣ CPU 调度呢?通常有以下情况:
1.
当进程从运⾏状态转到等待状态;
2.
当进程从运⾏状态转到就绪状态;
3.
当进程从等待状态转到就绪状态;
4.
当进程从运⾏状态转到终⽌状态;
其中发⽣在 1 和 4 两种情况下的调度称为「⾮抢占式调度」,2 和 3 两种情况下发⽣的调度
称为「抢占式调度」。
⾮抢占式的意思就是,当进程正在运⾏时,它就会⼀直运⾏,直到该进程完成或发⽣某个事
件⽽被阻塞时,才会把 CPU 让给其他进程。
⽽抢占式调度,顾名思义就是进程正在运⾏的时,可以被打断,使其把 CPU 让给其他进程。
那抢占的原则⼀般有三种,分别是时间⽚原则、优先权原则、短作业优先原则。
你可能会好奇为什么第 3 种情况也会发⽣ CPU 调度呢?假设有⼀个进程是处于等待状态的,
但是它的优先级⽐较⾼,如果该进程等待的事件发⽣了,它就会转到就绪状态,⼀旦它转到
就绪状态,如果我们的调度算法是以优先级来进⾏调度的,那么它就会⽴⻢抢占正在运⾏的
进程,所以这个时候就会发⽣ CPU 调度。
那第 2 种状态通常是时间⽚到的情况,因为时间⽚到了就会发⽣中断,于是就会抢占正在运
⾏的进程,从⽽占⽤ CPU。
调度算法影响的是等待时间(进程在就绪队列中等待调度的时间总和),⽽不能影响进程真
在使⽤ CPU 的时间和 I/O 时间。
接下来,说说常⻅的调度算法:
先来先服务调度算法
最短作业优先调度算法
⾼响应⽐优先调度算法
时间⽚轮转调度算法
最⾼优先级调度算法
多级反馈队列调度算法
先来先服务调度算法
最简单的⼀个调度算法,就是⾮抢占式的先来先服务(First Come First Severd, FCFS)算
法了。
顾名思义,先来后到,每次从就绪队列选择最先进⼊队列的进程,然后⼀直运⾏,直到进程
退出或被阻塞,才会继续从队列中选择第⼀个进程接着运⾏。
这似乎很公平,但是当⼀个⻓作业先运⾏了,那么后⾯的短作业等待的时间就会很⻓,不利
于短作业。
FCFS 对⻓作业有利,适⽤于 CPU 繁忙型作业的系统,⽽不适⽤于 I/O 繁忙型作业的系统。
最短作业优先调度算法
最短作业优先(Shortest Job First, SJF)调度算法同样也是顾名思义,它会优先选择运⾏时
间最短的进程来运⾏,这有助于提⾼系统的吞吐量。
这显然对⻓作业不利,很容易造成⼀种极端现象。
⽐如,⼀个⻓作业在就绪队列等待运⾏,⽽这个就绪队列有⾮常多的短作业,那么就会使得
⻓作业不断的往后推,周转时间变⻓,致使⻓作业⻓期不会被运⾏。
⾼响应⽐优先调度算法
前⾯的「先来先服务调度算法」和「最短作业优先调度算法」都没有很好的权衡短作业和⻓
作业。
那么,⾼响应⽐优先
(Highest Response Ratio Next, HRRN)调度算法主要是权衡了短作业和⻓作业。
每次进⾏进程调度时,先计算「响应⽐优先级」,然后把「响应⽐优先级」最⾼的进程投⼊
运⾏,「响应⽐优先级」的计算公式:
从上⾯的公式,可以发现:
如果两个进程的「等待时间」相同时,「要求的服务时间」越短,「响应⽐」就越⾼,这
样短作业的进程容易被选中运⾏;
如果两个进程「要求的服务时间」相同时,「等待时间」越⻓,「响应⽐」就越⾼,这就
兼顾到了⻓作业进程,因为进程的响应⽐可以随时间等待的增加⽽提⾼,当其等待时间⾜
够⻓时,其响应⽐便可以升到很⾼,从⽽获得运⾏的机会;
时间⽚轮转调度算法
最古⽼、最简单、最公平且使⽤最⼴的算法就是时间⽚轮转(Round Robin, RR)调度算
法。
。
每个进程被分配⼀个时间段,称为时间⽚(Quantum),即允许该进程在该时间段中运⾏。
如果时间⽚⽤完,进程还在运⾏,那么将会把此进程从 CPU 释放出来,并把 CPU 分配
另外⼀个进程;
如果该进程在时间⽚结束前阻塞或结束,则 CPU ⽴即进⾏切换;
另外,时间⽚的⻓度就是⼀个很关键的点:
如果时间⽚设得太短会导致过多的进程上下⽂切换,降低了 CPU 效率;
如果设得太⻓⼜可能引起对短作业进程的响应时间变⻓。将
通常时间⽚设为 20ms~50ms 通常是⼀个⽐较合理的折中值。
最⾼优先级调度算法
前⾯的「时间⽚轮转算法」做了个假设,即让所有的进程同等重要,也不偏袒谁,⼤家的运
⾏时间都⼀样。
但是,对于多⽤户计算机系统就有不同的看法了,它们希望调度是有优先级的,即希望调度
程序能从就绪队列中选择最⾼优先级的进程进⾏运⾏,这称为最⾼优先级(Highest Priority
First
,
HPF)调度算法。
进程的优先级可以分为,静态优先级或动态优先级:
静态优先级:创建进程时候,就已经确定了优先级了,然后整个运⾏时间优先级都不会变
化;
动态优先级:根据进程的动态变化调整优先级,⽐如如果进程运⾏时间增加,则降低其优
先级,如果进程等待时间(就绪队列的等待时间)增加,则升⾼其优先级,也就是随着时
间的推移增加等待进程的优先级。
该算法也有两种处理优先级⾼的⽅法,⾮抢占式和抢占式:
⾮抢占式:当就绪队列中出现优先级⾼的进程,运⾏完当前进程,再选择优先级⾼的进
程。
抢占式:当就绪队列中出现优先级⾼的进程,当前进程挂起,调度优先级⾼的进程运⾏。
但是依然有缺点,可能会导致低优先级的进程永远不会运⾏。
剩余23页未读,继续阅读
资源评论
Wangzc_1116
- 粉丝: 42
- 资源: 79
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功