操作系统(十三)处理机调度的概念、层次
2.2.1 处理机调度的概念、层次
目录
2.2.1.1 处理机调度的概念
一般来说在多道程序系统中,作业数往往是多于处理机个数的,为了合理分配处理机资源这就需要确定某种规则来决定处理这些在就绪队列等待的任务的顺序,这就是“调度”研究的问题。
2.2.1.2 处理机调度的三个层次
高级调度(作业调度):根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说,它的调度对象是作业。所谓作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。作业调度是以作业为单位从外存调入内存的。
作业进入系统时系统会为每个作业建立一个JCB(Job Control Block)根据作业类型将它插入相应的后备队列中。作业调度程序依据一定的调度算法来调度它们,被调度到的作业将会装入内存。在作业运行期间,系统就按照 JCB 中的信息对作业进行控制。当一个作业执行结束进入完成状态时,系统负责回收分配给它的资源,撤消它的作业控制块。
中级调度(内存调度):为了不让暂时不运行的程序占用CPU,中级调度可以先将这些进程放到外存等待挂起,等CPU有空闲时再将其上处理机运行。中级调度就是决定让哪个挂起状态进入CPU运行。这里我们要注意,PCB不会因为进程挂起而进入外存,他会常驻内存。
在这里我们引入了挂起的概念,挂起又可以分为就绪挂起以及阻塞挂起,那么进程的状态就由五态变为了七态。
可能这张图看起来有点复杂,其实就是在五态的前提下加入了挂起与**,我们需要注意,挂起不同于阻塞,阻塞的进程还在内存之中而挂起的进程却调入了外存。
低级调度(进程调度):是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒。
2.2.1.3 小结
调度层次 | 做什么 | 调度位置 | 频率 | 进程状态 |
高级调度(作业调度) |
按照某种规则,从后备队列中选择合适的作业将其调入内存,并为其创建进程
|
外存到内存(面向作业)
|
低 |
无->创建态->就绪态
|
中级调度(内存调度) |
按照某种规则,从挂起队列中选择合适的进程将其数据调回内存
|
外存到内存(面向进程) | 中 |
挂起态->就绪态
(阻塞挂起->阻塞态)
|
低级调度(进程调度) |
按照某种规则,从就绪队列中选择一个进程为其分配处理机
|
内存到CPU | 高 |
就绪态->运行态
|