-
2019-09-19 15:07:59
结合操作系统(汤子瀛版)和王道版操作系统,对内存管理中,分页存储管理方式的地址转换进行整理总结(即根据逻辑地址寻找物理地址)
一、基本概念
1.逻辑地址:(工具书中的解释)
(1)在有地址变换功能的计算机中,访问指令给出的地址 (操作数) 叫逻辑地址,也叫相对地址。
(2)把用户程序中使用的地址称为相对地址即逻辑地址。
注:逻辑地址包含页号和页内偏移两部分,通过页内偏移的位数可以知道页面的大小。(在题目中,有时会给出十进制的数)
2.物理地址:在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址。
注:物理地址包含页帧号和页内偏移两部分,根据逻辑地址查找页表即可找到在内存中的页帧号,物理地址中的页内偏移同逻辑地址中的相同。
3.页、页帧(页框)、块
分页的思想:把主存空间分为大小相等且固定的块,块相对较小,作为主存的基本单位。进程中的块称为页,内存中称为页帧(页框),外存中直接称为块。
4.页表、页表项
(1)为了方便找到每个页号在内存中对应的物理块,系统为每一个进程建立一张页表。 注意是为每个进程建立一张页表。
(2)页表中的每一项叫做页表项。
注:根据页号的位数可以算出页表项数,根据页表项的大小和页表项数可以算出页表的大小。
例:若页号有20位,页表项大小为4B,则页表大小为2的20次方*4B=4MB。题目中页表项大小一般会给出。
注:注意区分页表长度和页表项长度
(1)页表长度:页表中共有多少页
(2)页表项长度:在页表中页地址占多大的存储空间
5.页表寄存器
在系统中通常设置一个页表寄存器,存放页表在内存中的始址F和页表长度M。进程未执行时,页表的始址和长度存放在进程控制块中,当进程执行时,才将页表始址和长度存入页表寄存器。
二、地址转换(根据逻辑地址求出在内存中的物理地址)
1.根据逻辑地址可找出页号
(1 )若逻辑地址由二进制表示,根据页号位数(或逻辑地址位数-页内偏移位数)即可确定。
(2)若逻辑地址由十进制表示,需要根据页号位数算出页号
例:若逻辑地址为4000,当页内偏移为10位时,页号为4000/1k=3,当页内偏移为11位时,页号为4000/2k=1。
2.判断是否越界
比较页号和页表寄存器中的页表长度,若页号不在查找的页表中,越界中断。
3.在页表中找出页号对应的物理块号
页号对应的页表项地址=页号*页表项长度+页表起始地址
4.求出在内存中的物理地址
(1)在页表中找到页号对应的块号
(2)块内偏移=页内偏移
三、题目求解
1.页面大小
通过页内偏移的位数可以知道页面的大小
2.页表大小
页表长度*页表项大小
3.根据十进制的逻辑地址求出页号在页表中的物理地址
(1)页号的求法见上面(二、1)
(2)页号求出后加上页表起始地址即可
4.求物理地址
参考二(地址转换)
5.未完待续。。。
更多相关内容 -
操作系统 请求分页式存储管理的地址转换过程实现
2021-04-05 22:00:16利用键盘输入本模拟系统的物理块的大小,作业的页表中的块号;完成逻辑地址转换成相应的物理地址的过程。 1、建立一张位示图,用来模拟内存的分配情况,利用随机数产生一组0和1的数对应内存的使用情况。 2、输入块... -
【操作系统】-- 基本分页存储管理(基本地址变换机构、具有快表的地址变换机构)
2022-06-07 14:27:25考虑支持多道程序的两种连续分配方式:1、固定分区分配:缺乏灵活性,会产生大量的内部碎片,内存的利用率低。2、动态分区分配:会产生很多外部碎片,虽然...分页存储管理将内存空间的逻辑地址(相对地址)空间分成若考虑支持多道程序的两种连续分配方式:
1、固定分区分配:缺乏灵活性,会产生大量的内部碎片,内存的利用率低。
2、动态分区分配:会产生很多外部碎片,虽然可以用“紧凑”处理,但是带价高。
如果允许将一个进程分散装入不相邻分区中,便可充分利用内存,而不需再“紧凑”,产生了非连续分配方式。
连续分配方式:为用户进程分配的必须是一个连续的内存空间。
非连续分配:为用户进程分配的可以是一些分散的内存空间。
非连续分配三种方式:基本分页存储管理、基本分段存储管理、段页式存储管理。
一、基本分页存储管理
1、概念
分页存储管理将内存空间的逻辑地址(相对地址)空间分成若干页,从0开始;
把内存的物理地址(绝对地址)空间分成与内存空间大小相同的若干块,为进程分配内存时,以块为单位。
进程的最后一页经常装不满一块,称为“页内碎片”。
2、如何实现地址的转换
①算出逻辑地址对应的页号(页号 = 逻辑地址/页面长度(取整数部分))
②知道该页号对应页面在内存中的起始地址
③算出逻辑地址在页面内的偏移量(页内偏移量 = 逻辑地址%页面长度(取余数部分))
④物理地址 = 页面始址 + 页内偏移量
如果每个页面大小为2^K B,用二进制数表示逻辑地址,则末尾K位即为页内偏移量,其余部分就是页号。
例:假设用32个二进制位表示逻辑地址,页面大小为2^12B = 4096B = 4KB,
逻辑地址2,用二进制表示应该是00000000000000000000000000000010
若0号页在内存中的起始地址为X,则逻辑地址2对应的物理地址应该是X+000000000010。
逻辑地址4097,用二进制表示应该是00000000000000000001000000000001
若1号页在内存中的起始地址为X,则逻辑地址4097对应的物理地址应该是X+000000000001。
(可以这样理解,一个页面大小为4097,逻辑地址正好为一个页面大小,所以也是下一个页面的开始,页面数为1偏移量为0)
3、逻辑地址结构
地址结构包含两个部分,前一部分为页号,后一部分为页内偏移量。
如果有K位表示页内偏移量,则说明该系统中一个页面的大小是2^K个内存单元。
如果有M位表示页号,则说明该系统中,一个进程最多允许有2^M个页面。
4、页表
为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表。
①一个进程对应一张页表。
②进程的每一页对应一个页表项。
③每个页表项由页号和块号组成。
④页表记录进程页面和实际存放的内存块之间的对应关系。
⑤每个页表项的长度是相同的,页号是隐含的。
为什么页号是隐含的?
例:假设某系统物理内存大小为4GB,页面大小为4KB,则每个页表项至少应该为多少字节?
答:4GB = 2^32B,4KB = 2^12B
因此会被分为2^32/2^12 = 2^20个内存块,范围应该是0~(2^20)-1
因此至少要20个二进制位才能表示,因此至少需要3个字节才够。
(每个字节8个二进制位,3个字节共24个二进制位)
各页表项会按顺序连续地存放在内存中,
如果该页表在内存中存放的起始地址为X,则M号对应的页表项一定是存放在内存地址为X+3*M。
因此只需要知道页表存放的起始地址和页表项长度,即可找到各页号对应的页表项存放的位置。
本例中一个页表项站3B,如果有n个页面,则该进程的页表总共会占3*n个字节。
二、基本地址变换机构
步骤:
①根据逻辑地址计算出页号、页内偏移量。
②判断页号是否越界。
③查询页表,找到页号对应的页表项,确定页面存放的内存块号。
④用内存块号和页内偏移量得到物理地址。
⑤访问目标内存单元。
例题:
例:若页面大小L为1K字节,页号2对应的内存块号b = 8,将逻辑地址A=2500转换为物理地址E。
答:1KB = 2^10B,说明页内偏移量占10位。
页号2对应的内存号b=8。
第一步:计算页号、页内偏移量
页号P = A/L = 2500/1024 = 2
页内偏移量W = A%L = 2500%1024 = 452
第二步:求块号
页号为2,对应的内存块号为8。
第三步:求物理地址
E = b*L+W = 8*1024+452 = 8644
三、具有快表的地址变换机构
上面的地址变换机构中,每次要访问一个逻辑地址,都需要查询内存中的页表,可能连续很多次查到的都是同一个页表项,快表可减少访问页表的次数。
快表,又称联想寄存器(TLB),是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换的过程。
快表存放在更高速的存储器中,页表存放在内存中。
最近使用过的页表项会放入快表。
步骤:
①CPU给出逻辑地址,由硬件算得页号、页内偏移量,将页号与快表中的所有页号比较。
②如果找到匹配的页号,说明要访问的页表项在快表中有副本,则直接从中取出对应的内存块号,再讲内存块号与页内偏移量拼接成物理地址,最后访问物理地址对应的内存单元,因此,若快表命中,则访问某个逻辑地址仅需一次访存即可。
③如果没有找到页号,则需要访问页表,找到对应页表项,得到页面存放的内存块号,再将内存块号与页内偏移量拼接成物理地址,最后,访问该物理地址对应的内存单元,因此,若快表未命中,则访问需要两次访存。
例题
例:某系统使用基本分页存储管理,并采用了具有快表的地址变换机构,访问一次快表耗时1us,访问一次内存耗时100us,若快表的命中率为90%,那么访问一个逻辑地址的平均耗时是多少?
答:(1+100)*0.9+(1+100+100)*.0.1 = 111us
如果是快表和页表同时查找,应该是(1+100)*0.9+(100+100)*0.1 = 110.9us
若不采用快表机制,则需要100+100 = 200us
四、两个地址变换机构对比
-
java模拟请求分页系统中的地址变换过程
2021-02-26 13:45:32创建请求页表,通过编程模拟缺页中断和地址变换,实现请求调页功能和页面置换功能。 -
(C++)模拟请求分页虚拟存储管理中的硬件地址变换过程
2017-12-12 00:19:20请求分页虚拟存储管理技术是把作业地址空间的全部信息存放在磁盘上。当作业被选中运行时,先把作业的开始几页装入主存并启动运行。为此在为作业建立页表时,应说明哪些页已在主存,哪些页不在主存。 -
【操作系统】王道考研 p37-39 基本分页存储管理的基本概念、基本地址变换机构、具有快表的地址变换机构
2021-12-09 21:13:22基本分页存储管理的基本概念基本分页存储管理的基本概念
基本地址变换机构
具有快表的地址变换机构以下是基本分页存储管理的基本概念
引入
因为连续分配方式的各种缺点,而产生了非连续分配方式。
知识总览
把“固定分区分配”改造为“非连续分配版本”
基本分页存储管理的思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分。
分页存储管理的基本概念
简而言之:将内存分为若干大小相等的分区(假设大小为a),每个分区称为==“页框”==。==每个分区有一个编号,从0开始。==将进程分为若干大小为a的部分(最后一部分<=a)。页框不能太大,否则产生过大的内部碎片。(如进程大小为20,a为3,那么进程就分为6个3和1个2,2就是最后一个页框存储的大小,多出来的1就是内部碎片)。
操作系统以页框为单位为各个进程分配内存空间。
进程的页面与内存的页框是一一对应的。
如何实现地址的转换
分页大概是分成这样:
如何计算:
页号=逻辑地址/页面长度。
页内偏移量=逻辑地址%页面长度。
与二进制的联系:(好复杂 我好像没在课上听过)
后k位是余数,是会变的,是页内偏移量。
其余是除数,是不变的,是页号。
逻辑地址结构
感觉就是上面内容的总结。
页表
为了知道进程的每个页面在内存中的存放位置,操作系统要为每个进程建立一张页表。
- 一个进程对应一张页表
- 进程的每一页对应一个页表项
- 每个页表项=页号+块号
- 页表记录进程页面和实际存放的内存块之间的对应关系
- 每个页表项的长度相同,页号隐含
关于为什么每个页表项长度相同,页号隐含:
以下是基本地址变换机构
基本地址变换机构
基本地址变换机构也属于基本分页存储管理,它是用于实现逻辑地址到物理地址转换的一组硬件机构。
逻辑地址到物理地址转换的步骤:
文字版步骤:第二步举个例子:算出的页号P是5,页表长度M是5,说明需要的地址在第五页,而已有的页为0、1、2、3、4这5个,越界。
用一个例题来深刻理解这个知识:
对页表项大小的进一步探讨
简而言之:让一个页表项更大,更方便(?)。
以下是具有快表的地址变换机构
局部性原理
简而言之:如果一个存储单元被访问了,那么跟它同一个“局部”的之后很有可能被访问。
什么是快表TLB
快表,又称为联想寄存器(TLB),是一种访问速度比内存快得多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换的过程。与此对应,内存中的页表常称为慢表。
流程图:
引入快表之后,地址的变换过程
注意:快表没有命中则要对目标逻辑地址进行两次访存。
(一次找,一次放进快表)
一个例子:
总结
-
Java模拟操作系统实现存储管理_基本分页存储管理方式的模拟与实现
2020-01-22 11:21:24存储器管理 1实验内容模拟请求页式存储管理中硬件的地址转换和缺页中断并用先进先出调度算法FIFO处理缺页中断 2要求 指令序列的设定可以执行拟定格式如表3 在完成了FIFO换页策略后可以选做LRU的换页策略并进行比较 ... -
3.1.7分页存储的基本地址变换机构
2021-09-16 11:27:20基本地址变换机构,可以理解为将逻辑地址转变为物理地址的一组硬件机构,这些硬件需要做些什么事情,才能将逻辑地址转换为物理地址。 页表寄存器 基本地址变换机构,可以借助进程的页表将逻辑地址转换为物理地址...全知识整理目录
操作系统整理的目录,包括了整理的所有操作系统的知识。
概述
什么是基本地址变换机构?
基本地址变换机构,可以理解为将逻辑地址转变为物理地址的一组硬件机构,这些硬件需要做些什么事情,才能将逻辑地址转换为物理地址。
页表寄存器
基本地址变换机构,可以借助进程的页表将逻辑地址转换为物理地址。
通常情况下,会在系统中设置一个页表寄存器(PTR),存放页表在内存的起始地址F和页表长度M。
当进程还是未执行的时候,页表的起始地址和页表长度,放在进程控制块当中,当进程被调度时,操作系统内核会把它们放到页表寄存器中。
ps:页面的大小是2的整数幂。
设页面大小为L,逻辑地址A到物理地址E的变换过程是怎么样的呢?
首先根据页号P和页内偏移量W(如果用十进制来计算,那么P=A/L,W=A%L,在实际计算机运行的过程当中,逻辑地址是固定不变的,那么就会让其计算的速度更快)。
比较页号P和页表长度M,若P>=M,则产生越界中断,否则继续执行。(页号是从0开始的,页表长度至少是1,因此P=M时也会发生越界)
页表中页号P对应的页表项地址=页表起始地址F+页号P*页表项长度,取出该页表项内容b,即为内存块号
计算物理地址E=b*L+W(可以看见,页面大小L是已知的,偏移量W是比较好计算的,只有页表项内容b是不好计算的,也是最容易出错的)
待续。。。
-
《操作系统》——分页存储管理方式逻辑地址到物理地址的转换
2021-06-06 13:52:57一、连续分配方式缺点 连续分配方式的主要缺点是会形成许多碎片,...基本的分页存储管理方式不具备页面对换功能,也不支持实现虚拟存储器功能,它需要把每个作业全部装入内存后才能运行。 三、页面 分页存储管理是将 -
操作系统之存储管理:分页存储管理&地址变换【全面代码&原理解释】
2021-06-12 22:24:26掌握分页存储管理的基本原理及分页存储管理中的地址变换过程,编制一个模拟地址变换过程的程序并能采用先进先出页面置换算法实现页面置换。 二、实验内容 1、复习分页存储管理的基本概念、基本原理、及地址变换过程... -
(王道408考研操作系统)第三章内存管理-第一节6-2:非连续分配管理方式之基本分页存储管理之基本地址变换...
2021-12-05 19:16:02文章目录一:地址变换机构概念二:地址变换机构的过程演示和手算步骤(1)演示和计算方法(2)例题 一:地址变换机构概念 地址变换结构:地址变换机构可以借助进程的页表将逻辑地址转化为物理地址。通常会在系统中... -
3.1.7 OS之分页存储管理的基本地址变换结构
2020-05-03 23:04:26文章目录0.思维导图1.页表寄存器地址变换过程2.对页表项大小的进一步讨论 0.思维导图 1.页表寄存器 地址变换过程 一道例题加深印象: 2.对页表项大小的进一步讨论 参考:《王道操作系统》 ... -
操作系统实验分页式存储和地址转换
2019-01-05 12:12:34在第1部分实验基础上实现进程的分页式内存分配和地址转换过程,并进一步实现请求分页式存储分配和地址转换过程。页面置换算法至少应实现先进先出(FIFO)、最近最久未使用(LRU)等算法。 -
操作系统--分页存储管理中逻辑地址转换为物理地址
2019-09-23 06:45:12【例1】考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问: ...页号的地址位数决定了页的多少,假设页号有20位,则地址空间中最多可容纳的页面数为220,即1M... -
基于C/C++模拟处理机调度、存储管理(动态分区分配、分页存储地址转换)和文件系统.zip
2022-05-09 19:43:55基于C/C++模拟处理机调度、存储管理(动态分区分配、分页存储地址转换)和文件系统 基于C/C++模拟处理机调度、存储管理(动态分区分配、分页存储地址转换)和文件系统 基于C/C++模拟处理机调度、存储管理... -
三、操作系统内存管理(7)基本地址变换机构:
2022-03-12 22:37:07在基本分页存储管理中用于实现逻辑地址到物理地址转换的一组硬件机构。 2.基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。 通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始... -
请求分页式存储管理的地址转换过程实现:
2013-05-11 15:29:32利用键盘输入本模拟系统的物理块的大小,作业的页表中的块号;完成逻辑地址转换成相应的物理地址的过程。 1、建立一张位示图,用来模拟内存的分配情况,利用随机数产生一组0和1的数对应内存的使用情况。 2、输入块... -
操作系统 实验 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断
2010-11-09 23:14:16模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及用先进先出(FIFO)页面调度算法处理缺页中断。 用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。(题目四) 包含详细实验报告· -
基本分页存储管理方式
2022-03-11 13:46:40基本分页存储管理方式~ -
基本分段存储管理方式(分段 段表 地址变换 分段、分页管理的对比)
2021-08-30 22:19:15文章目录前言知识总览分段段表地址变换 前言 此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。 提示:以下是本篇文章正文内容 知识总览 分段 进程的地址... -
分页存储管理系统地址转换
2009-12-16 11:01:08在分页存储管理系统中进行地址转换时,地址变换机构将自动把逻辑地址转化为页号和页内地址,如果页号不小于页表长度,则产生越界中断;否则便以页号为索引去检索页表,从中得到对应的块号,并把块号和页内位移分别... -
模拟分页式存储管理中硬件的地址转换和产生缺页中断
2011-03-23 16:00:44操作系统 模拟分页式存储管理中硬件的地址转换和产生缺页中断c++ -
模拟分页式存储管理中硬件的地址转换和产生缺页中断.
2011-10-10 23:18:52模拟分页式存储管理中硬件的地址转换和产生缺页中断.------很好用的程序和源代码 -
基本分页存储管理实现逻辑地址到物理地址转换的过程
2020-06-09 10:11:01基本概念: 页框/内存块:将内存空间分为大小相等的分区,每个分区就是一个...从而实现逻辑地址到物理地址的转换。 如图: 接下来看具体的实现过程: 1.在进程未调度时,PCB中会存放页表始址和页表长度(多少个页表项 -
操作系统页式存储管理地址变换过程模拟--python带界面
2018-12-06 14:29:34操作系统的编程作业例子 1.模拟页式存储过程地址变换过程模拟 2.可用于学习理解页式存储过程中逻辑地址到物理地址的转换过程 3.带有界面,仅供参考。水平有限,如有错误欢迎指正。 -
【操作系统】分页存储管理
2019-04-17 09:36:58分页式存储管理:离散分配的基本单位是页 分段式存储管理:离散分配的基本单位是段 段页式存储管理:离散分配的基本单位是段、页 空间划分 1)对于进程:将一个用户进程的地址空间(逻辑空间)划分成若干个大小... -
实验四 页式虚拟存储管理中地址转换和页式中断 FIFO LRU OPT C++版本.doc
2020-01-17 01:38:14实验四 页式虚拟存储管理中地址转换和页式中断 FIFO 一实验目的 深入了解页式存储管理如何实现地址转换进一步认识页式虚拟存储管理中如何处理缺页中断以及页面置换算法 二实验主要内容 编写程序完成页式虚拟存储管理... -
在请求分页存储管理系统中,调出距当前最长时间内没有被访问的页面的页面置换算法是____。
2021-02-11 22:11:48【单选题】分页式虚拟存储管理系统中,一般来说页面的大小与可能产生缺页中断的次数_____。【单选题】对页式管理中页表的描述,正确的是____。【单选题】在可变式分区存储管理中,某作业完成后要收回其主存空间,该空间...