调度的基本概念

概念: 当有一堆任务要处理的时候,由于资源有限,这些事情不能同时处理,需要确定某种规则来决定处理这些任务的顺序,这就是调度研究的问题

调度的三个层次

高级调度(作业调度)

作业:一个具体的任务 = JCB+程序+数据

例如:用户向系统提交了一个作业=用户让操作系统启动一个程序(来处理一个任务)

作业变成多个进程才能上cpu执行

高级调度(作业调度):按一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程,每个作业只调入一次,调出一次。作业调入的时候会创建PCB,调出的时候会撤销PCB

低级调度(进程调度/处理机调度)

概念:按照某种策略从就绪队列中选取一个进程,将处理机分配给它

进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度,进程调度的频率很高,一般几十毫秒一次

中级调度(内存调度)

内存不够时,将某些进程的数据调出外存,等内存空闲或者进程需要运行时需要再调入内存

暂时调到外存等待的进程状态称为挂起状态,被挂起的进程PCB会被组织成挂起队列

所以中级调度就是按照某个策略觉得将那个处于挂起状态的进程重新调入内存

一个进程可能被多次调出,调入内存,因此中极调度的频率要比高级调度更高

联系与对比

20200405105928915.png

补充知识:进程的挂起态和七状态模型

20200405105331405.png

进程调度的时机,切换和过程

在这里插入图片描述

进程调度的时机

进程调度(低级调度),按照某种算法从就绪队列中选择一个进程为其分配处理机

在这里插入图片描述

在这里插入图片描述

OS内核程序临界区普通临界区的进程调度情况

在这里插入图片描述

所以内核临界区的进程不可以调度和切换,普通临界区的进程(打印机打印的过程)可以调度和切换

img

进程调度的方式

所谓进程调度方式,是指当某个进程正在处理机上执行时,若有某个更为重要或紧迫的进程需要处理,即有优先权更高的进程进入就绪队列,此时应如何分配处理机。

两种方式 非抢占方式和抢占方式

在这里插入图片描述

进程的切换和过程

在这里插入图片描述

调度器/调度程序

什么样的事件会触发调度程序

  1. 创建新进程
  2. 进程退出
  3. 运行进程阻塞
  4. I/O中断发生(可能会唤醒某些阻塞进程)

非抢占式调度策略,只有运行进程阻塞或者退出才触发调度程序的工作

抢占式调度策略,每个时钟中断或者k个时钟中断才会除法调度程序工作

调度的基本单位:

image-20230504141939956

闲逛进程

调度程序永远是备胎,没有其他就绪进程的时候,运行闲逛进程

闲逛进程特性:

  1. 优先级最低
  2. 可以是0地址指令,占有一个完整的指令周期
  3. 能耗低

调度算法的评价指标

总览思维导图

在这里插入图片描述

CPU利用率:

CPU 忙碌的时间占总时间的比例

利用率=忙碌的时间/总时间

系统吞吐量

单位时间完成的作业的数量

系统吞吐量=总共完成的作业/总时间

周转时间

作业从被提交给系统开始到作业完成为止的这段时间间隔

分为4个部分

  1. 作业再外存后备队列上等待作业调度的时间(高级调度)
  2. 进程再就绪队列上等待进程调度的时间(低级调度)
  3. 进程再CPU上的执行时间
  4. 进程等待I/O操作完成的时间

周转时间=作业完成时间-作业提交时间

平均周转时间=各个作业周转时间和/作业数量

带权周转时间=作业周转时间/作业实际运行时间 (带权周转时间>1)

对于周转时间相同的两个作业,实际运行时间越长的作业在相同时间内被服务的时间更多,带权周转时间更小,用户满意度更高

对于实际运行时间相同的两个作业,周转时间短的带权周转时间更小,用户满意度更高

等待时间

进程和作业处于等待处理机状态时间之和

对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间

对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列等待的时间