我正在阅读《英特尔® 64 和 IA-32 架构软件开发人员手册:系统编程指南》以了解有关操作系统如何工作的更多信息,但有一些事情我无法弄清楚。
因此,我了解到操作系统内核代码映射到所有进程的虚拟地址空间,并以系统调用或中断/异常的特权运行,内核可以通过 IPI 进行通信,进程的线程作为 x86 架构中的任务运行,线程切换需要更改任务寄存器以指向下一个任务状态段等。我也知道分页、保护和所有这些是如何工作的。
然而,当存在多核时,我开始对执行某些“全局”内核操作(例如线程切换)的核心感到困惑。我在大文档中找不到它。我主要关心的是线程切换。当线程量被消耗时,哪个CORE执行线程调度,是BSP处理器在执行还是这是由BSP和所有AP执行的分布式任务?
当收到切换线程所需的时间中断时,是否所有核心都收到?在这种情况下他们如何管理共享资源?(因此,如果其中一个核心调度了一个线程,其他核心也不会调度它)
提前致谢!!