“内核抢占”和“中断”之间有什么区别吗?

时间:2012-02-27 22:23:39

标签: linux linux-kernel interrupt preemption

我刚读了一篇文章说:

  

控制中断系统的原因通常归结为需要提供同步。通过禁用中断,可以保证中断处理程序不会抢占当前代码。此外,禁用中断还会禁用内核抢占。但是,禁用中断传送或禁用内核抢占都不会为来自其他处理器的并发访问提供任何保护。

所以我只是想知道中断和内核抢占之间的区别。

或者我们可以说禁用内核抢占还会禁用中断吗?

2 个答案:

答案 0 :(得分:12)

当进程中断时,内核会运行一些代码,这可能与进程的作用无关 完成后,可能会发生两件事: 1.同样的过程将再次获得CPU 2.一个不同的进程将获得CPU。目前的进程被抢先一步。

因此抢占只会在中断后发生,但中断并不总是会导致抢占。

答案 1 :(得分:2)

他们是不同的。中断甚至可能发生在内核的上下文之外,因此更改内核处理抢占的方式不会影响中断。看来,在你的文章的上下文中,内核抢占依赖于中断工作(可能是因为它是使用某种计时器实现的)。