处理机调度
处理机的多级调度
处理机调度的功能
- 确定数据结构
- 制定调度策略(调度原则)
- 给出调度算法
- 具体的实施处理机分派
不同类型的操作系统往往采用不同的处理机分配方法。
批处理系统中的处理机调度
作业调度
作业调度又称为宏观调度。
任务:对存放在辅存设备上的大量作业,以一定的策略进行挑选,分配主存等必要的资源,建立作业对应的进程,使其投入运行。
进程调度
进程调度又称为微观调度。
任务:对计入主存的所有进程,确定那个进程在什么时候获得处理机,使用多长时间。
多任务操作系统中的处理机调度
- 在分时系统或支持多任务并发执行个人计算机操作系统中,系统将用户提交的任务处理为进程,一个进程又可以创建多个子进程,形成可以并发执行。
- 进程调度的任务是:当处理机空闲时,以某种策略选择一个就绪进程去运行,并分配处理机的时间。
多线程操作系统中的处理机调度
- 在支持多线程运行的系统中,一个进程可以创建一个线程,也可以创建多个线程。系统为进程分配它所需要的资源,而处理机的分配单位则为线程。
- 系统提供线程调度程序,其功能是当处理机空闲时,以某种策略选择一个就绪线程去运行,并分配处理机时间。
作业调度
作业的状态
作业在整个活动期间一共有四种状态:
- 提交状态:用户将自己的程序和数据提交给系统,等待输入。
- 后备状态:作业已存放在磁盘上,等待调度。
- 执行状态:作业进入主存开始运行。
- 完成状态:作业计算完成开始,退出系统。
作业调度的功能
- 确定数据结构:建立作业控制块jcb (job control block)。 jcb记录每个作业的类型、状态、资源请求及分配情况 。
- 确定调度策略与调度算法
- 分配资源:为选中的作业分配所需要的系统资源。
- 善后处理:收回该作业所占用的全部资源,撤销作业控制块以及与该作业有关的全部进程。
作业控制块
- 作业名
- 资源要求
- 估计执行时间
- 最迟完成时间
- 要求的主存量
- 要求外设的类型及台数
- 要求文件量和输出量
- 类型
- 控制方式(联机、脱机)
- 作业类型(计算型、IO型)
- 资源使用情况
- 进入系统时间
- 开始执行时间
- 已执行时间
- 主存地址
- 外设台号
- 优先级
- 状态
调度算法评价
调度实质上是一个策略问题,设定的目标往往是相互冲突的。
目标:
- 单位时间内运行尽可能多的作业
- 使处理机尽可能保持忙碌
- 使各种I/O设备得以充分利用
- 对所有的作业都是公平合理的
设计一个理想的调度算法是十分困难的事情,在实际系统中,调度算法往往折中考虑。
设计调度算法时应考虑的因素:
- 调度算法应与系统设计目标保持一致
- 注意系统资源均衡使用
- 保证提交的作业在截止时间内完成
- 设法缩短作业平均周转时间
大多数操作系统都采用比较简单的调度算法。
作业调度算法性能的衡量标准
周转时间
定义:一个作业提交给计算机系统到该作业的结果返回给用户所需要的时间。
\(t_i = tc_i - ts_i\)
- \(t_i\):作业\(i\)的周转时间
- \(ts_i\):作业\(i\)的提交时间
- \(tc_i\):作业\(i\)的完成时间
意义:说明作业\(i\)在系统中停留时间的长短。
平均周转时间:\(t = \frac{1}{n} \sum\limits_{j = i - 1}^n t_j\)
带权周转时间
定义:一个作业的周转时间与其运行时间的比值。\(w_i = \frac{t_i}{tr_i}\),\(tr_i\)为作业的实际运行时间。
意义:说明作业\(i\)在系统中相对等待时间。
平均带权周转时间:\(w = \frac{1}{n}\sum\limits_{j = i - 1}^{n}w_j\)
作业调度算法
先来先服务调度算法(FCFS)
策略:按作业来到的先后次序进行调度。
特点:简单、易实现。优先考虑系统中等待时间最长的作业,不管运行特性(时间、资源)
讨论在先来先服务调度算法下的周转时间与带权周转时间
短作业优先调度算法(SJF)
策略:按照作业请求运行的时间长短进行调度,优先选择短作业。
特点:易实现,系统吞吐量高。只照顾短作业,而没有考虑长作业的利益。(长作业可能要等待很久)
讨论在短作业优先调度算法下的周转时间与带权周转时间。
响应比高者优先调度算法(HRN)
响应比= 响应时间/运行时间
策略:优先选择响应比高者作业运行。
特点:1、2算法的一种折中,既照顾了短作业又不使长作业等待时间过长。
讨论在响应比高者优先调度算法下的周转时间与带权周转时间
进程调度
调度 分派结构
调度
在众多处于就绪状态的进程中,按一定的原则选择一个进程。
分派
当处理机空闲时,移出就绪队列中第一个进程,并赋予它使用处理机的权利。
调度 分派结构图
CPU调度时机
有四种情况都会发生CPU调度:
- 当一个进程从运行态切换成等待状态时;
- 当一个进程从运行态切换成就绪态时;
- 当一个进程从等待态切换成就绪态时;
- 当一个进程中止时。
进程调度的功能
- 记录进程的有关情况和状态特征
- 决定调度策略
- 优先调度原则——进程就绪队列按进程优先级高低排序。
- 先来先服务原则——进程就绪队列按进程来到的先后次序排序。
- 实施处理机的分配和回收
进程调度方式
什么是调度方式
当一进程正在处理机上执行时,若有某个更为“重要而紧迫”的进程需要进行运行,系统如何分配处理机。
非剥夺方式
正在执行的进程继续执行,直到该进程完成或发生某事件而进入“完成”或“阻塞”状态时,才把处理机分配给“重要而紧迫”的进程。
剥夺方式
当“重要而紧迫”的进程一到,便暂停正在执行的进程,立即把处理机分配给优先级更高的进程。
进程调度算法
进程优先数调度算法
定义:预先确定各进程的优先数,系统把处理机的使用权赋予就绪队列中具备最高优先权(优先数和一定的优先级相对应)的就绪进程。
优先数的分类及确定
-
静态优先数
在进程被创建时确定,且一经确定后在整个进程运行期间不再改变。
静态优先数的确定:1.优先数根据进程所需使用的资源来计算;2.优先数基于程序运行时间的估计;3.优先数基于进程的类型。
-
动态优先数
进程优先数在进程运行期间可以改变。
动态优先数的确定:1.进程使用CPU超过一定数值时,降低优先数;2.进程进行I/O操作后,增加优先数;3.进程等待时间超过一定数值时,提高优先数。
循环轮转调度算法
定义:当CPU空闲时,选取就绪队列首元素,赋予一个时间片,当时间片用完时,该进程转为就绪态并进入就绪队列末端。
时间片选取:
- 时间片取值太小,多数进程不能在一个时间片内运行完毕,切换就会频繁,开销显著增大,从系统效率来看,时间片取大一点好。
- 时间片取值较大,随就绪队列里进程数目增加,轮转一次的总时间增大,对进程的响应速度放慢了。为满足响应时间要求,要么限制就绪队列中进程数量,要么采用动态时间片法,根据负载状况,及时调整时间片的大小。
简单循环轮转调度
就绪队列中的所有进程以等速度向前进展。
\(q = \frac{t}{n}\)。其中\(t\)为响应时间,\(n\)为进入系统的进程数目。
由于该算法简单易于实现,且系统开销较小,早期的分时操作系统和目前一些应用系统中广泛采用了这种调度算法。
循环轮转调度算法的发展
- 可变时间片轮转调度:时间片的大小是可变的,系统可根据系统中当前的进程数来确定时间片的大小。这种算法从理论上克服了系统中进程数很少时系统开销大的缺点,但修改时间片的大小,统计系统进程的数量也需要消耗系统时间,还有一个调整时间片大小的周期,太大,等于是固定时间片,太小,系统开销很大,得不尝失。
- 多重时间片循环调度:又称反馈循环队列或多队列策略。主要思想是将就绪进程分为两级或多级,系统相应建立两个或多个就绪进程队列,较高优先级的队列一般分配给较短的时间片。处理器调度先从高级就绪进程队列中选取可占有处理器的进程,只有在选不到时,才从较低级的就绪进程队列中选取
三级反馈队列示例
调度用的进程状态变迁图
简单时间片轮转算法
简单可抢占的优先数调度算法
不可抢占的优先数调度算法
时间片与优先数混合抢占调度示例
队列结构:
- I/O等待队列 —— 一个进程如果请求I/O,则进入I/O等待队列;
- 低优先就绪队 —— 一个进程如果在运行中超过了它的时间量就进入低优先就绪;
- 高优先就绪队列 —— 当进程从等待状态变为就绪状态时则进入高优先就绪队列。
进程调度算法
优先调度与时间片调度相结合的调度策略:
(1) 当CPU空闲时,若高优先就绪队列非空,则从高优先就绪队列中选择一个进程运行,分配时间片为100ms。
(2) 当CPU空闲时,若高优先就绪队列为空,则从低优先就绪队列中选择一个进程运行,分配时间片为500ms。
调度效果
- 优先照顾了I/O量大的进程
- 适当照顾了计算量大的进程
作者:cherish.
出处:https://home.cnblogs.com/u/cherish-/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。