You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

段页式存储系统下进程A的地址映射与表结构求解

段页式存储系统问题解答

前提参数梳理

  • 页面大小:4KB = 0x1000(十六进制),页内偏移占12位
  • 最大段大小:4MB = 0x400000,段内地址占22位(10位段内页号 + 12位页内偏移)
  • 物理内存帧大小:与页面大小一致,帧号对应物理地址 = 帧号 × 0x1000
  • 空闲帧分配顺序:从列表头部(10,20,30,40,50,60,70,80)依次取用

1. 进程A的段表起始地址

段表存储在物理内存的一个帧中,优先分配空闲列表的第一个帧(10号帧),因此段表起始物理地址为:
10 × 0x1000 = 0xA000(十六进制),或十进制40960。


2. 段表与页表构建

段表(存储在10号帧,地址0xA000)

段号页表基址(物理地址/帧号)限长
00x14000(帧号20)3KB
10x28000(帧号40)6KB

页表

  • 第一段(段0)的页表(存储在20号帧,地址0x14000):
    第一段大小3KB,仅需1个页面,对应帧分配为空闲列表第3个帧(30号):

    页号帧号
    030
  • 第二段(段1)的页表(存储在40号帧,地址0x28000):
    第二段大小6KB,需2个页面,对应帧分配为空闲列表第4、5个帧(50、60号):

    页号帧号
    050
    160

分配逻辑说明:先为段分配页表帧,再为段的页面分配数据帧;第一段加载完成后再处理第二段,严格遵循空闲帧列表的头部取用顺序。


3. 物理地址0003C000₁₆对应的虚拟地址及计算过程

步骤1:解析物理地址对应的帧号与页内偏移

物理地址0x0003C000转换为帧号:0x3C000 ÷ 0x1000 = 60,页内偏移为0x3C000 % 0x1000 = 0。

步骤2:反向查找页表与段表

  • 帧号60对应第二段(段1)页表中的页号1(见第二段页表)。
  • 段1的段号为1,段内页号为1,页内偏移为0。

步骤3:拼接虚拟地址

虚拟地址结构为:段号(10位) + 段内页号(10位) + 页内偏移(12位)

  • 段号1(10位二进制):0000000001
  • 段内页号1(10位二进制):0000000001
  • 页内偏移0(12位二进制):000000000000

拼接为32位二进制:00000000010000000001000000000000,转换为十六进制为0x00401000。


内容的提问来源于stack exchange,提问作者Fathy Ramadan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 19:47:40