我将从这里的一个培训机构获取linux笔记。 因此,当创建进程时,将为其分配区域。 Region包含进程的所有段。
区域也由region-table指定。区域表包含以下条目; -
虚拟地址到 - 物理地址指针+磁盘块描述符
磁盘块描述符指向磁盘上的swap或exe文件。
我有两个douts:-----1> Global&本地描述符角色就在这里。
2 - ;每个进程都有自己的全局描述符表吗? 我认为是的,否则两个过程的虚拟地址将指向相同的物理地址。
请建议
答案 0 :(得分:0)
1)全局描述符表给出了线性地址的基地址。它几乎总是为零,“限制”也设置为“全部”(即所有可寻址存储器)。实际上,实际上并未使用段选择器。该体系结构要求它们存在并加载,但它们“可用于”的实际效果并未在Linux中使用。
本地描述符表的工作方式完全相同,除了每个进程有一个LDT。通常它保存任务的堆栈段 - 它仍然具有零的基址。该过程可以修改LDT,它不能修改GDT。
要判断该段是GDT还是LDT,请查看第3位(值为8的那个) - 例如,在我的系统中ss
具有值0x2b
,因此它具有第3位设置。另一方面,cs
是33
,因此它没有设置第3位,因此来自GDT。
2)没有。有一个GDT(准确地说是每个CPU核心) - 这就是为什么它被称为“全球” - 所有东西都有一个。这也是堆栈段在LDT中的原因,因为每个进程有一个。