CPU 如何知道它需要开始执行新线程的上下文?

How does the CPU know that it needs to start executing the context of a new thread?

如果您采用在 CPU 上执行线程的场景,并且随之而来的是可编程定时器中断。所以我的理解是 CPU 停止它对当前执行线程所做的事情,现在开始执行与中断相关的中断服务例程。现在,一旦 ISR 完成其代码的执行,调度程序就会加载下一个(最高优先级)线程的上下文,该线程将在 CPU 上执行。现在在这两种情况下,CPU 必须再次开始执行,ISR 和下一个线程。所以我的问题是什么机制或 CPU 指令告诉 CPU 在每个 ISR 和下一个最高优先级线程的新指令地址再次开始执行?如果我的理解不正确,请有人按要求进行更正吗?谢谢。

Now in both cases the CPU must begin executing again, the ISR and the next thread. So my question is what mechanism or CPU instruction tells the CPU to begin executing again at the new instruction address of each the ISR and the next highest priority thread ?

CPU 永远不会停止执行代码。它不知道也不关心操作系统线程是什么。如果它正在用户模式应用程序中执行代码并且发生中断,它将从用户模式切换到内核模式,在堆栈上保存一些关于中断的信息,并执行操作系统设置的适当的中断处理程序。中断处理程序负责处理中断并从中断处恢复执行。从中断返回是通过一条特殊指令完成的:IRETIRETDIRETQ(假设 x86 CPU)。在这段时间里,CPU 一直在执行代码并且它从不停止(假设没有执行 HLT 指令)。如果操作系统调度程序决定另一个线程必须 运行,它会进行必要的更改,以便另一个操作系统线程将 运行,但是 CPU 对调度程序的操作一无所知。

由于您用 Windows、this blog post might provide some extra information. For generic details you can always check osdev 标记了此内容。