本篇总结的起因是:2010年真题里面的一道小题。
简述就是:页式管理,页号20位,页内偏移12位,按照字节编址。一个代码段的起始逻辑地址是0000,8000H,长度是8KB,被装载到从物理地址0090,0000H开始的连续主存空间中。页表从主存0020,0000H开始的物理地址处连续存放。计算该代码段对应的两个页表项的物理地址,页框号和代码页面2的物理地址(页面1,2连续存放)。

这道题目不是第一次看到了,那么每次都觉得想不通是为什么呢?今天终于发现:我每次都是从物理地址0090,0000H加8KB后得到页面2的物理地址。然后:

8KB=213B8KB = 2^{13}B,将2132^{13}加到0090,0000H上,然后得到的是0090,2000H。因为16进制下,000表达的最高位权重是2112^{11}。
再继续往下做结果都是错的。
那么这么加的问题出在哪里了呢?
我们知道字节是递增编号,当前这个编号是0090,2000H,再跨度8K个字节,加起来为什么恰恰是错误的结果呢?

答案是,这种加法根本就是没错的!给定一个基址brbr,跨度δ\delta后,下一个地址是br+δbr + \delta是最朴素的数学加法怎么会错呢对吧!
错的是,应该加的是4KB,而不是8KB。
这么明显的错却总是忽略。当前的0090,0000H指向的是页面首地址,那么下一个页面的地址自然是跨度一个页面大小的位置,肯定是+4K啊!

这便是本篇的重点,注意这个加和的细节,包括在计算页表项物理地址也是如此。

这道题目的全解:0090,0000H + 4K = 0090,1000H

这里还想强调的是,000H,共12位可以表示2122^{12}B,高位是2112^{11}。

因为低位12位是页内偏移,因此页框号分别是:00900H,00901H。

再回看页表项的存储。基址是0020,0000H,由起始的逻辑地址0000,8000H,可以得到虚拟页号是:00008H。页表项从0开始编号,那么00008是第八个页表项。所以物理地址是:0020,0000H + 8 * 4B = 0020,0020H,下一个页表项的地址是:0020,0024H,因为一个页表项占用4B.

最后这段计算页表项的地址的切入点值得深入思考,即:页表项从0开始编号,所以知道虚拟页的页号就可以断定它记录在哪一个页表项了,再由物理地址可以得到具体的页表项的存储位置。
以上。

页式管理--物理地址计算问题小结相关推荐

  1. Linux 操作系统原理 — 内存 — 页式管理、段式管理与段页式管理

    目录 文章目录 目录 前文列表 页式管理 快表 多级页表 基于页表的虚实地址转换原理 应用 TLB 快表提升虚实地址转换速度 页式虚拟存储器工作的全过程 缺页中断 为什么 Linux 默认页大小是 4 ...

  2. linux内存段页,linux内存管理-段式和页式管理

    该博文参考国嵌视频和http://www.cnblogs.com/image-eye/archive/2011/07/13/2105765.html,在此感谢作者. 一.地址类型 物理地址:CPU通过 ...

  3. 三十四、段页式管理方式

    一.知识总览 二.分页.分段的优缺点分析 分页管理: 优点:内存空间利用率高,不会产生外部碎片,只会有少量的页内碎片. 缺点:不方便按照逻辑模块实现信息的共享和保护 分段管理: 优点:很方便按照逻辑模 ...

  4. Linux段式管理与页式管理

    内存管理有2种机制:1.段式管理:2.页式管理 在80386CPU中增加了2个寄存器:1.全局性的段描述表寄存器GDTR 2.局部性的段描述表寄存器LDTR 段寄存器的高13位用于在全局或局部描述表项 ...

  5. (王道408考研操作系统)第三章内存管理-第一节8:非连续分配管理方式之段页式管理方式

    文章目录 一:分段和分页管理优缺点 二:段页式管理基本概念 (1)基本思想 (2)逻辑地址结构 (3)段表和页表 三:段页式管理实现地址管理 一:分段和分页管理优缺点 经过前面几节的叙述,可以看到分段 ...

  6. 操作系统-内存管理(快表的地址变换机构,两级页表,虚拟内存的基本概念,基本页式管理下的页表和页面置换算法)

    文章目录 1.快表地址变换机构 2. 两级页表 3. 虚拟内存的基本概念 基本分页存储管理 1.快表地址变换机构 快表,又称联想寄存器(TLB,translation lookaside buffer ...

  7. 页式管理 多级页表

    作业分成若干个相等的"页",内存分成相等的"块",使"页"的大小等于"块". 以"页"为单位,将作业 ...

  8. 3.1.11 段页式管理方式

    目录 思维导图 分页 分段的优缺点 分段 分页 地址结构 思维导图 分页 分段的优缺点 分段 分页 地址结构

  9. 12 操作系统第三章 内存管理 非连续分配管理方式 基本分页存储管理 基本分段存储管理 段页式存储管理

    文章目录 1 基本分页存储管理 1.1 什么是分页存储 1.2 重要的数据结构--页表 1.3 基本地址变换机构 1.4 具有快表的地址变换机构 1.4.1 什么是快表(TLB) 1.4.2 引入快表 ...

最新文章

  1. PF_PACKET和AF_PACKET
  2. Linux 中执行命令
  3. proxmoxve打造云桌面_基于PROXMOX VE的家庭NAS搭建方案
  4. 20171213-python自动化-接口测试-jmeter-get-设置header
  5. iOS25个性能优化,和内存优化
  6. php mysql 编码转换_PHP编码转换函数应用
  7. linux上pybind11编辑python库
  8. robo3t 1.3.1 安装教程
  9. sqlite3 表创建后设置主外键 联合主键 外键设置
  10. 通过js实现图片爆炸特效
  11. 4GMF论坛主席卢伟谈4G全球发展概况
  12. unexpected error while obtaining UI hierarchy
  13. 【厨艺提升】炒土豆丝
  14. 树莓派-linux内核编译
  15. 《算法笔记》第四章笔记
  16. 算法与数据结构-分治法
  17. Poading Analysis
  18. 存储过程和存储函数 练习
  19. C语言中指针是什么?
  20. 浮动IP地址(Float IP)与 ARP欺骗技术

热门文章

  1. Lanenet论文解读
  2. 【Proteus仿真】220V转5V向单片机供电
  3. (一)关于NLP的概念和处理过程
  4. 图像处理程序,在状态栏显示图像尺寸
  5. linux改用户密码chpasswd,Linux chpasswd (批量或单一修改用户密码)和passwd(直接修改用户密码)...
  6. python安装sqlalchemy python2_Python SQLAlchemy --2
  7. 解决Julia使用PyPlot库出现ERROR: ArgumentError: hasproperty of NULL PyObject问题
  8. echo linux命令_Linux echo命令示例
  9. Python Seaborn教程
  10. jmc线程转储_Java线程转储– VisualVM,jstack,kill -3,jcmd