页表的特点
摘抄,非原创
- 操作系统为每一个进程维护了一个从虚拟地址到物理地址的映射关系的数据结构,叫页表,页表的内容就是该进程的虚拟地址到物理地址的一个映射。
- 页表的改进TLB(快表)
Linux的两级分页机制
背景
从Intel 80386开始,默认的页大小是4k, 提供32位的寻址空间。一页4k需要12位进行寻址,因此对于32的寻址空间,还有32-12=20位可以用来页表的索引。因为页表项存储的是物理内存一页的物理地址,因此一个页表项只能指向一页,而硬件的实现是使用CR3寄存器保存了页表的起始地址,因此对于页表我们应该使其只占用一页的内存。4k能够存储的页表项个数为4k/4B=1024, 寻址1024个索引只需要10位即可,因此在这个前提下,用于页表索引的20位自然而然的就分为了两段,也就是页表被分成了两级,十位用来表示一级页表内部偏移,十位用来表示二级页表的内部偏移,一级页表的页表项存储二级页表的物理地址。其实这也是Linux最初采用的两级页表分页机制。