linux内存管理(三)——分页管理机制

前面已经说了,利用计算机的局部性原理,将内存细粒化,分成一个个4KB大小的页,然后与虚拟地址进行映射,这样可以每次先映射需要用到的和加载经常用到的内容。

我们可以看到进程1和进程2的虚拟地址空间都被映射到了不连续的物理地址空间内(这个意义很大,如果有一天我们的连续物理地址空间不够,但是不连续的地址空间很多,如果没有这种技术,我们的程序就没有办法运行),甚至他们共用了一部分物理地址空间,这就是共享内存

 
  linux内存管理(三)——分页管理机制


 

进程1的虚拟页VP2和VP3被交换到了磁盘中,在程序需要这两页的时候,Linux内核会产生一个缺页异常,然后异常管理程序会将其读到内存中。其中,缺页异常也是一个很重要的机制。

这就是分页机制的原理,当然Linux中的分页机制的实现还是比较复杂的,通过了页全局目录,页上级目录,页中级目录,页表等几级的分页机制来实现的,但是基本的工作原理是不会变的。

分页机制的实现需要硬件的实现,这个硬件名字叫做MMU(Memory Management Unit),他就是专门负责从虚拟地址到物理地址转换的,也就是从虚拟页找到物理页。