A. 段页式存储管理方式的地址变换过程
在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长TL。进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若S<TL,表示未越界,于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。右图示出了段页式系统中的地址变换机构。
在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。
显然,这使访问内存的次数增加了近两倍。为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍须再三次访问内存。
B. 内存管理
在一段时间内,程序的执行仅限于某个部分,相应地,它所访问的存储空间也局限于某个区域。
局部性原理的 分类 :
将编译后的目标模块装配成一个可执行程序。
可执行程序以 二进制可执行文件 的形式存储在磁盘上。
链接程序的 任务 :
程序的链接,可划分为:
重定位 :将逻辑地址(相对地址)转换为物理地址(绝对地址)的过程。
物理地址 = 逻辑地址 + 程序在内存中的起始地址
程序的装入,可划分为:
任何时刻主存储器 最多只有一个作业 。
每个分区 大小固定不变 :分区大小相等、分区大小不等。
每个分区可以且 仅可以装入一个作业 。
使用 下限寄存器 和 上限寄存器 来保存当前作业的起始位置和结束位置。
使用 固定分区说明表 区分各分区的状态。
分区 大小不是预先固定的 ,而是按作业(进程)的实际需求来划分的。
分区 个数也不是预先固定的 ,而是由装入的作业数决定的。
使用 空闲分区表 说明空闲分区的位置。
使用 空闲分区链 说明空闲分区的位置。
首次适应算法的 过程 :
外部碎片:空闲内存 没有在 分配的 进程 中。
内部碎片:空闲内存 在 分配的 进程 中。
从 上次找到的 空闲分区的 下一个 空闲分区开始查找。
优点:空闲区分布均匀、查找开销较小。
缺点:缺乏大空闲区。
最佳适应算法的 过程 :
优点:提高内存利用率。
注意点:每次在进行空闲区的修改前,需要先进行 分区大小递增 的排序。
页 :将一个 进程 的 逻辑地址空间 分成若干个 大小相等 的 片 。
页框 :将 物理内存空间 分成与页大小相同的若干个 存储块 。
分页存储 :将进程的若干 页 分别装入多个 可以不相邻 的 页框 中。
页内碎片 :进程 最后一页 一般装不满一个页框,形成 页内碎片 。
页表 :记录描述页的各种数据,实现从 页号 到 页框号 的映射。
注意: 页内偏移量 的单位是 字节 。
分页地址变换指是: 逻辑地址 通过 地址变换机构 变换为 物理地址 。
分页地址变换的 过程 :
操作系统在修改或装入页表寄存器的值时,使用的是 特权级 指令。
页大小:512B ~ 4KB,目前的计算机系统中,大多选择 4KB 大小的页。
页大小的 选择因素 :
快表也称为“转换后援缓冲”,是为了提高CPU访问速度而采用的专用缓存,用来存放 最近被访问过的页表项 。
英文缩写:TLB。
组成: 键和值 。
在TLB中找到某一个页号对应的页表项的百分比称为 TLB命中率 。
当 能 在TLB中找到所需要的页表项时:
有效访问时间 = 一次访问TLB 的时间 + 一次访问内存 的时间(访问内存读写数据或指令)
当 不能 在TLB中找到所需要的页表项时:
有效访问时间 = 一次访问TLB 的时间 + 两次访问内存 的时间(一次访问内存页表,一次访问内存读写数据或指令)
将页表再分页,形成两级或多级页表,将页表离散地存放在物理内存中。
在进程切换时,要运行的进程的页目录表歧视地址被写入 页表寄存器 。
在二级分页系统中,为页表再建立一个页目录表的目的是为了能在地址映射时得到页表在物理内存中的地址,在页目录表的表项中存放了每一个 页表 在物理内存中所在的 页框号 。
虚拟存储器 :是指具有 请求调入功能 和 置换功能 ,能 从逻辑上对内存容量进行扩充 的一种存储系统。
请求调入 :就是说,先将进程一部分装入内存,其余的部分什么时候需要,什么时候请求系统装入。
置换 :如果请求调入时,没有足够的内存,则由操作系统选择一部分内存中的进程内容移到外存,以腾出空间把当前需要装入的内存调入。
为了实现请求分页,需要:
保证进程正常运行的所需要的最小页框数。
最小页框数与进程的大小没有关系,它与计算机的 硬件结构 有关,取决于 指令的格式、功能和寻址方式 。
内存不够时,从进程本身选择淘汰页,还是从系统中所有进程中选择?:
采用什么样的算法为不同进程分配页框?:
常用的两种 置换策略 : 局部置换 和 全局置换 。
从分配给进程的页框数量上看,常使用的两种 分配策略 : 固定分配 和 可变分配 。
用新调入的页替换 最长时间没有访问 的页面。
找到 未来最晚被访问 的那个页换出。
,P为缺页率。
有效访问时间与缺页率成 正比 ,缺页率越高,有效访问时间越长,访问效率越低。
工作集 :某段时间间隔里,进程实际要访问的页的集合。
引入工作集的 目的 :降低缺页率,提高访问内存效率。
抖动 :运行进程的大部分时间都用于页的换入换出,几乎不能完成任何有效果工作的状态。
抖动的 产生原因 :
抖动的 预防方法 :
在分段存储管理的系统中,程序使用 二维 的逻辑地址,一个数用来表示 段 ,另一个数用来表示 段内偏移量 。
引入分段的 目的 :
引入分段的 优点 :
进程的地址空间被划分成 若干个段 。
每个段定义了一组逻辑信息,每个段的大小由相应的逻辑信息组的长度确定, 段的大小不一样 ,每个段的逻辑地址从0开始,采用一段 连续的地址空间 。
系统为每个段分配一个 连续的物理内存区域 ,各个 不同的段可以离散 地放入物理内存不同的区域。
系统为 每个进程建立一张段表 ,段表的每一个表项记录的信息包括: 段号、段长和该段的基址 ,段表存放在内存中。
分段的 逻辑地址结构 :
段表是由操作系统维护的用于支持分段存储管理 地址映射 的数据结构。
每个进程有一个段表,段表由段表项构成。每个段表项包括: 段号、段长(段的大小)和该段的基址(段的起始地址) 。
若已知逻辑单元的地址为 S:D (段号:段内偏移量),求相应物理地址的步骤如下:
相同点 :分页和分段都属于 离散 分配方式,都要通过数据结构与硬件的配合来实现 逻辑地址到物理地址 的映射。
不同点 :
将用户进程的逻辑空间 先划分为若干个段 , 每个段再划分成若干个页 。
进程以页为单位在物理内存中 离散 存放,每个段中被离散存放的页具有 逻辑相关性 。
为了实现地址映射,操作系统为 每个进程建立一个段表 ,再为 每个段建立一个页表 。
进程段表的段表项组成:
满足以下条件的两个块称为 伙伴 :
C. 基本分页存储管理
假设是按字节编址
考虑支持多道程序的两种连续分配方式
原因:连续分配要求进程占有的必须是一块连续的内存区域
能否讲一个进程分散地装入到许多不相邻的分区,便可充分利用内存
基本分页存储管理的思想:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分
页框/页帧:内存空间分成的一个个大小相等的分区(比如4KB)
页框号:页框的编号,从0开始,从低地址开始
页/页面:用户进程的地址空间分为和页框大小相等的一个个区域
页号:页/页面的编号,从0开始
进程的最后一个页面可能没有一个页框那么大,页框不能太大,否则可能产生过大的内部碎片
操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中,也就是说,进程的页面与内存的页框有一一对应的关系
每个页面不必连续存放,也不必按照先后顺序,可以放到不相邻的各个页框中
进程在内存中连续存放时,通过动态重定位实现逻辑地址到物理地址的转换。在装入模块之后,内存中指令使用的依然是逻辑地址,直到指令执行的时候才会进行地址转换。系统会设置一个重定位寄存器,用来存放装入模块存放的起始位置,重定位寄存器中的值加上逻辑地址就是该逻辑地址实际对应的物理地址
如果采用分页技术
页框大小为4KB,地址空间为4GB的系统
页号为前20位,页内偏移量为后12位
页表:为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表
一个进程对应一张页表
进程的每一页对应一个页表项
每个页表项由页号和页框号组成
页表记录进程页面和实际存放的页框之间的对应关系
每个页表项的长度是相同的,页号是隐含的
各页表项会按顺序连续存放在内存中,如果该页表在内存中的起始地址是X,4GB/4KB系统的页框有
用于实现逻辑地址到物理地址转换的一组硬件机构
通常会在系统中设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M(M个页表项)
进程未执行时,页表的起始地址和页表长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把他们放到页表寄存器中
基本分页存储管理中地址是一维的,即只要给出一个逻辑地址,系统就可以自动计算出页号、偏移量,不需要显式告诉系统偏移量是多少
理论上,页表项长度为3即可表示内存块号的范围,但是为了方便页表查询,会让页面恰好能装得下整数个页表项,令每个页表项占4字节
4KB页面,可以放4096/3 =1365个页表项,有4096%3 =1B的碎片,访问1365及之后的页表项时,还要考虑前面的页框中的碎片,才能得到页表项的物理地址,比较麻烦
进程页表通常存放在连续的页框中,这样就能用统一的计算方式得到想要得到的页表项存储的位置
地址变换过程中有两次访存操作:查询页表、访问目标内存单元
局部性原理
如果这个程序将程序对应的指令存放在10号内存块,将程序中定义的变量存放在23号内存块,当这个程序执行时,会很频繁地反问10、23号内存块
时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能被再次执行;如果某个数据被访问过,不久之后该数据很有可能再次被访问(因为程序存在大量循环)
空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问(因为很多数据在内存中连续存放)
基本地址变换机构中,每次要访问一个逻辑地址,都要查询页表,由于局部性原理,可能连续多次查询同一个页表项
快表:又称联想寄存器(TLB),是一种访问速度比内存块很多的高速缓存,用来存放当前访问的若干页表项,以加速地址变换的过程。内存中的页表常称为慢表
引入快表后地址的变换过程
一般来说,快表的命中率可以达到90%以上
单级页表存在的问题
对问题1
可将页表进行分组,使每个内存块刚好可以放入一个分组。为离散分配的页表再建立一张页表,称为页目录表,或外层页表
各级页表的大小不能超过一个页面
针对两级页表
对问题2
可以在需要访问页面时,才把页面调入内存(虚拟存储技术),可以在页表项中增加一个标志位,用于表示该页面是否已经调入内存
若想访问的页面不在内存中,会产生缺页中断(内中断),然后将目标页面从外存调入内存
之后的文章会有展开
两级页表访存次数分析:如果没有TLB,第一次访存是访问内存中的页目录表,第二次访存是访问内存中的二级页表,第三次访存是访问目标内存单元
D. 分页和分段存储管理相同点是什么
基本分段存储管理方式和基本分页存储管理方式二者的理论基础都是相对差不多的,二者都是建立在内存分区管理思想和程序局缺逗部性原理的基础之上。
基本分页存储管理方式在存储器管理中,连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将许多碎租扮此片拼接成可用的大块空间,但须为之付出很大开销。
在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及栈段S等。
(4)分页分段存储管理中地址变换扩展阅读:
基本分段存储管理方式和基本分页存储管弊迅理方式原理的结合就是段页式系统的基本原理,即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。
在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段表长TL。进行地址变换时,首先利用段号S,将它与段表长TL进行比较。
E. 在具有块表的段页式存储管理方式中,如何实现地址变换
实现方案如下:
首先设置一段表寄存器,在其中存放段表始址和段长SL,进行地址变换时,利用段号S与段长SL进行比较,若S<SL,表示未越界,于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得出该段的页表始址;
并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。
在具有快表的段页式存储管理方式中,段表和页表被放在快表内,每次访问它时,利用段号和页号去访问快表,若找到匹配项,便可以从中得到相应的物理块号,用来和业内地址一起生成物理地址;
若找不到匹配项,则需3次访问内存,得到物理块号,并将其抄入快表。快表已满时,则通过适当的算法,换出最近最久没有被访问的项。
F. 段页式存储管理地址转换需要什么支持
映射速度,硬件需要提供如下 2 个寄存器: 段表始址寄存器;② 段表长度寄存器; (5)地址映射过程 在段页式存储猜族管理 ...
网络知道
总结段氏存储管理的地址转换 - 网络文库
2页发布时间: 2022年08月17日
(4)硬件支持 为加快地址映射速度,硬件需要提供如下野兆铅 2 个寄存器: 段表始址寄存器;② 段表长度寄存器; (5)地址映射过程 在段页式存储管理中,...
网络文库
操作系统——段式存储管理 - Linux加油站的博客 - CSDN博客
1. 基本原理 前面介绍的各种存储管理中,供用户使颂好用的逻辑地址都是连续的,用户在编制大型程序时就会感到不方便。一个实际的程序往往是由若干段组成的,例如
2. 转换和地址保护 为使作业正确执行 ,首先须记下各段位置 ,为此系统设立一个“段表”记录作业每个段在内存中首地址和长度,如图3.22所示。在作业
3. 段页式存储管理 用户作业采用分段结构后,不仅方便了编制程序(各模块可以独 立编程),而且具有逻辑上清晰的优点。段式存储管理支持了用户的分段观点,但它的
CSDN编程社区
3.1.11 OS之段页式存储管理(段表、页表、地址转换、)
1. 分页、分段的优缺点分析