Linux 调度程序是否需要在多核中的每个核上执行?

问题描述 投票:0回答:1

在一个内核上执行的内核调度程序线程是否可以处理不同远程内核的线程/进程的调度,或者每个内核是否有必要拥有自己的内核调度程序线程来处理在其上执行的线程/进程在任何给定时间?作为参考,我很好奇这对于类似于 [1] 的操作系统实现如何工作,该实现建议在多核中使用一些核心用于应用程序,而其他核心用于内核任务。

[1] Q. Yuan、J. Zhu、M. Chen 和 N. Sun,“GenerOS:用于多核系统的非对称操作系统内核”,2010 年 IEEE 国际并行与分布式处理研讨会 (IPDPS),2010 年,第 1-10 页,doi:10.1109/IPDPS.2010.5470363.

linux-kernel multiprocessing operating-system multicore
1个回答
0
投票

我认为有趣的地方是中断。它们用于各种各样的事情,但其中之一是调度程序。在抢占式调度的操作系统中,计时器中断用于中断程序流程,将控制权传递给操作系统,以便它可以决定是否有更重要的事情需要内核去做,然后传递(做出的决定)控制权返回到选择运行的任何程序。

如果该定时器中断被路由到调度内核上的 ISR,则它不会中断另一个内核上的程序流。如果需要在程序之间进行上下文切换,则必须以某种方式停止程序核心,保存一个进程上下文,并恢复另一个进程上下文。中断是停止程序流的典型方式,因此我想为了实现这一点,调度程序核心必须在程序核心上引发另一个中断,以允许完成上下文切换。

因此,可能不需要在相关核心上完成调度决策,但上下文切换的行为感觉必须在程序运行的地方完成。

操作系统设计中要做出的架构决策是,使用两个 ISR 分别进行调度计算和上下文切换是否比在程序同一核心上就地完成所有操作的 ISR 更好还是更差。

© www.soinside.com 2019 - 2024. All rights reserved.