具有多个CPU的指令分配


2

也许这是一个愚蠢的问题,但我正在尝试更好地了解硬件内部运作方式...

如果一台机器有两个或更多的CPU,实际上哪个硬件组件负责在不同的CPU之间分配指令执行(进程或线程级别)?换一种说法,一旦指令集到达,什么决定了哪个CPU做什么?是否有相当于负载平衡器的功能,可以在群集计算环境中分配工作负载。

谢谢


1
每个内核都接收自己的指令流。构成单个执行线程的连续指令流仅到达单个核心。如果多个内核同时处于活动状态,则每个内核都将遵循自己当时在该内核运行的软件中存在的指令流。调度程序(操作系统的一部分)将指令流分配给内核。
David Schwartz

Answers:


2

操作系统为每个顺序工作单元(即简单程序)创建“线程”或“任务”。操作系统会保留准备运行的线程/任务队列,每当CPU可用时,操作系统都会为其分配一个“就绪”线程/任务。

由于先前执行的线程/任务结束,或者因为它需要等待磁盘I / O或网络响应或用户输入或其他原因,所以CPU变得可用。当等待的线程/任务满足其等待的原因时,它将放回到“就绪”队列中。

本质上,每个线程/任务都是一个“虚拟CPU”,并且OS将这些“虚拟CPU”分配给实际CPU。


1

它是操作系统和CPU中控制单元的组合。操作系统负责创建线程并将其分配给核心。CPU中的控制单元控制处理器内部的数据流。它可以对命令进行重新排序并将其动态分配给不同的逻辑单元。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.