如果有10个进程P1,P2 ... P10,则由调度程序使用循环策略调度以访问CPU。 现在,当Process P1使用CPU并且当前时间片已过期时,需要抢占P1并且需要调度P2。但是由于P1正在使用CPU,谁先抢占P1并安排P2? 我们可能Scheduler会这样做,但是当P1由P1持有时,调度程序如何运行?
答案 0 :(得分:3)
这就像jcoder所说,但让我详细说明(并回答而不是评论)
基本上,当你的操作系统启动时,它会初始化一个中断向量,其中给定中断的CPU调用适当的中断处理程序。
操作系统也会在启动时检查可用的硬件,它会检测到你的电路板有x个定时器。
定时器只是使用给定时钟速率打勾的硬件电路,它们可以设置为在给定时间后发送中断(每个时间通常具有不同的精度,具体取决于其时钟速度和其他因素)
操作系统检测到定时器后,设置其中一个定时器,例如,每隔50 ms发送一次中断;现在每隔50毫秒,CPU就会停止正在进行的操作并调用该中断处理程序,通常是调度程序代码,后者将检查当前正在运行的进程是什么,并根据调度策略决定是否保留它。
与大多数操作系统一样,调度程序是一种被动的东西,只有在某些事件发生时才会起作用。
答案 1 :(得分:-1)
基于你的问题P1需要被抢占,P2需要安排,所以有一个CPU调度器的概念(CPU调度程序是操作系统的过程,持续观察运行过程)的责任,选择进程之间的进程准备执行的内存,并将CPU分配给其中一个。
如果进程执行CPU调度:
Dispatcher模块将CPU控制权交给CPU调度程序选择的进程;