逻辑地址到物理地址的映射与二级页表

一、首先要区分一下三个地址的概念,分别是逻辑地址,线性地址和物理地址。

逻辑地址:每个逻辑地址由一个段(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就可以完成页表的存储了。


四、逻辑地址到物理地址的映射

通过采用页表这种机制,在内存中找到最终的块基地址后,与逻辑地址的剩余部分(即偏移地址)组合,就完成了到物理地址的转换。


你可能感兴趣的:(linux内核学习笔记,程序员,内存,存储)