进程是如何调度的?
进程是如何调度的?
题眼:抢占式和非抢占式
进程调度可以分为抢占式和非抢占式。
非抢占方式。只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。
抢占方式。当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。
非抢占式:
● 先来先服务:非抢占式的调度算法。每次从就绪队列选择最先进入队列的进程,然后一直运行,直到进程退出 或被阻塞,才会继续从队列中选择第一个进程接着运行。特点:公平,实现简单。但不利于短作业以及I/O密集型进程。
● 短作业优先:非抢占式的调度算法。按照剩余执行时间最短的进程先执行。该算法可以减少平均等待时间。但是要预先知道进程的执行时间。特点:短作业优先算法的优点是能尽快处理完短作业,平均等待/周转时间等参数很优秀;但是容易长作业饥饿,实现困难。
● 高响应比优先算法:非抢占式。响应比为等待时间/服务时间,响应比高的先执行,可以避免饥饿现象。特点:a,b方式的平衡实现。
抢占式:
● 最短剩余时间优先(SRTN):最短作业优先的抢占式版本。当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待
● 时间片轮转调度:抢占式。给每个进程都分配一个时间片,时间片执行完毕就会切换进程,执行下一个进程,依次循环。此算法容易频繁的切换进程,浪费系统资源。(公平,但频繁切换,有开销)
● 多级反馈队列:抢占式。多级反馈队列调度算法是对其他算法的一个折中权衡。是「时间片轮转算法」和「最高优先级算法」的综合和发展。
一个特殊的方法:优先级调度:有抢占式也有非抢占式:按照设定优先级执行。抢占式是动态调整优先级,如按照运行时间调整优先级。非抢占式是创建进程就设定了。(适用实时系统,对低优先级进程不利)
参考回答:
进程的调度方式主要分为两大类,一种是非抢占式调度,另一种是抢占式调度。其中非抢占式调度主要有先来先服务调度、短作业优先调度和高相应比优先调度。而抢占式调度主要有最短剩余时间优先调度、时间片轮转调度以及多级反馈队列。还有一种比较特殊的调度方式是优先级调度,它既可以是抢占式的也可以是非抢占式的,如果它在进程创建的时候就已经固定的设置好了优先级,那么它就是非抢占式的;反之,如果它的优先级是可以动态变化的,那么它就是抢占式的。
