分页存储管理逻辑地址
- 行业动态
- 2025-05-03
- 2310
分页存储管理中,逻辑地址由页号和页内偏移组成,通过页表映射页号至物理帧号,结合偏移得到物理
在操作系统中,分页存储管理是一种将逻辑地址转换为物理地址的内存管理机制,其核心思想是将进程的逻辑地址空间划分为固定大小的页(Page),并将物理内存划分为相同大小的页帧(Frame),通过页表(Page Table)建立逻辑页与物理页帧的映射关系,实现地址转换,以下是分页存储管理中逻辑地址的详细解析:
逻辑地址的结构
逻辑地址由页号(Page Number)和页内偏移量(Offset)组成,假设系统采用二进制逻辑地址,且页大小为(2^k)字节(例如4KB对应(k=12)),则逻辑地址的结构如下:
字段 | 位数 | 说明 |
---|---|---|
页号(Page Number) | 逻辑地址高位 | 用于索引页表,确定逻辑页的编号 |
页内偏移量(Offset) | 逻辑地址低位 | 页内的具体地址偏移,范围为(0)到(2^k-1) |
示例:
在32位系统中,若页大小为4KB((2^{12})字节),则逻辑地址的低12位为偏移量,剩余高20位为页号,例如逻辑地址0x0040A000
的分解如下:
- 页号:
0x0040A000 >> 12 = 0x40A
(十进制1034) - 偏移量:
0x0040A000 & 0xFFF = 0x000
(偏移量为0)
页表与地址转换
页表是分页系统的核心数据结构,用于存储逻辑页号到物理页帧号的映射,每个页表项(PTE)通常包含以下信息:
- 物理页帧号(Frame Number):指向物理内存中的页帧。
- 有效位(Valid Bit):标记该页是否在物理内存中。
- 权限位(Protection Bit):读写执行权限控制。
- 修改位(Dirty Bit):标记页是否被修改过。
地址转换步骤:
- 提取页号和偏移量:从逻辑地址中分离页号和偏移量。
- 查询页表:根据页号查找页表项,获取对应的物理页帧号。
- 生成物理地址:将物理页帧号与偏移量组合,得到最终物理地址。
示例:
假设页大小为4KB,页表如下:
逻辑页号 | 物理页帧号 | 有效位 |
---|---|---|
5 | 3 | 1 |
10 | 8 | 1 |
若逻辑地址为0x00051000
:
- 页号 =
0x1000 >> 12 = 5
,偏移量 =0x1000 & 0xFFF = 0x000
。 - 查询页表,逻辑页号5对应物理页帧号3。
- 物理地址 = (3 times 4KB + 0x000 = 0x000C0000)。
多级页表与地址扩展
对于64位系统,单级页表会占用大量内存(例如页大小为4KB时,页表项数为(2^{64}/4KB),完全不可行),因此引入多级页表:
- 两级页表:将页号分为目录号和页号,先通过目录表找到页表,再通过页表找到物理帧。
- 三级/四级页表:进一步分层,减少单表大小(如x86的CR3寄存器支持四级页表)。
示例:
在两级页表中,逻辑地址结构为:
| 目录号(10位) | 页号(10位) | 偏移量(12位) |
- 目录表项指向页表,页表项指向物理帧。
- 地址转换需两次查表,增加时间但节省内存。
分页的优缺点
优点 | 缺点 |
---|---|
消除外部碎片 | 需要硬件支持(如MMU) |
支持虚拟内存(磁盘交换) | 页表占用内存(多级页表复杂) |
简化内存分配与回收 | 地址转换带来性能开销 |
便于权限隔离与保护 |
逻辑地址与物理地址的区别
特征 | 逻辑地址 | 物理地址 |
---|---|---|
定义 | 进程视角的地址(虚拟地址) | 实际内存硬件的地址 |
用途 | 程序指令中使用的地址 | 访问内存硬件的直接地址 |
转换方式 | 通过页表映射到物理地址 | 无转换,直接寻址 |
连续性 | 进程逻辑空间连续 | 物理内存可能分散存储 |
FAQs
问题1:页表的作用是什么?
答:页表是逻辑页号到物理页帧号的映射表,用于实现逻辑地址到物理地址的转换,它记录了每个逻辑页对应的物理内存位置,并包含有效位、权限位等信息,确保内存访问的安全性和正确性。
问题2:逻辑地址和物理地址的主要区别是什么?
答:逻辑地址是进程生成的虚拟地址,由操作系统通过页表映射到物理地址,物理地址是实际内存的硬件地址,用于直接访问内存单元,逻辑地址提供进程独立的地址空间,而