HyperNews Linux KHG 讨论页面

反馈: 用户代码和数据段不再位于 LDT 中。

论坛: 80386 内存管理
日期: Tue, 23 Jul 1996 09:39:45 GMT
发件人: Lennart Benschop <benschop@eb.ele.tue.nl>

进程的用户代码和数据段不再位于 LDT 中,而是位于 GDT 中。无论如何,每个进程的代码和数据段都从线性地址 0 开始,只有物理地址不同(不同的页目录 = CR3)。

进程仍然拥有 LDT,某些应用程序(WINE)可以使用它。

在非常早期的 Linux 版本中,用户空间被限制为 64 MB,并且最多有 64 个进程(包括进程 0,它的用户空间中有内核)。那时,每个进程都有不同的线性地址,总共构成 4GB。只有一个页目录,并且有每个进程的代码和数据段,包含在 LDT 中。为了允许超过 64 个进程和每个进程超过 64MB 的虚拟地址空间,这个(有点优雅的)方案被放弃了。这就是为什么某些内核在 LDT 中有它们的用户代码和数据段,尽管事实上它们对于所有进程都是相同的段。