这个分页,主要是在mit6.828的lab2的背景下来说的。
Mit6.828 Lab2:http://pdos.csail.mit.edu/6.828/2014/labs/lab2/
lab2主要讲虚拟内存->物理内存的变换,通过一定的函数来实现软件MMU的部分。
整个地址转化的过程如下图所示:
首先,明确一点,在程序里面的所有地址,都是虚拟地址,程序里面是不会出现物理地址的,就算是物理地址,CPU也会把它当做虚拟地址,通过MMU转化为物理地址。
通过上面的图,可以知道,在系统中,CPU得到一个虚拟地址,这个虚拟地址是logical address,通过分段翻译后,会得到一个线性地址(linear address),线性地址通过分页翻译后,就可以得到物理地址了。
在lab2里,分段机制基本就没有,所以可以直接认为cpu得到的虚拟地址就是线性地址,只需要经过page translation 就可以得到物理地址了。下面,就来讲一下系统分页的详细过程。
如下图所示,就是线性地址