上一篇
分页存储管理的基本方法
- 行业动态
- 2025-05-04
- 1
分页存储管理的基本方法是将进程逻辑空间划分为等额页面,物理内存分割为页框,通过页表建立映射关系,实现逻辑到物理地址的转换
分页存储管理的基本方法
分页存储管理是操作系统中用于内存管理的一种核心技术,通过将进程的逻辑地址空间划分为固定大小的页(Page),并将物理内存划分为相同大小的帧(Frame),实现逻辑地址与物理地址的映射,以下是分页存储管理的详细实现方法与原理:
分页存储的核心概念
逻辑页与物理帧
- 逻辑页:进程的地址空间被划分为固定大小的块,称为“页”。
- 物理帧:物理内存被划分为相同大小的块,称为“帧”。
- 映射关系:操作系统通过页表(Page Table)建立逻辑页与物理帧的对应关系。
地址结构
- 逻辑地址分为两部分:
- 页号(Page Number):用于索引页表,确定逻辑页对应的物理帧。
- 页内偏移(Offset):表示页内的具体地址位置。
- 物理地址 = 物理帧号 × 页大小 + 页内偏移。
- 逻辑地址分为两部分:
分页存储的实现步骤
地址划分
- 假设页大小为 ( P )(如 4KB),逻辑地址长度为 ( M ) 位,则:
- 页内偏移占 ( log_2(P) ) 位(如 4KB 对应 12 位)。
- 剩余高位为页号。
- 假设页大小为 ( P )(如 4KB),逻辑地址长度为 ( M ) 位,则:
页表建立
- 每个进程对应一个页表,记录逻辑页号到物理帧号的映射。
- 页表项(PTE)的典型字段:
| 字段名称 | 说明 |
|—————-|——————————|
| 物理帧号 | 对应逻辑页的物理帧编号 |
| 有效位(Valid)| 标记页是否在内存中 |
| 修改位(Dirty)| 标记页是否被修改过 |
| 访问权限 | 读/写/执行权限 |
| 其他属性 | 如缓存禁用、共享标志等 |
地址转换过程
- 步骤:
- 从逻辑地址中提取页号和页内偏移。
- 通过页号查找页表,获取对应的物理帧号。
- 拼接物理帧号与页内偏移,得到最终物理地址。
- 示例:
- 逻辑地址:
0x012345
(假设页大小为 4KB,即 ( 2^{12} = 4096 ) 字节)。 - 页号 =
0x1
(0x12345 / 0x1000
),页内偏移 =0x2345
。 - 查页表,若页号
0x1
对应物理帧0x5
,则物理地址为0x52345
。
- 逻辑地址:
- 步骤:
多级页表与内存优化
多级页表
- 问题:单级页表占用连续内存空间,大地址空间会导致页表过大。
- 解决方案:将页表分为多级(如二级或三级),通过分层次索引减少内存占用。
- 示例(二级页表):
| 地址结构 | 说明 |
|——————–|————————–|
| 一级页号(外页号) | 索引外页表,指向内页表 |
| 二级页号(内页号) | 索引内页表,指向物理帧 |
| 页内偏移 | 固定长度(如 12 位) |
快表(TLB, Translation Lookaside Buffer)
- 作用:缓存近期使用的页表项,加速地址转换。
- 流程:
- 访问内存时,优先查询 TLB。
- 如果命中,直接获取物理帧号。
- 如果未命中,则访问页表并更新 TLB。
分页存储的优缺点
优点 | 缺点 |
---|---|
消除外碎片 | 存在内碎片(页内未用完空间) |
内存分配灵活 | 页表占用内存 |
支持虚拟内存 | 地址转换开销 |
简化内存共享与保护 | 多级页表增加复杂度 |
分页与分段的对比
特性 | 分页存储 | 分段存储 |
---|---|---|
单位大小 | 固定(由系统决定) | 可变(由程序逻辑决定) |
连续性要求 | 无(逻辑页可离散映射) | 高(段内地址连续) |
灵活性 | 高(适合动态分配) | 低(段大小需预先定义) |
复杂度 | 低(硬件支持简单) | 高(需管理段表与段内偏移) |
FAQs
问题1:分页系统中为什么需要快表(TLB)?
答:TLB 用于缓存近期访问的页表项,减少访问内存中页表的频率,由于内存访问速度远低于 CPU 速度,TLB 通过硬件缓存机制显著提升地址转换效率,若 TLB 未命中,需从页表读取数据并更新缓存,此时会引入额外延迟。
问题2:分页存储如何解决内存不足问题?
答:分页存储通过虚拟内存技术将磁盘空间作为内存的扩展,当物理内存不足时,操作系统将暂时不用的页交换到磁盘(称为“换出”),并在需要时从磁盘交换回内存(称为“换入”),这种机制使得进程可以使用比