基本概念

调度

按层次分类

调度:由于资源有限,无法同时处理许多事物,因此需要通过某种规则来决定任务执行的顺序。
作业从进入系统到最后的完成阶段需要经过三级调度:高级调度、中级调度、低级调度

高级调度

根据一定的算法,从输入的一批作业中选出若干的作业,分配必要的资源,如外设、内存,为他建立相应的用户作业进程和其服务的系统进程(PCB),最后把他的程序和数据调入内存,等待进程调度程序对其执行调度,并在作业完成后做善后处理工作。
image.png

中级调度

为使内存中同时存放的进程数目不致太多,有时需要把某些进程从内存中移到外存上,以减少多道程序的数目,为此建立了中级调度
image.png

低级调度

将CPU分派给就绪队列中的 一个进程,执行低级调度功能的程序称作进程调度程序,由他实现CPU在进程间的切换。
最基本的一种调度,在一般的操作系统中都必须有,他的策略优劣直接影响整个系统的性能
image.png
image.png
image.png

挂起状态

image.png

进程调度

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

功能

时机

image.png
进程在操作系统内核程序临界区中不能进行调度和切换
临界资源:一个时间段只允许一个进程使用资源,各进程需要互斥地访问临界资源
临界区:访问临界资源的代码
内核临界区:一般是用来访问某种内核数据结构的,如进程的就绪队列(由各就绪进程的PCB组成)
image.png

方式

image.png

进程的切换与过程

image.png

作业调度

作业状态

  1. 提交状态:用户向系统提交一个作业时的状态
  2. 后备状态:用户作业经输入设备送入输入井中存放,等待进入内存时的状态。
  3. 执行状态:作业分配到所需的资源,被调入内存,且在处理机上执行相应的程序时所处的状况,此时改作业真正处于处于活动状态。
  4. 完成状态:作业完成计算任务,最后由系统回收分配给它的全部资源,准备退出系统时的作业状态。

作业控制块

  1. 为了管理和调度作业,系统为每个作业设置了一个作业控制快,用以记录作业的有关信息。
  2. JCB是作业在系统中存在的标志。
  3. 系统利用JCB的抽象,通过JCB实施对作业管理和调度

作业调度的功能

调度算法

相关概念

CPU利用率

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

系统吞吐量

单位时间内完成的作业数量
吞吐量 = 总共完成了多少道作业 / 总共花了多长时间

周转时间

用户的作业从提交到系统,到作业被完成为止这段时间间隔
周转时间 = 作业完成时间 - 作业提交时间
平均周转时间 = 各个作业周转时间之和 / 作业数
带权周转时间 = 作业周转时间 / 作业实际运行的时间 =( 作业完成时间 - 作业提交时间 )/ 作业实际运行时间
平均带权周转时间 = 各作业带权周转时间之和 / 作业数

等待时间

处于等待处理及状态时间之和
image.png

响应时间

用户提交请求到首次响应所用的时间
image.png

FCFS(先来先服务)

image.png
image.png

SJF(短作业优先算法)

image.png
image.png
image.pngimage.png

HRRN(高响应优先算法)

image.png
image.png
image.png

RR(时间片轮转调度算法)

image.png

  • 如果时间片太大,使得每个进程都可以在一个时间片内完成,则会退化为先来先服务调度算法,且会增大进程响应时间,因此时间片不能太大
  • 如果时间片太小,会导致进程频繁切换,系统花费大量时间处理进程切换,从而导致实际执行进程的时间比例减少,因此时间片不能太小

image.png
image.png
image.png
image.png
image.png
如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。
另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小。
一般来说,设计时间片时要让切换进程的开销占比不超过1%

优先级算法

image.png

非抢占式

image.png

抢占式

image.png

image.png

多级反馈调度算法

image.png
image.png
image.png

前置

image.png

What

image.png

系统调用和库函数

image.png

系统调用背后的过程

image.png
image.pngimage.png