一个批处理型的作业,从进入系统并驻留在外存的后备队列上开始,直至作业运行完毕,可能要经历的三级调度:
- 高级调度
又称作业调度、长程调度、接纳调度
作用:把外存上处于后备队列中的作业调入内存,并为它们创建进程、分配资源、排在就绪队列上,准备执行。
分时系统、实时系统,通常不需要作业调度。
- 中级调度
又称中程调度。
目的:提高内存利用率和系统吞吐率。
作用:使暂时不能运行的进程从内存调至外存,进入就绪驻外存状态或挂起状态。把外存上又具备运行条件的就绪进程,重新掉入内存,并修改为就绪状态,挂在就绪队列上。
又称对换。
- 低级调度
也称为进程调度、短程调度。
作用:决定就绪队列中的哪个进程应获得处理机,然后由分派程序执行把处理机分配给该进程的具体操作。
在OS中都必须配置。
进程调度的两种调度方式
- 非抢占方式
- 抢占方式
非抢占方式
一旦处理机分配给某进程后,便让该进程一直执行,直至该进程完成或阻塞时,才把处理机分配给其他进程。
非抢占方式引起进程调度的因素
(1) 进程执行完毕,或因发生某种事件而不能继续执行;
(2)执行中的进程因提出I/O请求而暂停执行
(3)在进程通信或同步过程中执行类某种原语操作,如P操作(WAIT操作)、BLOCK原语、WAKEUP原语等。
抢占方式
允许暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。
抢占原则
(1)优先权原则。优先权高的进程抢占处理机。
(2)短作业优先原则。短作业(进程)抢占当前较长作业(进程)的处理机。
(3)时间片原则。各进程按时间片运行,当一个时间片用完后重新调度。
调度队列模型
- 仅有进程调度的调度队列模型
- 有高级和低级调度的调度队列模型
- 同时有三级调度的调度队列模型
仅有进程调度的调度队列模型
- 通常,把就绪进程组织成FIFO队列,每当创建新进程时排在就绪队列的末尾,按时间片轮转方式进行。
进程在执行时,出现三种情况:
(1)任务在时间片内完成,进程便在释放处理机后进入完成状态。
(2)任务在时间片内未完成,OS便将该任务再放入就绪队列的末尾。
(3)在执行期间,进程因为某事件而被阻塞后,被OS放入阻塞队列。
有高级和低级调度的调度队列模型
高级调度是作业调度
与前一模型的差别:
(1)就绪队列的形式。批处理系统中最常用的是优先权队列。也可采用无序链表方式。
(2)设置多个阻塞队列。
有三级调度的调度队列模型
- 调出时,可使进程状态由内存就绪转变为外存就绪,由内存阻塞转变为外存阻塞。
- 在中级调度使外存就绪转变为内存就绪。