处理机三级调度讲解与分析

时间:2022-07-02 14:25:20

关于操作系统处理机的调度类型可以分为三个级别,他们分别是高级调度、中级调度以及低级调度。他们对应的处理对象与工作目标均有不同。

首先说说高级调度,该调度又称为作业调度,其主要目标根据一定的调度算法从外存中选择若干个作业调入内存,并为它们分配必要的资源同时为这些作业创建相应的进程,等待进程调度程序对其执行调度。其操作对象是作业,同时这种调度的频率较低,调度周期通常是几分钟甚至是几小时。

再来说说低级调度,该调度又称为进程调度,它决定就绪队列中的那些进程将获得处理机从而进入执行阶段。在批处理、实时和分时系统中,都必须配置进程调度。其工作目标主要是按照某种算法从就绪队列中选择进程并为其分配处理机,同时需要保存处理机的现场信息,以便于程序执行中断后可以快速恢复现场。这种调度的频率最高。同时进程调度又可分为剥夺方式和非剥夺方式。非剥夺方式顾名思义一旦进程获得处理机便一直执行直到进程完成或发生阻塞才释放处理机,该过程中不允许其他进程抢占处理机。因此剥夺方式就是进程获得处理机在执行的过程中根据某种原则可以剥夺该进程的处理机供自己执行。剥夺原则有:优先权原则,短进程原则、时间片原则等。

最后是中级调度,该调度又称为中程调度,之所以放在最后是因为该调度被引入的主要目标是提高内存的利用率和系统吞吐量。由于在进程调度过程中,就绪队列可以存放的进程队列有限,为了给一些需要立即执行的进程腾出内存空间可以将一些暂时不需要执行的进程移到外存中,此时被移到外存中的进程处于挂起状态。

说了三种调度类型,下面就刚才所讲的作业调度介绍四种较常用的进程调度算法:

一种是先来先服务算法(FCFS,first come first serve),该算法只考虑进程进入就绪队列的先后顺序,总是选择最先进入就绪队列的进程为其分配处理机资源。该算法较易实现但是对于实时系统不适用。

一种是短作业优先算法(SJF shortest job first),该算法的基本思想是从就绪队列中选择一个估计运行时间最短的进程为其分配处理机资源。该算法也较易实现,但是存在一个缺点就是对于处理时间较长的进程可能会一直等待。

还有一种常用的就是优先级调度算法(FPF),其基本思想是为就绪队列中的每一个进程分配一个优先级,每次从就绪队列中选择一个优先级最高的进程为其分配处理机资源。该算法相对于前两种算法复杂一些,但是实用性较强。该算法分为两种,一种是抢占优先权算法,另一种是非抢占优先权算法,和前面的剥夺方式和非剥夺方式的区别差不多,前者适用于实时系统,后者适用与批处理系统和分时系统。

最后一种是时间片轮转算法,该算法按照先来先服务的原则,将就绪进程排成一个队列,每次调度时,将处理机资源分配给队首进程,并为其分配一个时间片,在该时间片内若进程未执行完,则剥夺其处理机资源并分配给下一个进程,同时将该进程送到队尾。一般时间片的大小有系统对响应时间的要求、就绪队列中的进程数以及系统处理能力决定。

本文章参考http://blog.chinaunix.net/uid-27006331-id-3274637.html。