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

Windows CPU如何知道它需要开始执行新线程的上下文?,windows,operating-system,cpu-architecture,Windows,Operating System,Cpu Architecture,如果在CPU上执行一个线程,并伴随着一个中断,那么就是一个可编程定时器中断。所以我的理解是CPU停止了它对当前执行线程的操作,现在开始执行与中断相关的中断服务例程。现在,一旦ISR完成了代码的执行,dispatcher将加载下一个(最高优先级)线程的上下文,该线程将在CPU上执行。现在,在这两种情况下,CPU必须再次开始执行ISR和下一个线程。所以我的问题是什么机制或CPU指令告诉CPU在每个ISR和下一个最高优先级线程的新指令地址处再次开始执行?如果我的理解不正确,请有人根据需要进行更正吗?多

如果在CPU上执行一个线程,并伴随着一个中断,那么就是一个可编程定时器中断。所以我的理解是CPU停止了它对当前执行线程的操作,现在开始执行与中断相关的中断服务例程。现在,一旦ISR完成了代码的执行,dispatcher将加载下一个(最高优先级)线程的上下文,该线程将在CPU上执行。现在,在这两种情况下,CPU必须再次开始执行ISR和下一个线程。所以我的问题是什么机制或CPU指令告诉CPU在每个ISR和下一个最高优先级线程的新指令地址处再次开始执行?如果我的理解不正确,请有人根据需要进行更正吗?多谢各位

现在,在这两种情况下,CPU必须再次开始执行ISR和 下一个线程。所以我的问题是什么机制或CPU指令告诉 要在的新指令地址重新开始执行的CPU 每个ISR和下一个最高优先级线程

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


因为你用Windows标记了它,所以博客文章可能会提供一些额外的信息。对于一般细节,您可以随时查看。

CPU并不真正了解线程;OS调度器决定是否返回到一个任务或另一个任务的已保存用户空间上下文。