当前位置:首页 > 内存 > 正文

内存管理之二级页表详解

  • 内存
  • 2024-05-08 07:55:51
  • 2664

一、内存寻址的页式内存管理

首先,您需要了解线性地址。
(1)线性地址被分成固定长度的组,称为页。页内的连续线性地址映射到连续的物理地址。
(2)分页段单元将所有物理地址划分为固定长度的页框,称为物理页。
(3)映射线性地址和物理地址的数据结构称为页表。
(4)可以看到,32位线性地址分为三个字段:高10位目录、中10位页表、低12位偏移量。每页包含4096字节数据,12位。
线性地址转换根据转换表分两步完成。第一个翻译表称为页目录表翻译,第二个翻译称为页表翻译。使用这种辅助模式的目的是减少每个进程页表所需的RAM量。
转换步骤:
(1)从cr3中取出进程的页目录地址(操作系统在调度进程时将此地址加载到相应的寄存器中)。前10个线性地址位。找到数组中对应的索引项。引入了两级管理模式,因此页目录中的项是页表地址而不是页地址。(又引入一个数组),页地址放在页表中。(3)根据线性地址的中间10位,找到页在页表(也是数组)中的起始地址。(4)将页的起始地址添加到线性地址的最后12位。获取最终需要对应物理地址的地址。


二、对二级页表的总结

探索二页表的奥秘:更深入的理解与应用


我有幸在学习的路上对二页表进行了广泛的研究。今天我就等待专家的指正和启发,与大家分享我自己的理解和经验。


单级页表的问题是管理大型进程。当进程的内存需求超出页框所能承载的地址数据范围​​(210=1024)时,传统的页表结构就显得不够了。为了解决这个问题,创建了第二页表的概念。


考虑一下,如果逻辑地址的数量超过10个,则页框无法包含所有地址。这时,为了正确划分复杂的地址空间,我们需要重新分配大页表,就像进程的页一样。


构建二级页表有三个关键组成部分:主页号、二级页号和内部页偏移量。主页号是扫描的起始点,它与页索引表的起始地址结合起来,存储在进程控制块(PCB)中,助我们定位对应的辅助页表。


那么第二级页码就是导航地图上的下一级。块号这是确定数据的确切物理地址的关键步骤。


接口偏移量用于在找到页面起始地址后正确找到一小部分流程数据,就像在地图上找到某条路径一样。


访问内存时,如果没有快速表,二级页表的内存访问过程会比单级页表长一倍。一级页表需要两次查找(页表+数据),二级页表需要再查找两次(页索引表+页表),总共3次。


一般来说,二级页表有利于地址空间管理的层次化组织,特别是对于大内存需求,大大减少内存访问次数,提高系统效率。然而,其背后的复杂性使得设计和实现更具挑战性。