页式管理--物理地址计算问题小结
本篇总结的起因是: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开始编号,所以知道虚拟页的页号就可以断定它记录在哪一个页表项了,再由物理地址可以得到具体的页表项的存储位置。
以上。
页式管理--物理地址计算问题小结相关推荐
- Linux 操作系统原理 — 内存 — 页式管理、段式管理与段页式管理
目录 文章目录 目录 前文列表 页式管理 快表 多级页表 基于页表的虚实地址转换原理 应用 TLB 快表提升虚实地址转换速度 页式虚拟存储器工作的全过程 缺页中断 为什么 Linux 默认页大小是 4 ...
- linux内存段页,linux内存管理-段式和页式管理
该博文参考国嵌视频和http://www.cnblogs.com/image-eye/archive/2011/07/13/2105765.html,在此感谢作者. 一.地址类型 物理地址:CPU通过 ...
- 三十四、段页式管理方式
一.知识总览 二.分页.分段的优缺点分析 分页管理: 优点:内存空间利用率高,不会产生外部碎片,只会有少量的页内碎片. 缺点:不方便按照逻辑模块实现信息的共享和保护 分段管理: 优点:很方便按照逻辑模 ...
- Linux段式管理与页式管理
内存管理有2种机制:1.段式管理:2.页式管理 在80386CPU中增加了2个寄存器:1.全局性的段描述表寄存器GDTR 2.局部性的段描述表寄存器LDTR 段寄存器的高13位用于在全局或局部描述表项 ...
- (王道408考研操作系统)第三章内存管理-第一节8:非连续分配管理方式之段页式管理方式
文章目录 一:分段和分页管理优缺点 二:段页式管理基本概念 (1)基本思想 (2)逻辑地址结构 (3)段表和页表 三:段页式管理实现地址管理 一:分段和分页管理优缺点 经过前面几节的叙述,可以看到分段 ...
- 操作系统-内存管理(快表的地址变换机构,两级页表,虚拟内存的基本概念,基本页式管理下的页表和页面置换算法)
文章目录 1.快表地址变换机构 2. 两级页表 3. 虚拟内存的基本概念 基本分页存储管理 1.快表地址变换机构 快表,又称联想寄存器(TLB,translation lookaside buffer ...
- 页式管理 多级页表
作业分成若干个相等的"页",内存分成相等的"块",使"页"的大小等于"块". 以"页"为单位,将作业 ...
- 3.1.11 段页式管理方式
目录 思维导图 分页 分段的优缺点 分段 分页 地址结构 思维导图 分页 分段的优缺点 分段 分页 地址结构
- 12 操作系统第三章 内存管理 非连续分配管理方式 基本分页存储管理 基本分段存储管理 段页式存储管理
文章目录 1 基本分页存储管理 1.1 什么是分页存储 1.2 重要的数据结构--页表 1.3 基本地址变换机构 1.4 具有快表的地址变换机构 1.4.1 什么是快表(TLB) 1.4.2 引入快表 ...
最新文章
- PF_PACKET和AF_PACKET
- Linux 中执行命令
- proxmoxve打造云桌面_基于PROXMOX VE的家庭NAS搭建方案
- 20171213-python自动化-接口测试-jmeter-get-设置header
- iOS25个性能优化,和内存优化
- php mysql 编码转换_PHP编码转换函数应用
- linux上pybind11编辑python库
- robo3t 1.3.1 安装教程
- sqlite3 表创建后设置主外键 联合主键 外键设置
- 通过js实现图片爆炸特效
- 4GMF论坛主席卢伟谈4G全球发展概况
- unexpected error while obtaining UI hierarchy
- 【厨艺提升】炒土豆丝
- 树莓派-linux内核编译
- 《算法笔记》第四章笔记
- 算法与数据结构-分治法
- Poading Analysis
- 存储过程和存储函数 练习
- C语言中指针是什么?
- 浮动IP地址(Float IP)与 ARP欺骗技术
热门文章
- Lanenet论文解读
- 【Proteus仿真】220V转5V向单片机供电
- (一)关于NLP的概念和处理过程
- 图像处理程序,在状态栏显示图像尺寸
- linux改用户密码chpasswd,Linux chpasswd (批量或单一修改用户密码)和passwd(直接修改用户密码)...
- python安装sqlalchemy python2_Python SQLAlchemy --2
- 解决Julia使用PyPlot库出现ERROR: ArgumentError: hasproperty of NULL PyObject问题
- echo linux命令_Linux echo命令示例
- Python Seaborn教程
- jmc线程转储_Java线程转储– VisualVM,jstack,kill -3,jcmd