我知道中断可以随时出现并打破当前进程上下文的执行。但我只是想知道中断句柄何时完成,操作系统如Linux
如何能够保持当前中断的进程仍然在本地CPU上运行,而不会被调度到其他CPU?
答案 0 :(得分:0)
执行过程处理中断。如果Fred的进程正在运行,而CPU得到Bill读取该磁盘的进程引起的中断,Fred的进程会处理Bill的中断。中断处理程序完成后,它会执行一个INTERRUPT RETURN指令(确切的名称因系统而异),Fred的进程会在它被中断的地方找到它。
正在运行的进程在整个中断期间继续运行。进程的指令流被中断;并不是说这个过程被另一个过程打断了。
但是,中断处理程序可能会导致上下文切换到另一个进程。
答案 1 :(得分:0)
在打开CONFIG_PREEMPT的linux内核中,中断处理程序完成后,有两种选择。 一个是在用户3344003写入的中断保持运行之前运行的进程。 另一个是调度程序可以选择另一个进程而不是进程。(_ TIF_NEED_RESCHED)
如果禁用CONFIG_PREEMPT,则在中断之前运行的进程始终保持运行。