操作系统如何保持中断进程始终在指定的CPU上运行?

时间:2015-11-24 03:31:42

标签: linux linux-kernel operating-system interrupt interrupt-handling

我知道中断可以随时出现并打破当前进程上下文的执行。但我只是想知道中断句柄何时完成,操作系统如Linux如何能够保持当前中断的进程仍然在本地CPU上运行,而不会被调度到其他CPU?

2 个答案:

答案 0 :(得分:0)

执行过程处理中断。如果Fred的进程正在运行,而CPU得到Bill读取该磁盘的进程引起的中断,Fred的进程会处理Bill的中断。中断处理程序完成后,它会执行一个INTERRUPT RETURN指令(确切的名称因系统而异),Fred的进程会在它被中断的地方找到它。

正在运行的进程在整个中断期间继续运行。进程的指令流被中断;并不是说这个过程被另一个过程打断了。

但是,中断处理程序可能会导致上下文切换到另一个进程。

答案 1 :(得分:0)

在打开CONFIG_PREEMPT的linux内核中,中断处理程序完成后,有两种选择。 一个是在用户3344003写入的中断保持运行之前运行的进程。 另一个是调度程序可以选择另一个进程而不是进程。(_ TIF_NEED_RESCHED)

如果禁用CONFIG_PREEMPT,则在中断之前运行的进程始终保持运行。