在上面我们已经知道了虚拟地址空间都是虚拟的地址空间,就是一个结构体mm_struct这个结构体
但是实际上我们的物理内存和虚拟地址空间并不是一一对应的,其中我们使用的页表来找到物理空间
物理地址空间实际的分布
在我们运行一个进程的时候并不是将所有的进程都连续的复制进我们的物理内存中,实际上内存是分页模式,就是一页一页的如上图一样,这样我们可以更大的利用我们的物理内存。在4g内存下我们可以分为2^20数量的页表,其中一个页的值就是4k大小。
页表
页表就是一个从地址空间在内存的映射关系,通过这个页表我们可以从虚拟地址空间找到我们的物理地址空间。在页表中存储的就是我们内存分出2^20页表的信息。
虚拟地址空间->页表->物理内存
在虚拟内存空间存储的其实是20位的也好和12偏移量,对应的找到我们的页表中的20位的物理内存信息。再加上我们使用的12偏移量就能找到我们物理内存存储的数据或者代码。
实际上就是 20位的页表信息加上虚拟地址的12位偏移量来寻找到我们所需要的内存空间
这样就达到了我们的虚拟地址空间到我们的物理地址空间上的位置寻找,
页表管理的优点
1.提高了我们的内存使用率
2.加强了我们的内存访问的控制