1

问题 1:- 在引导过程中,Linux 会创建页表。但是,当一个新进程执行时,它也有自己的页表。这两张表有何不同?

问题 2:- 在 x86 架构上,Linux 使用定义明确的方案(包括页面目录、页表条目等)将线性地址转换为物理地址。假设我们在进程地址空间 A 中有一个线性地址 X,当使用页表进行转换时,它对应于物理地址 Y。还有一些其他进程 B 也有属于它自己的地址空间的有效线性地址 X。现在如果进程 B 想要访问 X,X 是否会再次对应相同的物理地址 Y?

4

2 回答 2

3

问题 1:页表不是仅在启动时创建的。每次派生进程时都会创建一个新的页表。新表遵循内核在启动时设置的模板,但每个表都是可以更改每个进程的独立数据结构。它们通常不同,以允许每个进程拥有自己的工作内存,只有它可以访问。

问题 2:不,这种行为是首先使用分页的原因之一。

于 2011-01-26T21:18:23.647 回答
1

问题1:他们的权限不同。

问题2:没有。

如果你真的很好奇,而不仅仅是为你的家庭作业寻找简单的答案,你可能也想看看这个:http: //duartes.org/gustavo/blog/post/how-the-kernel-manages-your-记忆

于 2011-01-26T14:24:08.077 回答