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

Operating system 启动期间是否使用了所有CPU核?,operating-system,cpu,multicore,Operating System,Cpu,Multicore,打开电脑时,多核处理器会发生什么变化 也就是说,我猜引导加载程序是从磁盘读取并运行的——但它是由单个内核运行的吗?哪一个?或者引导加载程序已经使用了所有内核 那么,在操作系统准备好之后,它是否有责任在所有可用的内核中拆分所有进程?这些关键流程在多核上如何协作?那么,锁定(多核互斥)是否更昂贵?(或者操作系统运行在单核上) 最后,当你有一个多CPU主板(像那些有2个或4个CPU插槽的服务器MoBos)时,上面的所有工作是如何进行的?当电脑开机时,BIOS首先搜索引导加载程序,然后运行它。 名为BS

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

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

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


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

当电脑开机时,BIOS首先搜索引导加载程序,然后运行它。 名为BSP(引导处理器)的单个内核将运行引导加载程序

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

例如:

英特尔CPU支持名为“lock”的前缀指令

运行此指令的内核立即获得总线,其他内核的工作将暂停(直到它完成)


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

当电脑开机时,BIOS首先搜索引导加载程序,然后运行它。 名为BSP(引导处理器)的单个内核将运行引导加载程序

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

例如:

英特尔CPU支持名为“lock”的前缀指令

运行此指令的内核立即获得总线,其他内核的工作将暂停(直到它完成)


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

通常有一个主处理器来管理它们。通常有一个主处理器来管理它们。
lock inc [ebx]