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

时间:2017-01-11 18:58:55

标签: operating-system cpu multicore

打开电脑时多核处理器会发生什么变化?

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

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

最后,当你拥有一个多CPU主板时(如那些带有2个或4个CPU插槽的服务器MoBos),上述所有工作如何工作?

1 个答案:

答案 0 :(得分:2)

当PC开启时,在第一步,BIOS搜索bootloader程序然后运行它。 名为BSP(Bootstrap Processor)的单核将运行bootloader。

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

例如:

Intel CPU支持名为" lock"。

的前缀指令
lock inc [ebx]

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

我不知道有关多CPU系统的任何信息。但是,在多CPU系统中,每个CPU都有独占的RAM,并且所有CPU都通过QPI通道(用于Intel)连接在一起。可能由于RAM分离,并发问题较少。