不同进程相同线性地址映射到物理内存相同吗
不同进程相同线性地址映射到物理内存相同吗?如何映射的?
不同进程中有3G的用户空间,3G用户空间的线性地址表示应该是一样吧?也就是0x000000000~0xbffffffff
但,不同进程映射的物理内存肯定是不一样的;
也就是说相同的线性地址如:0x08040000映射到的物理页应该是不一样的,这是如何做到的?如何映射?
一般是不同的,但是有些是相同的(比如共享内存,比如共享库的代码段,Linux下的内核部分)
楼主需要看看操作系统中关于虚拟内存的部分。新年祝福网页
稍微有点理解,具体如何映射不管,可能有不同实现;
1. 不同进程有不同的页表(不同页目录??),页表中各页表项指定的物理页表基址可能跟进程ID有关,不同进程id相同线性地址映射到的页物理地址不同;(即页表中填入的页物理基址与进程id有关)
2. 在0.12内核中线性地址空间是不同的,即第一个进程空间是(如:0~64M,那么第二进程的线性地址空间是64M~128M),这样的话,不同进程的线性地址肯定是不一样的,所以映射到的物理内存也是不一样的;
0.12中只有一个页目录,这样的话一个线性地址对应的页表是唯一的;