操作系统-第二章-调度与调度算法
第二章-调度与调度算法
调度的概念与层次
概念:有许多任务要处理时,又因为资源有限无法同时处理;就需要某种确定的规则来决定处理这些任务的顺序,这便是“调度”要解决的问题
调度的三个层次
-
高级调度(
作业调度
):按一定的原则从外存的作业后备队列中选中一个调入内存,并创建进程。每个作业只调入一次,调出一次。面向作业的调度
-
低级调度(
进程调度/处理机调度
):按策略选取就绪队列中一个进程分配给处理机;进程调度是操作系统最基本的一种调度
,在一般的操作系统中都必须配置进程调度。- 进程调度频率很高,一般几十毫秒一次。
-
中级调度(
内存调度
):调取挂起状态的进程进入内存。一个进程可能会被多次调出、调入 内存;故而中级调度发生的频率要比高级调度更高
;
调度频率:低级>中级>高级
三层调度的联系、对比
进程的挂起状态与七状态模型
总结:
进程调度
进程调度时机
-
主动放弃
- 正常终止
- 运行过程异常终止
- 主动阻塞
-
被动放弃
- 分配的进程时间片用完
- 有更紧急的事情处理(如i/o中断)
- 有更高优先级的进程进入就绪队列
进程调度的切换与过程
-
切换过程
- 对原来运行进程各种数据进行保存
- 对新进程进行各种数据恢复
-
注意:
- 进程调度、切换有代价的,并不是调度越频繁,并发效率越高,反而会减少进程有效工作时间
进程调度方式
-
非抢占式
- 只能由当前运行的进程主动放弃CPu
-
抢占式
- 可由操作系统剥夺当前进程的CPU试用权
闲逛进程
- 没有其他就绪进程时就运行闲逛进程
- 特点:
1、优先级最低
2、可以是0地址指令、占一个完整的指令周期(指令周期末尾例行检查中断)
3、能耗低
调度算法的评价指标
调度算法
1 先来先服务(FCFS)
- 按照到达的先后顺序调度,事实上就是等待时间越久的越优先得到服务
2 短作业优先(SJF/SPF)
-
要求服务时间最短
-
-
非抢占式
3 高响应比优先(HRRN)
- 非抢占式的调度算法,调度时计算所有就绪进程的响应比,选响应比最高的进程上处理机
- 响应比
4 时间片轮转(RR)
- 算法思想:公平的、轮流的为各个进程服务,让每个进程在一定时间间隔都可以得到响应;
- 算法规则:按照各进程到达就绪队列的顺序,轮流让各个进程执行一个时间片。若进程未在一个时间片内执行完,则剥夺处理机,将进程重新放到就绪队列对位重新排队。
- 用于进程调度
- 若进程未能在时间片内运行完,将被强行剥夺处理机使用权,因此时间片轮转算法属于抢占式算法。由时钟装置发出时钟中断来通知CPU时间片已到
- 优缺点:优点:公平,响应快,适用于分时操作系统;
缺点:由于高频率的进程切换,因此有一定开消;不区分任务的紧急程度; - 不会导致饥饿;
5 优先级调度
- 算法规则:调度时选择优先级最高的作业/进程
- 既可以用于作业调度,也可以用于进程调度。甚至,还会用于之后的I/O调度
- 抢占式、非抢占式都有。
如何区分:非抢占式只需在进程主动放弃处理机时进行调度即可,而抢占式则需要在就绪队列变化是,检查是否会发生抢占 - 优缺点:
优点:用于优先级区分紧急程度、重要程度,适用于实时操作系统。可以灵活地调整对各种作业/进程的偏好程度。
缺点:若源源不断地有高优先级进程到来,则可能导致饥饿。
6 多级反馈队列调度算法
-
算法规则
-
用于进程调度
-
抢占式的算法。
-
优缺点:
优点:对各类型进程相对公平;每个新到达的进程都可以很快响应;短进程只用于较少的时间就可以完成;不必实现估计进程的运行时间(避免用户造假);可以灵活地调整对各类进程的偏好度 -
可能造成饥饿:若源源不断有短进程到达 短进程在第一级队列分配较短时间片就运行完了,可能造成后面的进程饥饿
回顾总结:
本文来自博客园,作者:taotooler,转载请注明原文链接:https://www.cnblogs.com/taolo/p/17225863.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)