我对计算机操作系统中的调度/多任务处理有一些疑问。如果细节是特定于平台的,我说的是在 x86 上运行的 Linux。
我知道调度程序是操作系统的组件,它将执行线程分配给物理处理核心(假设没有超线程。)我的问题是,调度程序如何告诉核心停止从当前内存中的任何位置执行代码,并开始从内存中的不同点执行代码?这似乎是调度程序发送到处理核心的某种中断,但 AFAIK 中断最终返回到原始执行线程。(因为他们“打断”谈话,而不是改变话题。)
我会阅读 Linux 调度程序代码,但我对 C 的理解不是很好。
我对计算机操作系统中的调度/多任务处理有一些疑问。如果细节是特定于平台的,我说的是在 x86 上运行的 Linux。
我知道调度程序是操作系统的组件,它将执行线程分配给物理处理核心(假设没有超线程。)我的问题是,调度程序如何告诉核心停止从当前内存中的任何位置执行代码,并开始从内存中的不同点执行代码?这似乎是调度程序发送到处理核心的某种中断,但 AFAIK 中断最终返回到原始执行线程。(因为他们“打断”谈话,而不是改变话题。)
我会阅读 Linux 调度程序代码,但我对 C 的理解不是很好。
定时器中断是由操作系统设置的,所以会返回操作系统执行。这是我对过程的理解,可能缺少更详细的细节。
this interrupt handler
在 50uS 内戳一下”(或任何时间片)context switch
并保存当前操作系统任务的状态