处理机的调度与调度算法(四)

总览
处理机的调度与调度算法(四)_第1张图片


调度的基本概念

当有一对任务需要处理,但由于资源有限,这些任务没法同时处理。这就需要确定某种规则决定处理这些任务的顺序,这就是“调度”研究的问题。

在多道程序中,进程的数量往往多于处理机,这样不可能同时并行处理多个进程。

处理机调度:就是从就绪队列中按照一定的算法选择一个进程将处理机分配给它运行,以实现进程的并发执行。

高级调度(作业调度)

由于内存有限,有时无法将用户提交的所有作业全部放入内存,因此就需要确定某种规则来决定将作业调入的顺序。

高级调度(作业调度):按一定的原则从外村上处于后备队列的作业中选择一个(或多个),给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使他们获得竞争处理机的权利。

高级调度是辅存(外村)与内存之间的调度。每个作业只调入一次,调出一次,作业调入时建立PCB,调出才撤销PCB。高级调度主要是指调入的问题,因为调入的时机需要操作系统确认,调出的时机必然是作业运行结束才调出。

被选择进入内存的作业越多,每个作业所获得的CPU时间就越少。

中级调度(内存调度)

引入虚拟存储技术后,可将暂时不运行的进程调至外存等待。等它重新具备运行条件且内存又有空闲时,再重新调入内存。

好处与目的:提高了内存利用率和系统吞吐量

暂时调到外存等待的进程状态为挂起状态。值得注意的是,PCB并不会一起调到外存,而是会常驻内存。PCB中会记录进程数据在外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保存对各个进程的控制与管理。被挂起的进程PCB会被放到挂起队列中。

中级调度(内存调度):就是要决定哪个处于挂起状态的进程重新调入内存。

一个进程可能会被多次调出,调入,因此中级调度发生的频率要比高级调度更高。

低级调度(进程调度)

低级调度(进程调度):它的主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。

进程调度室操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。

进程调度的频率很高,一般几十毫秒一次。


三层调度的联系与对比
处理机的调度与调度算法(四)_第2张图片
处理机的调度与调度算法(四)_第3张图片


调度算法总览
处理机的调度与调度算法(四)_第4张图片


调度算法1

先来先服务
处理机的调度与调度算法(四)_第5张图片
短作业优先
处理机的调度与调度算法(四)_第6张图片
高响应比优先
处理机的调度与调度算法(四)_第7张图片


调度算法2
处理机的调度与调度算法(四)_第8张图片
时间片轮转调度算法
处理机的调度与调度算法(四)_第9张图片
优先级调度算法
处理机的调度与调度算法(四)_第10张图片
多级队列调度反馈调度算法

1、设有N个队列(Q1,Q2…QN),其中各个队列对于处理机的优先级是不一样的,也就是说位于各个队列中的作业(进程)的优先级也是不一样的。一般来说,优先级Priority(Q1) > Priority(Q2) > … > Priority(QN)。怎么讲,位于Q1中的任何一个作业(进程)都要比Q2中的任何一个作业(进程)相对于CPU的优先级要高(也就是说,Q1中的作业一定要比Q2中的作业先被处理机调度),依次类推其它的队列。

2、对于优先级最低的队列来说,里面是遵循时间片轮转法。也就是说,位于队列QN中有M个作业,它们的运行时间是通过QN这个队列所设定的时间片来确定的;对于其他队列,遵循的是先来先服务算法,每一进程分配一定的时间片,若时间片运行完时进程未结束,则进入下一优先级队列的末尾。

3、各个队列的时间片是一样的吗?不一样,这就是该算法设计的精妙之处。各个队列的时间片是随着优先级的增加而减少的,也就是说,优先级越高的队列中它的时间片就越短。同时,为了便于那些超大作业的完成,最后一个队列QN(优先级最低的队列)的时间片一般很大(不需要考虑这个问题)。

你可能感兴趣的:(操作系统)