当前位置: 首页 > news >正文

【软考每日一练004】图解内存管理:分页存储地址转换与页面置换算法详解

【软考每日一练004】图解内存管理:分页存储地址转换与页面置换算法详解

1. 题目复现

题目描述:

进程 P 有 8 个页面,页号分别为 0~7,页面大小为 4K。假设系统给进程 P 分配了 4 个存储块,进程 P 的页面变换表如下所示。表中的状态位等于 1 和 0 分别表示页面在内存和不在内存。

页号页帧号状态位访问位修改位
0-000
17110
25101
3-000
4-000
53111
6-000
79110
  1. 若进程 P 要访问的逻辑地址为十六进制5148H5148H5148H,则该地址经过变换后,其物理地址应为十六进制( );
  2. 如果进程 P 要访问的页面 6 不在内存,那么根据页面置换算法,应该淘汰页号为( )的页面。

选项:

第一问:A. 3148H | B. 5148H | C. 7148H | D. 9148H

第二问:A. 1 | B. 2 | C. 5 | D. 9


2. 答案解析

第一问:物理地址转换

答案:A. 3148H

解析过程:

  1. 拆分逻辑地址:逻辑地址5148H5148H5148H是十六进制。
    • 页面大小为4K=2124K = 2^{12}4K=212字节,对应十六进制中的3 位(因为163=409616^3 = 4096163=4096)。
    • 因此,后三位148H148H148H页内偏移量(W)
    • 最高位5H5H5H页号(P)。即:P=5P = 5P=5
  2. 查表:找到页号为 5 的行。
    • 状态位为 1(说明在内存中)。
    • 对应的**页帧号(物理块号)**为 3。
  3. 组合物理地址:
    • 物理地址 = 页帧号 + 页内偏移量。
    • 将 3 与148H148H148H拼接,得到3148H3148H3148H

第二问:页面置换选择

答案:B. 2

解析过程:

该题考查的是改进型 Clock(时钟)置换算法(也称为 NRU 算法)。该算法根据(访问位 A,修改位 M)的组合来选择淘汰页。

  1. 确定候选页:只有状态位为 1(已在内存中)的页面才能被淘汰。
    • 页 1:(1, 0)
    • 页 2:(0, 1)
    • 页 5:(1, 1)
    • 页 7:(1, 0)
  2. 优先级规则:改进型 Clock 算法的淘汰优先级如下:
    • 第 1 类 (0, 0):最近未访问且未修改(最佳选择)。
    • 第 2 类 (0, 1):最近未访问但已修改。
    • 第 3 类 (1, 0):最近已访问但未修改。
    • 第 4 类 (1, 1):最近已访问且已修改。
  3. 匹配结果:
    • 内存中没有 (0, 0) 类型的页面。
    • 页号 2的属性是(0, 1),属于第 2 类,是当前优先级最高的淘汰对象。

3. 解题思路总结(干货)

3.1 宏观视角:为什么需要“页面”?

1. 什么是页面?物理载体是什么?

为了解决内存碎片问题,OS 把进程的逻辑地址空间分成若干个固定大小的区域,称为页面(Page)

  • 物理载体:页面是逻辑上的划分,它最终要存放到物理内存中。物理内存被对应地划分为等大的存储块(Storage Block),也叫**页帧(Page Frame)**或物理块。
  • 物理载体:存储块的物理载体就是计算机的RAM(内存条)
2. 页面大小是谁确定的?

页面的大小通常是222的幂次(如4KB4KB4KB)。

  • 谁确定:由硬件(CPU 架构)和操作系统共同确定。
  • 为什么有大小:页面太大,内存碎片(页内碎片)多;页面太小,页表就会变得臃肿。4KB4KB4KB是目前权衡后的主流标准。
3. 页号 vs 页帧号
  • 页号(Page Number):进程视角下的“逻辑编号”。

  • 页帧号(Frame Number): 内存条上实际存储位置的“物理编号”。

    页表的作用就是记录这两者的映射关系。它存储在内存中(系统区),由 MMU(内存管理单元) 硬件加速查询。


3.2 核心机制

在题目给出的页表中,除了映射关系,还有三个关键的状态位,它们由 MMU 在访问时自动触发变更,或由 OS 定期清理:

状态位含义触发变更时机
状态位 §页面是否在内存中页面调入内存置 1,换出置 0。
访问位 (A)最近是否被访问过只要 CPU 读/写该页,硬件自动置 1。
修改位 (M)页面内容是否被改过只有发生“写”操作时,硬件自动置 1。

3.3 原题目如果换一种规则

如果题目要求使用其他算法,结果会怎样?

  • FIFO(先进先出):无法判断。因为页表里没给“进入内存的时间”。如果假设按页号顺序进入,则淘汰页 1。
  • LRU(最近最久未使用):理论上淘汰页 2。因为页 2 的访问位为 0,而 1, 5, 7 访问位均为 1。LRU 认为 0 代表最久没用。
  • 当前主流算法:现实中的 Linux 和 Windows 并不使用纯粹的 LRU(因为开销太大),而是使用Clock 算法的变种WSL(驻留集管理)

4、 总结

  1. 页号看索引,页帧看内存。
  2. 地址转换:保持偏移量不变,只换“头”(页号换块号)。
  3. 置换算法:看到访问位和修改位,直接上NRU (0,0) > (0,1) > (1,0) > (1,1)规则。
http://www.jsqmd.com/news/269771/

相关文章:

  • gpu诊断命令
  • 【软考每日一练004】图解内存管理:分页存储地址转换与页面置换算法详解
  • 历年CSP-J初赛真题解析 | 2019年CSP-J初赛
  • 告别嘈杂!Moodist%20白噪音神器,搭配%20cpolar%20解锁随时随地的宁静
  • 算术包实例:符号代数练习题
  • 导师严选9个一键生成论文工具,专科生毕业论文轻松搞定!
  • 大模型部署测试
  • DAY45@浙大疏锦行
  • 不会建模也能做 3D?2D 原画“充气”变动画的逃课流
  • 想在 Java 八股文面试中脱颖而出?这1000 道互联网大厂面试题必不可少!
  • 9个高效降aigc工具推荐,本科生必看!
  • 啃完阿里老哥这套Java面试八股文后,成功收获蚂蚁 offer
  • 源自新西兰的天然馈赠:Newo纽渥有机娟姗鲜牛奶,重新定义家庭健康饮奶标准 - 行业调研院
  • 致并肩前行的你:一封来自近屿智能的信
  • day154—回溯—分割回文串(LeetCode-131)
  • OpenAI和Anthropic竞相布局医疗健康领域,AI医疗浪潮已至
  • day155—回溯—组合(LeetCode-77)
  • 实用指南:零基础学AI大模型之MultiQueryRetriever多查询检索全解析
  • 基于Hough变换的答题卡识别MATLAB之旅
  • 计算机小程序毕设实战-基于django+微信小程序的运动饮食健康生活系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Day23-20260119
  • C# 实现 TCP/IP 客户端与服务器数据交互及与西门子 S7 - 200Smart 通讯
  • 2026大专计算机专业学数据分析的价值分析
  • PySide系列-07-QMainWindow
  • 【计算机毕业设计案例】基于微信小程序的考研资源共享平台的设计与实现基于django+微信小程序的考研信息查询系统(程序+文档+讲解+定制)
  • c++中的常用栈操作
  • 2026/1/17-Atcoder Beginner Contest 441 T1~4
  • 群友靶机lara复现 - 场
  • 小程序毕设选题推荐:基于django+微信小程序的健康生活系统个人健康生活平台小程序【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 信件分析(2)