问题1:在引导过程中,Linux创建页表。但是,当执行新进程时,它也有自己的页表。这两张桌子有何不同?
问题2:—在x86架构上,Linux使用定义良好的方案(包括页面目录、页面表条目等)将线性地址转换为物理地址。
假设我们在进程地址空间a中有一个线性地址X,当使用页表转换时,它对应于物理地址Y。还有一些进程B也有一个有效的线性地址X,属于它自己的地址空间。如果进程B想要访问X,那么X是否再次对应于相同的物理地址Y?

最佳答案

问题1:页表不是只在启动时创建的。每次分叉进程时都会创建一个新的页表。新的表遵循内核在引导时设置的模板,但每个表都是独立的数据结构,每个进程都可以更改。它们通常是不同的,以允许每个进程有自己的工作内存,只有它才能访问。
问题2:不,这种行为是首先使用分页的原因之一。

关于linux - Linux中的页表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4792654/

10-10 17:37