启动时是否使用了所有 CPU 内核?

Bin*_*hel 3 cpu operating-system multicore

当您打开 PC 时,多核处理器会发生什么?

也就是说,我猜引导加载程序是从磁盘读取并运行的 - 但它是由单核运行的吗?哪一个?或者引导加载程序是否已使用所有内核?

然后,在操作系统准备就绪后,它是否有责任将其所有进程拆分到所有可用内核上?这些关键进程在多核上如何协作?那么锁定(多核互斥锁?)更昂贵吗?(或者操作系统是在单核上运行的)

最后,当您拥有多 CPU 主板(例如具有 2 或 4 个 CPU 插槽的服务器 MoBo)时,上述所有内容如何工作?

Ham*_*eza 6

当PC打开时,第一步,BIOS搜索bootloader程序,然后运行它。名为 BSP(引导处理器)的单个核心将运行引导加载程序。

引导加载程序引导您的系统运行操作系统内核。BSP是由硬件和物理层指定的CPU核心之一。该核心用于初始化和关闭过程。实际上,BSP负责初始化系统和引导操作系统。其他核心仅在操作系统启动并运行后才被激活。操作系统的内核(其主线程)通常运行在BSP核心上,它管理其他核心来运行当前进程的线程或一起运行某些进程。此外,核心能够执行一些原子指令。对于每个核心,这些指令确保共享内存总线(高级缓存)已经具有独占所有权。这些指令帮助操作系统通过软件互斥实现来管理所有进程和线程(根据其优先级)。

例如 :

Intel CPU 支持名为“lock”的前缀指令。

lock inc [ebx]
Run Code Online (Sandbox Code Playgroud)

运行该指令的核心立即获取总线,其他核心的工作将暂停(直到它正在执行)。

我对多CPU系统一无所知。但是,在多CPU系统中,每个CPU都有独占的RAM,并且所有CPU通过QPI通道(针对Intel)连接在一起。可能是因为 RAM 是分开的,并发问题较少。