【处理机调度】
在多道程序系统中,处理机的分配与运行均以进程为基本单位,对处理机的管理,就是对进程的管理,除了完成进程控制、进程同步、进程通信外,处理机还需要进行调度
处理机调度的实质是一种资源分配,即按照某种算法,将处理机资源分配给就绪队列中的一个
作业进入系统驻留在外存的后备队列上,再到调入内存运行完毕,可能经历下述三级调度:
1.高级调度
高级调度又称长程调度或作业调度,其调度的对象是作业,即一个具体的任务,用户每提交一个任务,本质是让操作系统启动一个程序来处理这个提交的任务
在批处理系统中,作业进入系统后先驻留外存,故需要有作业调度;在分时系统中,为及时响应,作业由终端直接送入内存,故也不需作业调度;在实时系统中,通常不需要作业调度
每个作业只进行一次调度,在进行作业调度时,主要完成以下任务:
- 从外存的后备队列中选择哪些作业调入内存
- 创建进程并分配必要的资源
- 将创建的进程排在就绪队列上,准备执行
因此,每个作业在调入时会建立 PCB,在调出时会撤销 PCB,同时对任何一个作业,在调入时都需要作出两个决定:
- 接纳多少作业:取决于多道程序度,应根据系统规模与运行速度等情况综合考虑
- 接纳哪些作业:取决于采用的调度算法,例如先来先服务、短作业优先等
一个作业运行完毕退出系统时即触发重新调度一个新作业入内存,周期较长,大约几分钟一次,因而也允许作业调度算法花费较多的时间
2.中级调度
中级调度又称内存调度,引入中级调度的目的是为了提高内存利用率与系统吞吐量,其是按照一定的策略将处于挂起状态的进程调入内存,其运行频率介于进程调度与作业调度之间
在内存不够时,操作系统会应将那些暂时无法运行的进程调至外存等待,此时进程的状态称为就绪驻外存状态(挂起状态),当具备运行条件且内存有空闲时,会通过中级调度来决定将位于外存上的哪些就绪进程调度内存,并修改状态为就绪态
3.低级调度
低级调度又称短程调度或进程调度,是最基本的一种调度,在多道批处理、分时、实时三种类型的 OS 中,都必须配置这级调度,其调度的对象是进程
简单来说,进程调度是按照某种方法,从就绪队列中选择进程,并由分派程序将处理机分配给它
进程调度的运行频率最高,这使得其算法不能太过复杂,以免占用太多的 CPU 时间,在分时系统中,通常每 10~100ms 便进行一次进程调度
【调度队列模型】
不论高级、中级或者低级调度,都涉及到进程队列,由此形成了三类调度队列模型:
- 仅有进程调度的调度队列模型:常用于分时系统,用户键入的命令与模型均直接送入内存,其调度对象是处于就绪状态的进程
- 具有高级和低级调度的调度队列模型:常用于批处理系统,在批处理系统中,必须要具有作业调度
- 同时具有三级调度的调度队列模型:引入中级调度后,进程的状态发生了变化,就绪态扩为内存就绪、外存就绪,阻塞态扩为内存阻塞、外存阻塞,使得数据在内外存间互换