处理器管理
主存中存在的进程数量是多于处理器数目的,那么如何动态的把处理器分配给就绪队列中的一个进程,使之执行,处理器调度是操作系统设计的核心问题之一
处理器调度分级
对于不同的系统,如多道批处理系统、分时系统和实时系统中,采用的是不同的调度方式和算法
高级调度
高级调度又称为作业调度或长程调度,主要是根据某种算法,把外存上处于后备队列中的那些作业调入内存,调度对象是作业(Job)
在批处理系统中,是以作业为基本单位从外存调入内存的,作业不仅包含了通常的程序和数据,而且还有一份作业说明书,系统根据作业说明书来对程序进行控制,当作业进入系统时,批处理系统为每个作业建立一个作业控制块(JCB,Job Control Block),保存了系统对作业进行管理和调度所需的全部信息
作业调度就是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,并按照一定的算法,从外存的后备队列中选取某些作业调入内存,为它们创建进程、分配资源
低级调度
低级调度又称为进程调度或短程调度,调度的对象是进程,用于决定就绪队列中的哪个进程获得处理器,然后再由分派程序执行把处理器分配给该进程的具体操作
主要功能
- 保存处理器的现场信息
- 按某种算法选区进程
- 把处理器分配给进程
中级调度
中级调度是为了提高内存利用率和系统吞吐量,使那些暂时不能运行的进程不再占用内存资源,将它们调至外存上等待,此时进程的状态为就绪驻外存状态或挂起状态
进程调度算法
执行的进程数目是要多于处理器的数目的,所以需要处理器去决定下一次运行哪个进程
先来先服务调度算法
先来先服务(FCFS)调度算法是从就绪队列中选出一个最先进入该队列的进程,为之分配处理器,一直运行到完成或者发生某事件而阻塞才放弃处理器
FCFS算法有利于长作业,而不利于短作业
优点是实现简单,公平。缺点是没有考虑到系统中各种资源的综合使用,导致短作业等待时间比实际运行的时间长得多
短作业优先调度算法
短作业优先(SJF)调度算法是指对短作业优先调度,会从就绪队列中选出一个估计运行时间最短的作业,将处理器分配给它,使它一直执行到完成或发生某事件而被阻塞放弃处理器
SJF算法对长作业不利,可能会由于总是优先调度短作业,而导致长作业长期不被调度;且不能保证紧迫性作业会被及时处理;作业的估计运行时间是根据用户所提供的估计运行时间而定的,时间并不准确,导致该算法并不一定能真正做到短作业优先
高优先权优先调度算法
高优先权优先(FPF)调度算法会把处理器分配给就绪队列中优先权最高的进程,且其中又分为了非抢占式和抢占式优先权调度
至于优先级的制定,可以有多种方式,可以使用高响应比优先调度算法,公式为优先权=(等待时间+要求服务时间)/要求服务时间,该算法使得短作业和长作业都不会等待太久,不过由于每次进行调度前都要进行计算响应比,所以会增加系统的开销
时间片轮转调度算法
确定好时间片,在执行时,如果时间片用完,则会进行中断,并将其送到就绪队列尾部
在多级反馈队列调度算法中会设置多个就绪队列,并为各个队列赋予不同的优先级,优先级越高,获得的时间片越长