进程调度
一、进程调度任务
保存处理机的现场信息,如程序计数器、多个通用寄存器中的内容等;
按照某种算法选取进程,将其状态改为运行状态;
把处理器分配给进程,将进程控制块内有关处理器现场。信息装入处理器相应的寄存器中,处理器的控制权交给该进程,让它从上次断点处恢复运行。
二、进程调度机制
- 排队器:将所有就绪的进程按照一定的策略排成一个或多个队列
- 分派器:取出进程调度程序选中的进程,进行进程间上下文切换、分配处理器
- 上下文切换器:将当前进程的上下文信息保存到相应单元,装入分派程序的上下文;移出分派程序的上下文,装入新选进程的现场信息
三、进程调度方式
- 非抢占式:一旦处理机分配给某个进程后,就一直让其运行直到完成或者发生某事件而阻塞。
- 抢占式:允许调度程序根据某种规则,暂停某个正在执行的进程。
四、进程调度算法
- FCFS先来先服务算法(非抢占式)
按照作业进入后备作业队列的先后次序来挑选作业
优点:实现简单
缺点:效率不高,性能不好;有利于长作业,不利于短作业
短作业优先算法(非抢占式)
每次从后备作业队列中挑选估计服务时间最短的一个或几个作业优点:优先照顾短作业,可以降低平均等待时间,提高吞吐量
缺点:不利于长作业,长作业可能一直处于等待状态,容易出现饥饿现象;未考虑作业的优先紧迫程度,不能用于实时系统HPF优先级调度算法(非抢占式)
按照优先级由高到低的顺序进行调度HRRF高响应比优先调度算法(非抢占式):适用于批处理系统
每次进行作业调度时,先计算后备作业队列中每个作业的响应比,挑选响应比最高的作业。优点:能够避免饥饿现象,兼顾长短作业
缺点:计算响应比开销大RR时间片轮转调度算法(抢占式):适用于分时系统
给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行。切换时机:(1)时间片未用完,进程便完成;(2)时间片用完,终端处理程序被激活,进程若未完成被送入就绪队列尾部
优点:兼顾长短作业
缺点:平均等待时间较长,上下文切换较费时多级反馈队列调度算法(抢占式):适用于各种作业环境
设置多个就绪队列,每个队列赋予不同的优先级;每个队列采用FCFS算法,新进程进入时首先放入第一队列末尾,若第一个时间结束未完成,将其转入第二队列末尾……。队列按优先级调度,仅当前一队列空闲时才调用下一队列。优点:兼顾长短作业,有较好的响应时间,可行性强