为什么linux对每个CPU使用不同的GDT?

问题描述 投票:0回答:1

我不明白在多处理器系统(在linux中)中为每个CPU使用不同的GDT背后的原因。

每个 CPU 的 TSS 描述符必须是唯一的,但我们可以在“主”GDT 中为每个 CPU 创建一个描述符。

GDT初始化后是否被修改? 还有其他一些描述符不能被不同的CPU共享吗? 我失踪还有其他原因吗?

在网上找不到任何相关信息, 谢谢!

linux linux-kernel x86 kernel gdt
1个回答
0
投票

GDT 将被视为 CPU 所具有的“硬件组件”,因此每个 CPU 在操作系统初始化期间都有自己的 GDT。

基本上,GDT 是 CPU 特权模式的入口点,以便能够在系统模式下执行指令,因此每个 CPU 都有自己的进入系统模式的方式和实现。

因此,对于只有一个 CPU 的操作系统,您将只有一个 GDT,但是当涉及异构系统中的多个处理器时,您可以认为每个 CPU 都有自己的操作系统,因此每个 CPU 都有自己的 GDT。

例如,如果您的系统具有多个不同的 CPU(Intel 和 AMD),则每个 CPU 都有自己的进入系统模式的方式,因此每个 CPU 都需要自己的 GDT 实现。

© www.soinside.com 2019 - 2024. All rights reserved.