基本概念
当有一堆任务要处理,但由于资源有限,这些事情无法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是"调度"研究的问题。
处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平,高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
处理机调度是多道程序操作系统的基础,它是操作系统设计的核心问题。
三个层次
高级调度(作业调度)
作业调度。又称高级调度,.其主要任务是按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给它(们)分配内存、输入/输出设备等必要的资源,并建立相应的进程,以使它(们)获得竞争处理机的权利。简言之,就是内存与辅存之间的调度。对于每个作业只调入一次、调出一次。
作业:一个具体的任务
用户向系统提交一个作业=用户让操作系统启动一个程序(来处理一个具体的任务)
由于内存空间有限,有时无法将用户提交的作业全部放入内存,这时候操作系统就要进行高级调度
高级调度(作业调度)。按照一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程。每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时才撤销PCB。
中级调度(内存调度)
![](https://img-blog.csdnimg.cn/51b38d9d30414df6b92f2356af5368d3.png)
低级调度(进程调度)
进程调度。又称为低级调度,其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,在一般操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。
三层调度的联系,对比
作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列,进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,把CPU分配给它。中级调度是为了提高内存的利用率,系统将那些暂时不能运行的进程挂起来,当内存空间宽松时,通过中级调度选择具备运行条件的进程,将其唤醒。
1.作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间。
2.作业调度次数少,中级调度次数略多,进程调度频率最高。
3. 进程调度是最基本的,不可或缺。
补充知识
进程的"挂起态"与七状态模型
暂时调到外存等待的进程状态为挂起状态(挂起态)
挂起态又可以进一步细分为就绪挂起,阻塞挂起两种状态
时机
什么时候需要进程调度
进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。
1.当前运行的进程主动放弃处理机:进程正常终止;运行过程中发生异常而终止;进程主动请求阻塞
2.当前运行的进程被动放弃处理机:分给进程的时间片用完;有更紧急的事需要处理;有更高优先级的进程进入就绪队列
什么时候不能进行进程调度
1.在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换。
2.进程在操作系统内核程序临界区中。
补充:
临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。
临界区:访问临界资源的那段代码。
内核程序临界区 一般是用来访问 某种内核数据结构 的,比如进程的就绪队列(由各就绪进程的 PCB 组成)
3.在原子操作过程中(原语)。原子操作不可中断,要一气呵成(如之前讲过的修改PCB中进程状态标志,并把PCB放到相应队列)
切换与过程
"狭义的调度"
狭义的进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)
进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。
方式
非剥夺调度方式(非抢占式)
剥夺调度方式(抢占式)
调度器
②、③由调度程序引起,调度程序决定:
调度时机——什么事件会触发“调度程序” ?
- 创建新进程
- 进程退出
- 运行进程阻塞
-
I/O 中断 发生(可能唤醒某些阻塞进程)
-
非抢占式调度策略,只有运行进程阻塞或退出才触发调度程序工作
-
抢占式调度策略,每个 时钟中断或k个时钟中断会触发调度程序工作
![](https://img-blog.csdnimg.cn/d23bbbe25670457d8a867dee19a20d8b.png)
闲逛进程
调度程序永远的备胎,没有其他就绪进程时,运行闲逛进程(idle)
-
优先级最低
-
可以是 0 地址指令,占一个完整的指令周期(指令周期末尾例行检查中断)
-
能耗低
调度算法的评价指标
CPU利用率
由于早期的CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作
系统吞吐量
对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业
10/100 = 0.1 道/秒
周转时间
![](https://img-blog.csdnimg.cn/9a779552cc4d41cf8404b98690f1ac29.png)
等待时间
![](https://img-blog.csdnimg.cn/a4ef165f894940beb479c73c9b764845.png)
响应时间