为了实现不同的CPU调度目标,不同系统可以使用不同的进程调度方式。一般来说,进程的调整方式可分为非抢占式(非剥夺式)调度和抢占式(剥夺式)调度两类。
(1)非抢占式调度。在使用非抢占式调度方式的系统中,进程调度算法选中一个进程后就会让该进程一直运行下去,直到该进程运行结束自动释放CPU的使用权;或者在运行过程中因发生某等待事件而阻塞时,才将CPU的使用权返还给进程调度程序。非抢占式调度的优点是实现简单、系统开销小。但系统出现了紧急事件时不能立即处理,即实时性差。因此,非抢占式调度方式不适用于实时系统和分时系统。
(2)抢占式调度。在没有发生等待事件的情况下,也允许进程调度程序暂停当前运行进程的执行,并按照某种原则将当前运行进程占用的CPU分配给另一个更重要、更紧迫的进程使用。在这种调度方式下,被暂停运行的进程其他所需资源均已满足而只是被剥夺了CPU的使用权,故其状态应由运行状态返回到就绪状态,并将其PCB插入进程就绪队列。常用的抢占原则主要有以下两种。
①高优先级原则。这种抢占原则允许拥有更高优先级的进程抢占当前运行进程所使用的CPU。在使用高优先级抢占原则的系统中,如果有更高优先级的就绪进程到达时,则进程调度程序立即暂停当前运行进程的执行(由运行态变为就绪态),然后将CPU分配给这个拥有更高优先级的就绪进程使用。
②时间片原则。在分时系统中各就绪进程按照时间片轮流执行,当运行进程的时间片到时,则进程调度程序立即暂停当前运行进程的执行(由运行态变为就绪态),然后将CPU分配给下一个就绪进程。
因此,抢占式调度方式适合于大多数实时系统以及所有分时系统。抢占式调度能够防止一个进程较长时间占用CPU,尤其是能够满足实时系统对响应时间的要求,且能获得较好的响应时间。但是,抢占式调度会增加系统中进程切换的频率,与非抢占式调度相比则增加了进程切换的开销。
2.进程调度的时机
进程调度程序调度性能的优劣将直接影响CPU的利用率,因此什么时候运行进程调度程序是操作系统处理进程调度的关键。进程调度的原则是始终使CPU处于忙状态,一旦CPU空闲就立即进行调度。引起进程调度程序运行的时机主要有两个:一个是当前运行进程执行结束而终止,或因等待某个事件的完成而无法继续执行,这时就需要启动进程调度程序来选择一个新的就绪进程投入运行;另一个是在抢占式调度系统中,进程就绪队列中出现了优先级更高的进程,或当前运行进程的时间片已经用完,这时需要剥夺当前运行进程的CPU使用权,并将其分配给更高优先级的就绪进程或以时间片为单位轮转的下一个就绪进程。引起进程调度的原因主要有以下4个。
(1)创建一个新进程后。创建一个新进程后父进程和子进程都处于就绪状态,这时需要确定是父进程先运行还是子进程先运行,即可以由进程调度程序来选择。
(2)运行进程终止。运行进程正常结束时需要向系统发出一个“进程结束”的系统调用。这时进程调度程序运行,并从进程就绪队列中选择一个新的就绪进程,然后将CPU分配给它。
(3)运行进程阻塞。当运行进程因发生了某种等待事件(如I/O请求)或阻塞在某个信号量时,进程调度程序则调度另一个就绪进程运行。
(4)支持抢占式调度的系统中,即使没有新的就绪进程出现,为了让所有就绪进程能够轮流使用CPU,也会在下面两种情况下引起进程调度。(www.xing528.com)
①时间片到。发现当前运行进程时间片到时引起进程调度,将CPU分配给下一个就绪进程。
②进程的优先级发生变化。在按优先级调度的系统中,当进程优先级发生变化时引起进程调度。
在以下三种情况下,现代操作系统不允许进行进程的调度和切换。
(1)中断处理过程中。由于中断处理通常不属于某一进程,因此不应作为进程的程序段而被剥夺CPU。
(2)进程在操作系统内核的临界区中。用户进程通过陷入进入操作系统内核,为实现对临界区的互斥访问,通常以加锁方式防止其他进程进入该临界区。为了加快对临界资源的释放,在该用户进程访问临界资源期间不允许切换到其他进程去执行。
(3)在需要完全屏蔽中断的原子操作执行过程中。操作系统中常用的原子操作加锁、开锁、中断现场保护和恢复等,原子操作在执行过程中不允许进行进程切换。
3.进程调度实现
出现进程调度后,主要完成的任务是进程切换。
(1)保存当前运行进程的现场信息。当运行进程因某种原因(如时间片到或等待I/O)需要放弃CPU时,进程调度程序将运行进程的CPU现场信息,保存到内存该进程PCB中的CPU状态保护区。
(2)选择即将运行的进程。进程调度程序根据某种调度算法从进程就绪队列中挑选一个进程,把它的状态由就绪状态改为运行状态,并准备将CPU分配给它。
(3)为新选中的进程恢复现场。将选中进程在内存PCB保存的CPU现场信息送入CPU的各寄存器,然后将CPU的使用权交给选中的进程,使它从上次中断运行的断点处恢复正常运行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。