问题 1:- 在引导过程中,Linux 创建页表。但是,当一个新的进程被执行时,它也有自己的页表。这两个表有何不同?
问题 2:- 在 x86 arch 上,Linux 使用定义明确的方案(包括页目录、页表条目等)将线性地址转换为物理地址。 假设我们在进程地址空间 A 中有一个线性地址 X,当使用页表转换时对应于物理地址 Y。还有一些其他进程 B 也有属于它自己的地址空间的有效线性地址 X。现在如果进程B要访问X,X会不会再次对应同一个物理地址Y?
最佳答案
问题 1:页表并非仅在启动时创建。每次 fork 进程时都会创建一个新的页表。新表遵循内核在启动时设置的模板,但每个表都是一个独立的数据结构,可以根据进程进行更改。它们通常不同,以允许每个进程拥有自己的工作内存,只有它可以访问。
问题 2:不,这种行为是首先使用分页的原因之一。
关于linux - Linux 中的页表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792654/