Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 操作系统如何使中断的进程始终在指定的CPU上运行?_Linux_Linux Kernel_Operating System_Interrupt_Interrupt Handling - Fatal编程技术网

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

Linux 操作系统如何使中断的进程始终在指定的CPU上运行?,linux,linux-kernel,operating-system,interrupt,interrupt-handling,Linux,Linux Kernel,Operating System,Interrupt,Interrupt Handling,我知道中断可以随时出现,并破坏当前进程上下文的执行。但我只是想知道当中断句柄完成时,操作系统(如Linux)如何保持当前中断进程仍在本地CPU上运行,而不会被调度到其他CPU?中断是由执行进程处理的。如果Fred的进程正在运行,而CPU因Bill的进程读取此磁盘而中断,Fred的进程将处理Bill的中断。中断处理程序完成后,它会执行一条中断返回指令(确切名称因系统而异),Fred的进程会在中断时选择它所在的位置 运行进程在整个中断期间保持运行。中断的是进程的指令流;并不是说这个过程被另一个过程打

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

中断是由执行进程处理的。如果Fred的进程正在运行,而CPU因Bill的进程读取此磁盘而中断,Fred的进程将处理Bill的中断。中断处理程序完成后,它会执行一条中断返回指令(确切名称因系统而异),Fred的进程会在中断时选择它所在的位置

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


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

在打开CONFIG_PREEMPT的linux内核中,在中断处理程序完成后,有两种选择。 一个是由用户3344003编写的在中断持续运行之前运行的进程。 另一个是调度程序可以选择另一个进程而不是该进程。(\t如果需要重新调度)


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

您可能需要在后台查看启动程序。@merlin2011:谢谢您的提示!但我不认为这些答案能回答我的问题。你是绝对正确的,但是有适当的背景会帮助你理解任何有人写的解决方案。如果它回答了这个问题,我会投票将你的问题标记为重复请注意,中断不一定会导致上下文切换。中断本身并不会导致一个错误;由处理程序决定是否运行调度程序。“
运行的进程在整个中断过程中保持运行。中断的是进程的指令流,而不是进程被另一个指令流中断。
”。你能详细解释一下吗?我不能很好地理解它。谢谢!