0%

处理机管理

处理机管理

主存中存在的进程数量是多于处理机数目的,那么如何动态的把处理机分配给就绪队列中的一个进程,使之执行,处理机调度是操作系统设计的核心问题之一

处理机调度分级

对于不同的系统,如多道批处理系统、分时系统和实时系统中,采用的是不同的调度方式和算法

高级调度

高级调度又称为作业调度或长程调度,主要是根据某种算法,把外存上处于后备队列中的那些作业调入内存,调度对象是作业(Job)

在批处理系统中,是以作业为基本单位从外存调入内存的,作业不仅包含了通常的程序和数据,而且还有一份作业说明书,系统根据作业说明书来对程序进行控制,当作业进入系统时,批处理系统为每个作业建立一个作业控制块(JCB,Job Control Block),保存了系统对作业进行管理和调度所需的全部信息

作业调度就是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,并按照一定的算法,从外存的后备队列中选取某些作业调入内存,为它们创建进程、分配资源

低级调度

低级调度又称为进程调度或短程调度,调度的对象是进程,用于决定就绪队列中的哪个进程获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作

主要功能

  • 保存处理机的现场信息
  • 按某种算法选区进程
  • 把处理器分配给进程

中级调度

中级调度是为了提高内存利用率和系统吞吐量,使那些暂时不能运行的进程不再占用内存资源,将它们调至外存上等待,此时进程的状态为就绪驻外村状态或挂起状态

调度算法

先来先服务调度算法

先来先服务(FCFS)调度算法是从就绪队列中选出一个最先进入该队列的进程,为之分配处理机,一直运行到完成或者发生某事件而阻塞才放弃处理机

FCFS算法有利于长作业,而不利于短作业

短作业优先调度算法

短作业优先(SJF)调度算法是指对短作业优先调度,会从就绪队列中选出一个估计运行时间最短的作业,将处理机分配给它,使它一直执行到完成或发生某事件而被阻塞放弃处理机

SJF算法对长作业不利,可能会由于总是优先调度短作业,而导致长作业长期不被调度;且不能保证紧迫性作业会被及时处理;作业的估计运行时间是根据用户所提供的估计运行时间而定的,时间并不准确,导致该算法并不一定能真正做到短作业优先

高优先权优先调度算法

高优先权优先(FPF)调度算法会把处理机分配给就绪队列中优先权最高的进程,且其中又分为了非抢占式和抢占式优先权调度

至于优先级的制定,可以有多种方式,可以使用高响应比优先调度算法,公式为优先权=(等待时间+要求服务时间)/要求服务时间,该算法使得短作业和长作业都不会等待太久,不过由于每次进行调度前都要进行计算响应比,所以会增加系统的开销

时间片轮转调度算法

确定好时间片,在执行时,如果时间片用完,则会进行中断,并将其送到就绪队列尾部

在多级反馈队列调度算法中会设置多个就绪队列,并为各个队列赋予不同的优先级,优先级越高,获得的时间片越长