当CPU有一堆任务要处理时,由于其资源有限,这些事情就没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。除了接下来将要说的进程调度,还有作业调度、内存调度等。
回顾一下进程的三态模型:
所谓进程调度,就是从进程的就绪队列(阻塞)中按照一定的算法选择一个进程并将CPU分配给它运行,以实现进程的并发执行。这是操作系统中最基本(最低级)的一种调度,在一般的操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。
所谓非抢占式的意思就是,当进程正在运行时,它就会一直运行,直到该进程完成或发生某个事件发生而被阻塞时,才会把CPU让给其他进程。
对应的,抢占式的意思就是,当进程正在运行的时,可以被打断,把CPU让给其他进程。
优点:公平、算法实现简单
最短作业优先算法和先到先服务恰好相反,先到先服务对短进程不利,而最短作业优先算法对长程不利。因为如果一直有短进程到来,那么长进程永远得不到调度,长进程有可能会饿死,处于一直等待短作业执行完毕的状态。
轮转调度算法对每个进程都一视同仁,就好比大家都排好队,一个一个来,每个人都运行一会儿再接着重新排队等待运行。
RR调度算法对所有的进程都是相同的策略,如果用户进程太多,可能会导致内核的服务进程响应跟不上。而在操作系统中,内核进程是比用户进程重要的多的,毕竟它关乎整个系统的稳定性。
最高优先级调度算法(HighestPriorityFirst,HPF)就是从就绪队列中选择最高优先级的进程进行运行。进程的优先级是怎么规定的呢?分为静态优先级或动态优先级:
另外,需要注意的是,最高优先级算法并非是固定的抢占式策略或非抢占式,系统可预先规定使用哪种策略:
THE END