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

分页存储管理的练习题

分页存储管理将逻辑地址划分为固定大小的页,通过页表映射物理块,实现地址转换,有效解决碎片问题,提升内存利用率,(boxed{}

分页存储管理练习题解析

基础概念与地址转换

例题1:某系统采用分页存储管理,页面大小为4KB(2^12 B),逻辑地址长度为32位,若逻辑地址为0x0040A000,对应的物理地址是多少?假设页表起始地址为0x1000,页表中该页的物理帧号为0x3

解析

  1. 拆分逻辑地址

    • 页面大小=4KB=2^12 B → 页内偏移占12位。
    • 逻辑地址0x0040A000的二进制为0000 0000 0100 0000 1010 0000 0000
    • 页号=前20位(32位地址-12位偏移)→ 0000000001000000(十进制为16)。
    • 页内偏移=后12位→101000000000
  2. 查页表

    • 页表项地址=页表基址+页号×页表项大小,假设页表项大小为4B(32位)。
    • 页表地址=0x1000 + 16×4 = 0x1040
    • 读取页表项得物理帧号0x3(对应物理块起始地址0x3×4KB=0xC000)。
  3. 拼接物理地址

    • 物理地址=物理帧号×页面大小 + 页内偏移 = 0xC000 + 0xA000 = 0xCAAA000

答案:物理地址为0x0CAAA000


页表结构与缺页处理

例题2:某系统页表如下表所示,逻辑地址0x012345访问时发生缺页中断,若需分配新物理帧,帧号为0x5,请更新页表并计算物理地址。

页号 有效位 修改位 物理帧号
0 1 1 0x2
1 1 0 0x4
2 0 0

解析

  1. 逻辑地址拆分

    • 页面大小=1KB(假设)→ 页内偏移占10位。
    • 逻辑地址0x012345的二进制为0001 0010 0011 0100 0101
    • 页号=前16位→0x0123(十进制291),但页表仅4项,说明页号越界或未分配。
  2. 缺页处理

    • 系统分配新帧0x5,更新页表第2页(假设页号从0开始):
      | 页号 | 有效位 | 修改位 | 物理帧号 |
      |——|——–|——–|———-|
      | 2 | 1 | 0 | 0x5 |
  3. 重新计算物理地址

    • 物理地址=0x5×1KB + 页内偏移0x345 = 0x5345

答案:更新后页表如上,物理地址为0x05345


页面置换算法

例题3:某系统采用LRU(最近最少使用)算法,当前内存中有3个页面:7、0、1(按时间从旧到新),若访问序列为[2, 3, 2, 4, 3],求缺页次数。

解析

  1. 初始化内存状态[7, 0, 1](时间标签为0、1、2)。
  2. 访问过程
    • 2:缺页,替换最早未使用的7 → 内存变为[0, 1, 2](时间标签3)。
    • 3:缺页,替换0[1, 2, 3](时间标签4)。
    • 2:命中,更新时间标签 → [1, 3, 2](时间标签5)。
    • 4:缺页,替换1[3, 2, 4](时间标签6)。
    • 3:命中,更新时间标签 → [2, 4, 3](时间标签7)。
  3. 缺页次数:4次(访问2、3、4、4)。

答案:缺页次数为4。


综合应用

例题4:某系统逻辑地址长度为24位,页面大小为1KB,页表采用二级结构,一级页表每项指向二级页表,二级页表每项对应一个物理帧,若逻辑地址0x0156A8的物理地址为0x0C46A8,求一级和二级页表的索引。

解析

  1. 地址拆分

    • 页面大小=1KB=2^10 B → 页内偏移占10位。
    • 剩余14位分为:一级页表索引(6位)+ 二级页表索引(8位)。
    • 逻辑地址0x0156A8的二进制:000001 010101 10101000
      • 一级索引=前6位→000001(十进制1)。
      • 二级索引=中间8位→010101(十进制21)。
      • 页内偏移=后10位→10101000
  2. 物理地址分析

    • 物理地址0x0C46A8的帧号=0xC4(高14位),对应二级页表项。
    • 一级页表第1项指向二级页表,二级页表第21项指向帧0xC4

答案:一级索引为1,二级索引为21。


FAQs(常见问题解答)

Q1:分页存储管理中,页表的作用是什么?
A:页表用于记录逻辑页号与物理帧号的映射关系,通过页表,系统可将不连续的逻辑地址转换为连续的物理地址,实现内存的离散分配,每个页表项通常包含有效位、修改位、物理帧号等信息。

Q2:FIFO与LRU页面置换算法的主要区别是什么?
A:FIFO(先进先出)算法根据页面进入内存的时间顺序替换最早进入的页面,实现简单但可能淘汰频繁使用的页面,LRU(最近最少使用)算法根据页面的最近访问时间替换最久未使用的页面,命中率更高但需要额外硬件或数据结构记录访问

0