Jey*_*ram 1 operating-system processor computer-architecture cpu-registers multiprocessing
在多处理器架构中,寄存器是如何组织的?
例如,在 4 核处理器中,一次至少可以运行 4 个进程。
堆栈指针、程序状态寄存器和程序计数器是如何组织的?
其他通用寄存器呢?
我的猜测是,每个内核都有一组单独的寄存器。
想象一下 4 台完全独立的计算机,每台计算机都有一个单核 CPU。四核计算机就是这样;除了:
其中大部分对大多数软件来说都是“不可见的”。除非您正在编写控制电源管理的操作系统的一部分,否则您无需关心电源管理是否在 CPU 之间共享;除非您正在编写操作系统/内核的低级 IRQ 处理,否则您无需关心 IRQ 如何到达设备驱动程序等。
这同样适用于实际存在的 CPU 数量。操作系统/内核通常确保应用程序只需要关心更高级别的抽象(例如“线程”)。这种更高级别的抽象如何工作取决于操作系统 - 通常(对于大多数操作系统)操作系统 / 内核试图通过在它们之间“足够快地”(如果只有 4 个 CPU)切换来提供所有线程同时运行的错觉实际上最多有 4 个线程同时运行),但它通常比这复杂得多(涉及线程优先级、抢占规则等)并且(即使它相对罕见)它可能非常不同(例如,对于某些系统,出于容错/冗余目的,同一线程可能会同时在多个 CPU 上运行;对于某些系统,可能只有一个函数及其数据队列,其中多个函数同时运行;等等)。
| 归档时间: | 
 | 
| 查看次数: | 1080 次 | 
| 最近记录: |