当前位置:首页 > 行业动态 > 正文

分页存储管理逻辑地址

分页存储管理中,逻辑地址由页号和页内偏移组成,通过页表映射页号至物理帧号,结合偏移得到物理

在操作系统中,分页存储管理是一种将逻辑地址转换为物理地址的内存管理机制,其核心思想是将进程的逻辑地址空间划分为固定大小的页(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)通常包含以下信息:

分页存储管理逻辑地址  第1张

  • 物理页帧号(Frame Number):指向物理内存中的页帧。
  • 有效位(Valid Bit):标记该页是否在物理内存中。
  • 权限位(Protection Bit):读写执行权限控制。
  • 修改位(Dirty Bit):标记页是否被修改过。

地址转换步骤

  1. 提取页号和偏移量:从逻辑地址中分离页号和偏移量。
  2. 查询页表:根据页号查找页表项,获取对应的物理页帧号。
  3. 生成物理地址:将物理页帧号与偏移量组合,得到最终物理地址。

示例
假设页大小为4KB,页表如下:

逻辑页号 物理页帧号 有效位
5 3 1
10 8 1

若逻辑地址为0x00051000

  1. 页号 = 0x1000 >> 12 = 5,偏移量 = 0x1000 & 0xFFF = 0x000
  2. 查询页表,逻辑页号5对应物理页帧号3。
  3. 物理地址 = (3 times 4KB + 0x000 = 0x000C0000)。

多级页表与地址扩展

对于64位系统,单级页表会占用大量内存(例如页大小为4KB时,页表项数为(2^{64}/4KB),完全不可行),因此引入多级页表

  • 两级页表:将页号分为目录号和页号,先通过目录表找到页表,再通过页表找到物理帧。
  • 三级/四级页表:进一步分层,减少单表大小(如x86的CR3寄存器支持四级页表)。

示例
在两级页表中,逻辑地址结构为:

| 目录号(10位) | 页号(10位) | 偏移量(12位) |
  1. 目录表项指向页表,页表项指向物理帧。
  2. 地址转换需两次查表,增加时间但节省内存。

分页的优缺点

优点 缺点
消除外部碎片 需要硬件支持(如MMU)
支持虚拟内存(磁盘交换) 页表占用内存(多级页表复杂)
简化内存分配与回收 地址转换带来性能开销
便于权限隔离与保护

逻辑地址与物理地址的区别

特征 逻辑地址 物理地址
定义 进程视角的地址(虚拟地址) 实际内存硬件的地址
用途 程序指令中使用的地址 访问内存硬件的直接地址
转换方式 通过页表映射到物理地址 无转换,直接寻址
连续性 进程逻辑空间连续 物理内存可能分散存储

FAQs

问题1:页表的作用是什么?
答:页表是逻辑页号到物理页帧号的映射表,用于实现逻辑地址到物理地址的转换,它记录了每个逻辑页对应的物理内存位置,并包含有效位、权限位等信息,确保内存访问的安全性和正确性。

问题2:逻辑地址和物理地址的主要区别是什么?
答:逻辑地址是进程生成的虚拟地址,由操作系统通过页表映射到物理地址,物理地址是实际内存的硬件地址,用于直接访问内存单元,逻辑地址提供进程独立的地址空间,而

0