在多处理器架构中,寄存器是如何组织的?
例如,在 4 核处理器中,一次至少可以运行 4 个进程。
堆栈指针、程序状态寄存器和程序计数器是如何组织的?
其他通用寄存器呢?
我的猜测是,每个内核都会有一组单独的寄存器。
在多处理器架构中,寄存器是如何组织的?
例如,在 4 核处理器中,一次至少可以运行 4 个进程。
堆栈指针、程序状态寄存器和程序计数器是如何组织的?
其他通用寄存器呢?
我的猜测是,每个内核都会有一组单独的寄存器。
想象一下 4 台完全独立的计算机,每台计算机都有一个单核 CPU。4核计算机就是这样;除了:
其中大部分对大多数软件来说都是“不可见的”。除非您正在编写控制电源管理的操作系统的一部分,否则您不需要关心电源管理是否在 CPU 之间共享;除非您正在编写操作系统/内核的低级 IRQ 处理,否则您不需要关心 IRQ 如何到达设备驱动程序等。
这同样适用于实际存在的 CPU 数量。操作系统/内核通常确保应用程序只需要关心更高级别的抽象(例如“线程”)。这种更高级别的抽象如何工作取决于操作系统——通常(对于大多数操作系统)操作系统/内核试图通过“足够快”地在它们之间切换来提供所有线程同时运行的错觉(如果只有 4 个 CPU最多 4 个线程实际上同时运行),但它通常比这复杂得多(涉及线程优先级、抢占规则等)并且(即使它相对罕见)它可能非常不同(例如,对于某些系统,同一线程可能会同时在多个 CPU 上运行,以实现容错/冗余目的;对于某些系统,可能只有一个函数队列及其数据,其中多个函数同时运行;ETC)。
多处理器意味着在同一个平台上至少有两个独立的处理器——通常在同一个主板上
多核意味着大部分或全部 CPU 在单个芯片上多次复制。- 这也意味着堆栈、状态、程序计数器和所有通用寄存器都被复制。
多处理意味着在操作系统级别上,一个进程所包含的所有内容都会时不时地切换。
多线程是多处理的轻量级变体,其中线程例如共享相同的代码段和相同的数据段、相同的文件描述符等,但具有唯一的堆栈(当然还有唯一的状态寄存器和程序计数器)