![多 CPU 的指令分配](https://linux22.com/image/1341783/%E5%A4%9A%20CPU%20%E7%9A%84%E6%8C%87%E4%BB%A4%E5%88%86%E9%85%8D.png)
也许这是一个愚蠢的问题,但我正在尝试更好地了解硬件内部工作原理......
如果一台机器有两个或更多 CPU,哪个硬件组件实际上负责在不同 CPU 之间分配指令执行(进程级或线程级)?或者换句话说,一旦指令集到达,什么决定哪个 CPU 做什么?是否有相当于负载平衡器的东西可以在集群计算环境中分配工作负载。
谢谢
答案1
操作系统为每个连续的工作单元(即简单程序)创建“线程”或“任务”。操作系统会保留一个准备运行的线程/任务队列,每当 CPU 可用时,操作系统就会为其分配一个“就绪”的线程/任务。
CPU 可用是因为之前执行的线程/任务结束,或者因为它需要等待磁盘 I/O 或网络响应或用户输入或其他原因。当等待的线程/任务满足其等待的原因时,它会被放回到“就绪”队列中。
本质上,每个线程/任务都是一个“虚拟 CPU”,操作系统将这些“虚拟 CPU”分配给真实 CPU。
答案2
它是操作系统和 CPU 中的控制单元的组合。操作系统负责创建线程并将其分配给核心。CPU 中的控制单元指挥处理器内部的数据流。它可以重新排序命令并动态地将它们分配给不同的逻辑单元。