软考高级:逻辑地址和物理地址转换 AI解读

一、题目

设某进程的段表如下所示,逻辑地址( )可以转换为对应的物理地址。

A. (0,1597)、(1,30)和(3,1390)

B. (0,128)、(1,30)和(3,1390)

C. (0,1597)、(2,98)和(3,1390)

D. (0,128)、(2,98)和(4,1066)

二、解读

========== 生活化例子 ==========

假设你有一栋很大的楼房,这栋楼房有很多层,每一层都是不同的大小。每层楼都有一个起始房间号(相当于基地址),而每层楼的房间数量不同(相当于段长)。现在,你的朋友告诉你他在第几层楼的第几个房间,你需要找到他确切的房间号。

  • 楼层编号(段号)告诉你朋友在哪一层。
  • 房间号是相对于这一层的起始房间号的距离(相当于逻辑地址)。
  • 你需要找到的房间号是"这一层的起始房间号 + 朋友告诉你的房间号",这个就是实际的物理房间号。

========== 概念讲解 ==========

段页式存储管理中,逻辑地址转换为物理地址时,需要通过段表找到对应段的基地址,再加上逻辑地址中的段内偏移量,计算出最终的物理地址。

题目中的段表给出了各个段的基地址和段长:

  • 段 0:基地址 1598,段长 600
  • 段 1:基地址 486,段长 50
  • 段 2:基地址 90,段长 100
  • 段 3:基地址 1327,段长 2988
  • 段 4:基地址 1952,段长 960

我们要做的就是将每个逻辑地址转换为物理地址。每个逻辑地址由两个部分组成:

  1. 段号:表示是第几段。
  2. 段内偏移量:表示在这个段中第几个字节。

转换步骤:

  1. 找到逻辑地址对应的段号,从段表中找到该段的基地址和段长。
  2. 检查段内偏移量是否超出段长。如果超出,表示地址非法。
  3. 如果偏移量合法,则物理地址 = 段基地址 + 段内偏移量。

下面我们依次计算选项中的逻辑地址对应的物理地址:

  • A. (0, 1597):段号 0,偏移量 1597。段 0 的段长为 600,偏移量超过段长,非法。

  • B.

    1. (0, 128):段号 0,基地址 1598,段长 600。物理地址 = 1598 + 128 = 1726。
    2. (1, 30):段号 1,基地址 486,段长 50。物理地址 = 486 + 30 = 516。
    3. (3, 1390):段号 3,基地址 1327,段长 2988。物理地址 = 1327 + 1390 = 2717。
  • C. (0, 1597):段号 0,偏移量 1597。段 0 的段长为 600,偏移量超过段长,非法。

  • D.

    1. (0, 128):段号 0,基地址 1598,段长 600。物理地址 = 1598 + 128 = 1726。
    2. (2, 98):段号 2,基地址 90,段长 100。物理地址 = 90 + 98 = 188。
    3. (4, 1066):段号 4,偏移量 1066。段 4 的段长为 960,偏移量超过段长,非法。

所以,B 选项的所有逻辑地址转换后的物理地址都是合法的。

========== 简单记法 ==========

  1. 基地址 + 段内偏移 = 物理地址
  2. 先看偏移量是否超出段长,如果超出,逻辑地址非法。
相关推荐
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件1 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行3 天前
Linux和window共享文件夹
linux
木心月转码ing3 天前
WSL+Cpp开发环境配置
linux
崔小汤呀4 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应4 天前
vi编辑器使用
linux·后端·操作系统