一、首先要区分一下三个地址的概念,分别是逻辑地址,线性地址和物理地址。
逻辑地址:每个逻辑地址由一个段(segment)和偏移量(offset)组成。
线性地址:32位无符号整数,可表示4G大小的地址空间。
物理地址:芯片级内存单元寻址。它们与从CPU的地址引脚发送到内存总线上的电信号相对应。
逻辑地址由CPU产生,在32位机器中为32位,CPU利用这个逻辑地址来寻址4G的内存空间。
采用内存寻址机制的好处:
1.保护内核不受恶意或者无意的破坏
2.隔离各个用户进程
3.方便程序的编写,使程序员可以抛开对物理内存的考虑,而且理论上可以使用任意大小的空间
二、其次区分一下页、页框、块这三个概念。
将线性地址空间划分为大小相同的组,称为“页”,一页为4KB大小,即2e12 byte
块:将无力内存划分为大小与页等同的组,称为块,或者针
页框:即块的另一个名字
所以,页是用来描述逻辑地址空间的,页框或者块是用来描述物理地址空间的
三、一级页表与二级页表
32位的逻辑地址被分为两部分 20 12
20为页号,负责在内存中寻找到对应的块,12为页内偏移
这样计算下来,每个页条目需要4byte来存储(因为要访问4G的内存空间,其中一个存放着块的基地址,加上12为的内页偏移,才完成到物理地址的映射),一共有2e20*4byte=4MB,所以一个页表本身就需要4MB来存储。
二级页表:32位的逻辑地址被分为三部分 10 10 12
一级页表有2e10个条目,需要4KB存储,二级页表有2e20个条目,需要4KB存储,所以,采用二级页表,只需要8KB就可以完成页表的存储了。
四、逻辑地址到物理地址的映射
通过采用页表这种机制,在内存中找到最终的块基地址后,与逻辑地址的剩余部分(即偏移地址)组合,就完成了到物理地址的转换。