页式存储中的逻辑地址与物理地址之间的解析过程
分页分段以及段页式存储管理中逻辑地址到物理地址的转换过程解析
首先要知道,页式存储中的逻辑地址与物理地址之间的变换规则。
物理地址=块号+页内地址
逻辑地址=页号+页内地址
所以物理地址和逻辑地址后面部分是相同的,即都为页内地址。
下面以一个例子说明如何由逻辑地址求物理地址
(1)分页存储
案例一:
某虚拟存储器的用户编程空间共64个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
页号 物理块号
0 3
1 7
2 9
3 5
则逻辑地址0A5C(H)所对应的物理地址是什么?要求:写出主要计算过程。
用户编程空间共64个页面,2ˆ6=64 得知页号部分占6位,由“每页为1KB”,1K=2^10,可知内页地址占10位。
由“内存为16KB”,2^4=16得知块号占4位。
逻辑地址0A5C(H)所对应的二进制表示形式是:0000101001011100,后十位1001011100是页内地址,0 000010为为页号,页号化为十进制是2,在对照表中找到2对应的物理块号是9,9转换二进制是1 0 01,即可求出物理地址为10 011001011100,化成十六进制为265C;
即则逻辑地址0A5C(H)所对应的物理地址是265C;
案例二:
某计算机系统页面大小为4K,若进程的页面变换表如下所示,逻辑地址为十六进制1D16H。该地址经过变换后,其物理地址应为十六进制( )。(2014年上半年)
A.1024H
B.3D16H
C.4D16H
D.6D16H
答案 B
解析
页式存储中的逻辑地址与物理地址之间的变换需要掌握变换的规则。
逻辑地址的构成是:逻辑页号+页内地址。
物理地址的构成是:物理块号+页内地址。
从构成可以看出逻辑地址与物理地址的页内地址是一样的,不同的是逻辑页号与物理块号。而这两者的关系,正是通过题目已给出的表来进行映射的。如逻辑页号1就对应着物理块号3。所以题目告诉我们“逻辑地址为十六进制1D16H”时,我们先要把逻辑地址中的页号与页内地址分离。通过什么条件分离呢?题目中的“计算机系统页面大小为4K”,从这句话可以看出,页内地址是二进制的12位(4K=2^12)。二进制?12位对应十六进制3位。所以D16是页内地址。页号也就是1了。通过页表查询到物理块号:3。所以物理地址是:3D16。
(2)页表的硬件实现
上一小节中写到页表是逻辑地址转化到物理地址的关键所在。那么页表如何存储?
每个操作系统都有自己的方法来保存页表。绝大多数都会为每个进程分配一个页表。现在由于页表都比较大,所以放在内存中(以往是放在一组专用寄存器里),其指针存在进程控制块(PCB)里,当进程被调度程序选中投入运行时,系统将其页表指针从进程控制块中取出并送入用户寄存器中。随后可以根据此首地址访问页表。
页表的存储方式是TLB(Translation look-aside buffer, 翻译后备缓冲器)+内存。TBL实际上是一组硬件缓冲所关联的快速内存。若没有TLB,操作系统需要两次内存访问来完成逻辑地址到物理地址的转换,访问页表算一次,在页表中查找算一次。TBL中存储页表中的一小部分条目,条目以键值对方式存储。
(3)页表的数据结构
Hierarchical Paging(层次化分页),实际上就是将页号分为两部分,第一部分作为索引,第二部分作为页号的偏移,是为了解决页表越来越大的问题而提出的。
分页存储有内部碎片。
接下来是分段存储segmentation
为什么要引入分段存储呢,简单地说分页管理方式是从计算机的角度考虑设计的,以提高内存利用率,提高计算机的性能,且分页通过硬件机制实现,对用户完全透明;而分段管理方式的提出则是考虑了用户和程序员,以满足方便编程,信息保护和共享,动态增长以及动态链接等多方面的要求。
段式管理方式按照用户进程的自然段划分逻辑空间。例如,用户进程由主进程,两个子进程,栈和一段数据段构成,于是便可以把这个用户进程分为五段,每段从0开始编址,并分配一段连续的地址空间(段内要求连续,段间可以不连续)。
因此用户通过两个量来指定地址:段名称和偏移。段是编号的,通过段号而非段名称来引用。因此逻辑地址由有序对构成:
<segment-number,offset>(<段号s, 段内偏移d>)
(4)段页式存储
页式存储管理能有效地提高内存利用率,而分段存储管理能反映程序逻辑的结构并有利于段的共享,结合起来便形成了段页式存储管理。
在段页式系统中,作业的逻辑地址为三部分:段号,页号和页内偏移。
在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长TL。进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若S<TL,表示未越界,于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。右图示出了段页式系统中的地址变换机构。
在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。
显然,这使访问内存的次数增加了近两倍。为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍须再三次访问内存。
以上便是全部介绍,本文图片为网上下载非本人创作,如有侵权请马上与我联系。
加油吧,程序员!
参考文章地址1:http://www.scpro.cn/post/152.html
原文地址1:https://blog.csdn.net/weixin_42248302/article/details/80494962
页式存储中的逻辑地址与物理地址之间的解析过程相关推荐
- 2.3.1操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则
2.3.1操作系统-存储管理:页式存储.逻辑地址.物理地址.物理地址逻辑地址之间的地址关系.页面大小与页内地址长度的关系.缺页中断.内存淘汰规则 页式存储 逻辑地址.物理地址 如何判断物理地址和逻辑地 ...
- 存储管理之页式、段式、段页式存储
首先看一下"基本的存储分配方式"种类: 1. 离散分配方式的出现 由于连续分配方式会形成许多内存碎片,虽可通过"紧凑"功能将碎片合并,但会付出很大开销.于是出 ...
- 【操作系统】在一页式存储管理系统中,某作业页表如下。已知页面大小为 1024 字节,问逻辑地址1068,2566,5699 所对应的物理地址各是多少?如果需要置换一页,应该选择哪一页?置换后所对应的物
在一页式存储管理系统中,某作业页表如下. 已知页面大小为 1024 字节,问逻辑地址1068,2566,5699 所对应的物理地址各是多少?如果需要置换一页,应该选择哪一页?置换后所对应的物理地址是多 ...
- 【Computer Organization笔记22】虚拟存储器:段式存储,页式存储
本次笔记内容: P43 计算机组成原理(43) P44 计算机组成原理(44) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...
- 分段地址变换过程c语言,段页式存储结构
段.页式存储都是采用离散分配方式的.离散分配方式:允许一个进程直接分散地装入到许多不相临的分区中,可以更好的提高内存利用率. 一.基本分页存储 1.分页存储方式原则 把逻辑进程分为若干页:把实际内存分 ...
- 页式存储,段式存储,段页式存储,引入快表等访存次数
王道的说法 页式存储,2次: 第一次,访问内存中的页表,利用逻辑地址中的页号查找到页帧号,与逻辑地址中的页内偏移拼接形成物理地址: 第二次:得到物理地址后,再一次访问内存,存取指令或者数据. 段式存储 ...
- 【中级软考】段页式存储是什么?
段页式存储管理方式即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名. 页式存储管理能有效地提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于段的共享.如果将这两种存 ...
- 【学习笔记】第三章——内存 III(分段存储、段页式存储、分段和分页对比)
文章目录 一. 分段存储 1) 概念 2)段表 二. 分段 VS 分页 1)对比 2)优缺点分析 三. 段页式存储 1)定义 2)逻辑地址结构 一. 分段存储 1) 概念 离散,每段从0开始编址,每个 ...
- c语言段页式存储地址转换,页式存储和段页式存储的地址转换过程
一.页式存储-地址转换 访问2次内存,第一次是页表,第二次是真正的物理内存. 二级页表,访问3次内存 两个例子的形式讲解逻辑地址到物理地址的转换: (1) 页系统页表 : 页号: 0 1 2 3 4 ...
- 基本分页存储管理方式中关于逻辑地址和物理地址的转换(操作系统)
分析页式存储管理的地址结构是一维的,即逻辑地址(或物理地址)只用一个数值即可表示.若给定逻辑地址A,页面的大小为L,则页号p和页内地址d可按照下式求得: p=int [A/L]d=A mod L 其中 ...
最新文章
- git ssh创建分支_Git(2):在gitlab中创建开发用户,以及master分支的安全管理
- Python种reverse和reversed反转列表的操作方法
- 7-28作业直接刷一下
- boost::sort模块实现整数排序与右移函子反向排序示例
- oracle 加载数据戽_走进大数据丨 ETL - Load(数据加载)
- Linux系统中使用shell判断磁盘是否格式化的方法
- KDD2021 | USCB:展示广告约束出价问题的通用解决方案
- c++ class struct同名_相对于C语言,C++对struct做了非常多的扩充,功能更全面了
- 保障Web服务的安全
- AutoJS4.1.0实战教程---一键签到
- C#写简单HTML报表
- 生成田字格模板(word)
- LC振荡器的工作原理
- 微信浏览器无法下载APK文件的解决方案
- 关于自走棋类游戏棋子搜索算法分析
- 光衰高怎么办_灯太亮了怎么办 led灯该如何选择
- 大幅提升CLIP图像分类准确率-Tip-Adapter
- [转]人生就像一张茶几,摆满了各种杯具洗具餐具
- .NET Reflector 7.6.1.824安装及破解(刚试了,绝对能用)
- java中的集合框架