当CPU被赋予用户进程时,谁在操作系统中运行调度程序?

时间:2014-03-12 15:28:42

标签: process operating-system cpu scheduler context-switch

如果有10个进程P1,P2 ... P10,则由调度程序使用循环策略调度以访问CPU。 现在,当Process P1使用CPU并且当前时间片已过期时,需要抢占P1并且需要调度P2。但是由于P1正在使用CPU,谁先抢占P1并安排P2? 我们可能Scheduler会这样做,但是当P1由P1持有时,调度程序如何运行?

2 个答案:

答案 0 :(得分:3)

这就像jcoder所说,但让我详细说明(并回答而不是评论)

基本上,当你的操作系统启动时,它会初始化一个中断向量,其中给定中断的CPU调用适当的中断处理程序。
操作系统也会在启动时检查可用的硬件,它会检测到你的电路板有x个定时器。

定时器只是使用给定时钟速率打勾的硬件电路,它们可以设置为在给定时间后发送中断(每个时间通常具有不同的精度,具体取决于其时钟速度和其他因素)

操作系统检测到定时器后,设置其中一个定时器,例如,每隔50 ms发送一次中断;现在每隔50毫秒,CPU就会停止正在进行的操作并调用该中断处理程序,通常是调度程序代码,后者将检查当前正在运行的进程是什么,并根据调度策略决定是否保留它。

与大多数操作系统一样,调度程序是一种被动的东西,只有在某些事件发生时才会起作用。

答案 1 :(得分:-1)

基于你的问题P1需要被抢占,P2需要安排,所以有一个CPU调度器的概念(CPU调度程序是操作系统的过程,持续观察运行过程)的责任,选择进程之间的进程准备执行的内存,并将CPU分配给其中一个。

如果进程执行CPU调度:

  1. 列表项
  2. 从跑步切换到等待状态
  3. 从运行状态切换到就绪状态
  4. 从等待准备开始
  5. 终止
  6. Dispatcher模块将CPU控制权交给CPU调度程序选择的进程;