中断上下文和进程上下文

上下文指的就是 在调度的切换过程就叫 上下文。(这个过程需要保存当前 的一些参数)

内核调度的切换就叫中断上下文,他的目的就是获得cpu的调度全,在这里没有进程的概念 整个内核就一个init 进程(多cpu除外)

进程上下文 就是指用户进程之间的切换 过程中保存的一些 当前进程的运行参数。

下面有个问题: 

   1. 问什么中断上下文中不能有sleep

     首先中断实在内核态下的 所以理论上他是单进程的,若果你用sleep 那么其他的程序就无法得到cpu (中断禁止抢占) 这样就造成了cpu的浪费。

    其次 如果在中断中调用了sleep 那么由于中断是不允许抢占的所以在设计是就没有想进程那样有保存中断调度的描述 所以当你sleep(也和中断差不多 都是cpu的一个调度) 当sleep 完成后由于中断被swicth 出去了由于没有记录机制所以这个中断就无法 在返回执行了。

     再者由于由于中断工作在内核态 我们知道内核是一个进程 多有应用层进程公用的, 那摩如果你a 中断中有sleep 如果被b中断切换出去了 那么由于在同一个init 京城中 所以会导致b也可能sleep了这就导致了a b 的混乱,在这你怎么唤醒a的sleep呢。

所以有种种原因linux 在设计是就要求中断中不能有 sleep。  如果有kernel就无从实施。

猜你喜欢

转载自blog.csdn.net/sdc20102010/article/details/82950200