何时调度¶
来源:
操作系统 / note/进程管理/调度/何时调度.md
有这么几个时机 1. 创建一个新进程之后(进程是由进程创建的),先运行父进程还是子进程,这可以由调度程序任意选择 2. 当一个进程结束后,需要调度,从就绪进程中选择一个进程运行,如果没有的话,就运行一个系统提供的空闲进程 3. 当一个进程阻塞后,需要调度,比如因为信号量的原因,需要等待 4. 当I/O中断发生之后,需要调度。如果中断来自I/O设备,设备完成工作之后,是否让新就绪的程序运行? 5. 时钟中断:硬件时钟会提供特定频率的周期性中断,可以在这些时间执行调度程序
根据如何处理时钟中断,可以将调度算法分为两类
非抢占式调度算法¶
进程可以一直运行,直到堵塞,或者进程自动释放CPU 也就是说,时钟中断并不会挂起进程,不会进行调度
抢占式调度算法¶
相比之下,抢占式调度算法选择一个进程,并使其最多运行一段时间。如果它在时间间隔结束时仍在运行,则会暂停,调度器会选择另一个进程来运行(如果可用)。抢占式调度需要在时间间隔结束时发生时钟中断,以便将CPU的控制权还给调度器。如果没有可用的时钟,非抢占式调度是唯一的选择。