操作系统复习-存储管理

合集下载

操作系统-存储管理(4)段页式虚拟存储

操作系统-存储管理(4)段页式虚拟存储

操作系统-存储管理(4)段页式虚拟存储物理地址:⼜称绝对地址,即程序执⾏所使⽤的地址空间(处理器执⾏指令时按照物理地址进⾏)逻辑地址:⼜称相对地址,即⽤户编程所使⽤的地址空间,从0开始编号,有两种形式:⼀维逻辑地址(地址)⼆维逻辑地址(段号:段内地址)主存储器空间的分配与去配:分配:进程装⼊主存时,存储管理软件进⾏具体的主存分配操作,并设置⼀个表格记录主存空间的分配情况去配:当某个进程撤离或主动归还主存资源时,存储管理软件要收回它所占⽤的全部或者部分存储空间,调整主存分配表信息主存储器空间的共享:多个进程共享主存储器资源:多道程序设计技术使若⼲个程序同时进⼊主存储器,各⾃占⽤⼀定数量的存储空间,共同使⽤⼀个主存储器多个进程共享主存储器的某些区域:若⼲个协作进程有共同的主存程序块或者主存数据块多道程序设计需要复⽤主存:按照分区复⽤:主存划分为多个固定/可变尺⼨的分区,⼀个程序/程序段占⽤⼀个分区按照页架复⽤:主存划分成多个固定⼤⼩的页架,⼀个程序/程序段占⽤多个页架装载程序/加载器(loader)把可执⾏程序装⼊内存的⽅式有:绝对装载可重定位装载动态运⾏时装载地址转换:⼜称重定位,即把可执⾏程序逻辑地址转换成绝对地址,可分为:静态地址重定位:由装载程序实现装载代码模块的加载和地址转换(⽆需硬件⽀持),把它装⼊分配给进程的内存指定区域,其中所有指令代码和数据的逻辑地址在执⾏前⼀次全部修改为内存物理地址。

早期单任务单⽤户OS使⽤。

动态地址重地位:由装载程序实现装载代码模块的加载,把它装⼊进程的内存在指定区域,但对链接程序处理过的应⽤程序逻辑地址不做修改,程序内存起始地址被置⼊重定位寄存器(基址寄存器)。

程序执⾏过程中每当CPU访问程序和数据引⽤内存地址时,由硬件地址转换机构截取此逻辑地址并加上重定位寄存器的值。

运⾏时链接地址重定位存储保护:为避免主存中的多个进程相互⼲扰,必须对主存中的程序和数据进⾏保护。

计算机操作系统第四章存储器管理复习资料

计算机操作系统第四章存储器管理复习资料

第四章存储器管理第一部分教材习题(P159)15、在具有快表的段页式存储管理方式中,如何实现地址变换?答:在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段长TL。

进行地址变换时,首先利用段号S,将它与段长TL进行比较。

若S<TL,表示未越界,利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。

在段页式系统中,为了获得一条指令或数据,须三次访问内存。

第一次访问内存中的段表,从中取得页表始址;第二次访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。

显然,这使访问内存的次数增加了近两倍。

为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。

每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍须再三次访问内存。

19、虚拟存储器有哪些特征?其中最本质的特征是什么?答:虚拟存储器有以下特征:多次性:一个作业被分成多次调入内存运行,亦即在作业运行时没有必要将其全部装入,只需将当前要运行的那部分程序和数据装入内存即可;以后每当要运行到尚未调入的那部分程序时,再将它调入。

多次性是虚拟存储器最重要的特征,任何其他的存储器管理方式都不具有这一特征。

因此,认为虚拟存储器是具有多次性特征的存储器系统。

对换性:允许在作业的运行过程中进行换进、换出,也即,在进程运行期间,允许将那些暂不使用的程序和数据,从内存调至外存的对换区(换出),待以后需要时再将它们从外存调至内存(换进);甚至还允许将暂不运行的进程调至外存,待它们重又具备运行条件时再调入内存。

计算机操作系统第四章-存储器管理

计算机操作系统第四章-存储器管理

第四章存储器管理第0节存储管理概述一、存储器的层次结构1、在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。

但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等多方面,同时满足用户的需求。

实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。

2、各种存储器•寄存器、高速缓存Cache:少量的、非常快速、昂贵、需要电源维持、CPU可直接访问;•内存RAM:若干(千)兆字节、中等速度、中等价格、需要电源维持、CPU可直接访问;•磁盘高速缓存:存在于主存中;•磁盘:数千兆或数万兆字节、低速、价廉、不需要电源维持、CPU 不可直接访问;由操作系统协调这些存储器的使用。

二、存储管理的目的1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。

(注意cpu和主存储器,这两类资源管理的区别)2、存储管理的主要功能:•地址重定位•主存空间的分配与回收•主存空间的保护和共享•主存空间的扩充三、逻辑地址与物理地址1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。

●一个用户程序的所有逻辑地址组成这个程序的逻辑地址空间(也称地址空间)。

这个空间是以0为基址、线性或多维编址的。

2、物理地址(绝对地址,实地址):是一个实际内存单元(字节)的地址。

●计算机内所有内存单元的物理地址组成系统的物理地址空间,它是从0开始的、是一维的;●将用户程序被装进内存,一个程序所占有的所有内存单元的物理地址组成该程序的物理地址空间(也称存储空间)。

四、地址映射(变换、重定位)当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把逻辑地址转换为对应的物理地址----地址映射;地址映射分静态和动态两种方式。

1、静态地址重定位是程序装入时集中一次进行的地址变换计算。

物理地址= 重定位的首地址+ 逻辑地址•优点:简单,不需要硬件支持;•缺点:一个作业必须占据连续的存储空间;装入内存的作业一般不再移动;不能实现虚拟存储。

操作系统复习存储器管理

操作系统复习存储器管理

第一章 存储器管理4.1 存储器的层次结构—存储器应容量大,便宜,速度跟上处理器4.1.1 多级存储器结构通常有三层,细分为六层,如图4-1, 越往上,速度越快,容量越小,价格越贵; 寄存器和主存又称可执行存储器,进程可直接用指令访问,辅存只能用I/O 访问;4.1.2 主存储器与寄存器1.主存储器---内存,保存进程运行时的程序和数据;CPU与外围设备交换的信息一般也依托于主存储器地址空间;为缓和访存速度远低于CPU 执行指令的速度,在计算机系统中引入了寄存器和高速缓存;2.寄存器---与CPU 协调工作,用于加速存储器的访问速度,如用寄存器存放操作数,或用地址寄存器加快地址转换速度等;4.1.3 高速缓存和磁盘缓存1.高速缓存---根据程序执行的局部性原理将主存中一些经常访问的信息程序、数据、指令等存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度;2.磁盘缓存---将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数;它依托于固定磁盘,提供对主存储器存储空间的扩充,即利用主存中的存储空间,来暂存从磁盘中读/写入的信息;4.2 程序的装入和链接多道程序运行,需先创建进程;而创建进程第一步是将程序和数据装入内存;将源程序变为可在内存中执行的程序,通常都要经过以下几个步骤:编译---若干个目标模块;链接---链接目标模块和库函数,形成装入模块;装入---图 4-2 对用户程序的处理步骤寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU 寄存器主存辅存第一步第二步第三步内存4.2.1 程序的装入——无需连接的单目标模块装入理解装入方式1. 绝对装入方式Absolute Loading Mode ---只适用单道程序环境如果知道程序的内存位置,编译将产生绝对地址的目标代码,按照绝对地址将程序和数据装入内存;由于程序的逻辑地址与实际内存地址完全相同,故不须对程序和数据的地址进行修改;绝对地址:可在编译时给出或由程序员直接赋予;若由程序员直接给出,不利于程序或数据修改,因此,通常是在程序中采用符号地址,然后在编译或汇编时转换为绝对地址;2. 可重定位装入方式Relocation Loading Mode ---适于多道程序环境多道程序环境下,编译程序不能预知目标模块在内存的位置;目标模块的起始地址是0,其它地址也都是相对于0计算的;此时应采用可重定位装入方式,根据内存情况,将模块装入到内存的适当位置,如图4-3 作业装入内存时的情况 ;3.动态运行时装入方式Dynamic Run-time Loading ---适于多道程序环境可重定位装入方式并不允许程序运行时在内存中移动位置;但是,在运行过程中它在内存中的位置可能经常要改变,此时就应采用动态运行时装入方式;动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正执行时才进行;因此,装入内存后的所有地址都仍是相对地址;问题:程序装入内存后修改地址的时机是什么4.3 连续分配方式4.3.3 动态分区分配——根据进程需要动态分配内存1. 分区分配中的数据结构1 空闲分区表—用若干表目记录每个空闲分区的分区序号、分区始址及分区的大小等数据项;2 空闲分区链--为实现对空闲分区的分配和链接,在每分区起始部分,设置前向指针,尾部则设置一后向指针;为检索方便,在分区前、后向指针中,重复设置状态位和分区大小表目;当分0内存空间区被分配后,把状态位由“0”改为“1”时,前、后向指针失去意义;图 4-5 空闲链结构2. 分区分配算法P1231首次适应算法first-fit —空闲分区链以地址递增次序链接 每次按分区链的次序从头查找,找到符合要求的第一个分区;2 循环首次适应算法—FF 算法的变种从上次找到的空闲分区位置开始循环查找,找到后,修改起始查找指针; 3 最佳适应算法—空闲分区按容量从小到大排序 把能满足要求的、最小的空闲分区分配给作业 4 最坏适应算法——空闲分区按容量从大到小排序 挑选最大的空闲区分给作业使用;5) 快速适应算法—根据容量大小设立多个空闲分区链表3. 分区分配操作1.分配内存请求分区u.size; 空闲分区m.size; m.size-u.size ≤size,说明多余部分太小, 不再切割,将整个分区分配给请求者;否则从该分区中划分一块请求大小的内存空间,余下部分仍留在空闲分区链;如图4-6 内存分配流程;2.回收内存1 回收区与插入点的前一空闲分区F1相邻:合并,修改F1大小;2 回收区与后一空闲分区F2相邻:合并,修改首地址和大小;3 回收区同时与前、后两个分区邻接:合并,修改F1大小,取消F2;4 回收区不邻接:新建表项,填写首地址和大小,并插入链表;如图前向指针N +20N 个字节可用后向指针N +2图 4-6 内存分配流程4.3.6 可重定位分区分配1.动态重定位的引入例:在内存中有四个互不邻接的小分区,容量分别为10KB 、30KB 、14KB 和26KB;若现有一作业要获得40KB 的内存空间,因连续空间不足作业无法装入;可采用的一种解决方法是:通过移动内存中作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法,称为“拼接”或“紧凑;由于用户程序在内存中位置的变化,在每次“紧凑”后,都必须对移动了的程序或数据进行重定位;图 4-8 紧凑的示意4.3.7 对换即中级调度1. 对换Swapping 的引入(a ) 紧凑前(b ) 紧凑后“活动阻塞”进程占用内存空间;外存上的就绪作业不能进入内存运行;所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间;再把已具备运行条件的进程或所需要的程序和数据,调入内存;对换是提高内存利用率的有效措施;根据对换单位可分为:进程对换、页面对换和分段对换;为了能实现对换,系统应具备以下三方面功能:对换空间的管理、进程的换出与换入2. 进程的换出与换入1进程的换出选择阻塞且优先级最低的进程,将它的程序和数据传送到磁盘对换区上;回收该进程所占用的内存空间,并对该进程的进程控制块做相应的修改;2进程的换入找出“就绪” 但已换出到磁盘上时间最久的进程作为换入进程,将之换入,直至已无可换入的进程;4.4 基本分页存储管理方式前面的连续分配方案会形成许多“碎片”,“紧凑”方法可以解决碎片但开销大;是否允许进程离散装入 离散单位不同,称分页式存储和分段式存储;不具备对换功能称为“基本分页式”,支持虚拟存储器功能称为“请求基本分页式”;4.4.1 页面与页表1. 页面1 页面和物理块---将进程的逻辑地址空间分成若干个大小相等的片,称为页面,并为各页编号;相应地把内存空间分成与页面相同大小的若干个存储块,称为物理块,也同样编号;分配时,将进程中的页装入到物理块中,最后一页经常装不满一块而形成 “页内碎片”;2 页面大小---页面的大小应选择适中;页面太小,内存碎片减小,利用率高;但页表过长,占大量内存;页面较大,页表长度小;但页内碎片大;因此,页面的大小应选择得适中,且页面大小应是2的幂,通常为512 B~8 KB;2. 地址结构分页地址中的地址结构如下:31 12 11 0它含有两部分:页号P12~31位,最多有1M 页和页内位移量W0~11位,每页的大小4KB ; 对某特定机器,其地址结构是一定的;若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P 和页内地址d 可按下式求得:MODL A d L A INT P ][=⎥⎦⎤⎢⎣⎡=3. 页表---实现从页号到物理块号的地址映射用户程序0 页1 页2 页3 页4 页5 页…n 页页表内存4.4.2 地址变换机构任务:将逻辑地址转换为物理地址;页内地址变换:因页内地址与物理地址一一对应, 可直接转换;页号变换:页表可实现从逻辑地址中页号到内存中物理块号的变换; 1.基本的地址变换机构a. 页表功能可由一组专门的寄存器实现原理;b. 页表大多驻留内存,系统中只设置一页表寄存器来存放页表在内存的始址和页表长度实际操作;c. 进程未执行时,页表始址和长度存放在PCB 中;执行时才将这两个数据装入页表寄存器中过程;图 4-12 分页系统的地址变换机构2. 具有快表的地址变换机构a. 仅用页表寄存器时,CPU 每存取一数据要两次访问内存页表-地址变换-数据;b. 为提高地址变换速度,可在地址变换机构中增设一具有并行查寻能力的特殊高速缓冲寄存器用以存放当前访问的那些页表项,称为“快表”;c. ->在CPU 给出逻辑地址,将页号P 送入快表 ->页号匹配,读物理块号后送物理地址寄存器->无匹配页号,再访问内存中页表,把从页表项中读出的物理块号送地址寄存器;同时,再将此页表项存入到快表中;->如快表已满,则OS 须找到一换出页表项换出; 为什么增加“快表”为了提高地址变换速度,可在地址变换机构中增设一个具有并行查寻能力的特殊高速缓冲寄存器,又称为“联想寄存器”Associative Memory,或称为“快表 “快表”有何缺点越界中断图 4-13 具有快表的地址变换机构4.5 基本分段存储管理方式4.5.1 分段存储管理方式的引入为什么引入推动内存从固定分配到动态分配直到分页存储,主要动力是内存利用率,而引入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需要:1方便编程---把作业按逻辑关系划分为若干段,每段有自己的名字和长度,并从0开始编址;LOAD 1,A|<D>; STORE 1,B|<C>2 信息共享---段是信息的逻辑单位;为实现共享,存储管理应与用户程序分段的组织方式相适应;3 信息保护---对信息的逻辑单位进行保护,应分段管理;4 动态增长---分段存储能解决数据段使用过程中动态增长;5 动态链接---运行过程中动态调入以段为单位的目标程序;4.5.2 分段系统的基本原理1. 分段作业划分为若干段,如图4-16,每个段用段号来代替段名,地址空间连续;段的长度由逻辑信息长度决定,因而各段长度不等;其逻辑地址由段号段名和段内地址所组成,结构如下: 31 16 15 0该地址结构中,允许一个作业最多有64K 个段,每个段的最大长度为64KB;编译程序能自页表寄存器逻辑地址L 物理地址动根据源程序产生若干个段;2.段表,其中每段占一个表项,中;图4-16 利用段表实现地址映射3.分页和分段的主要区别1 页是信息的物理单位,分页是为提高内存的利用率,是为满足系统管理的需要;段则是信息的逻辑单位,分段是为了能更好地满足用户的需要;2 页的大小固定且分页由系统硬件实现;而段的长度不固定,通常由编译程序根据信息的性质来划分;3 分页的作业地址空间是一维的,程序只需一个地址记忆符;而分段的作业地址空间是二维的,程序员既需给出段名,又需给出段内地址;4.5.3 信息共享可重入代码纯代码:允许多个进程同时访问的代码;绝对不允许可重入代码在执行中改变,因此,不允许任何进程修改它;4.5.4 段页式存储管理方式1.基本原理---,,,4KB;作业空间内存空间子程序段数据段(a)段号(S)段内页号(P)页内地址(W)(b)主程序段图4-21 利用段表和页表实现地址映射4.6 虚拟存储器的基本概念前面各种存储器管理方式共同点:它们要求将一个作业全部装入内存后方能运行,于是出现了下面这样两种情况:1 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行;2 有大量作业要求运行,但由于内存容量不足以容纳所有这些作业,只能将少数作业装入内存让它们先运行,而将其它大量的作业留在外存上等待;4.5.1 虚拟存储器的引入1.常规存储器管理方式的特征1 一次性;将作业全部装入内存后方能运行,此外有许多作业在每次运行时,并非其全部程序和数据都要用到;一次性装入,造成了对内存空间的浪费;2 驻留性;作业装入内存后一直驻留,直至运行结束;尽管因故等待或很少运行,都仍将继续占用宝贵的内存资源;现在要研究的问题是:一次性及驻留性在程序运行时是否必需;2.局部性原理早在1968年, Denning.P就曾指出:1 程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的;2 过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域,但经研究看出,过程调用的深度在大多数情况下都不超过5;3 程序中存在许多循环结构,这些虽然只由少数指令构成, 但是它们将多次执行;4 程序中还包括许多对数据结构的处理, 如对数组进行操作,它们往往都局限于很小的范围内;局限性主要表现在下述两个方面:1 时间局限性-由于循环操作的存在;如果程序中的指令或数据一旦执行,则不久以后可能再次访问;2 空间局限性-由于程序的顺序执行;程序在一段时间内所访问的地址,可能集中在一定的范围之内;3. 虚拟存储器定义---基于局部性原理程序运行前,仅须将要运行的少数页面或段装入内存便可启动,运行时,如果需要访问的页段尚未调入内存缺页或缺段,用OS提供请求调页段功能调入;如果此时内存已满,则还须再利用页段的置换功能,将内存中暂时不用的页段调至外存,腾出足够的内存空间后,再将要访问的页段调入;所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上扩充内存容量的一种存储器系统;其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存,成本接近于外存;4.6.3 虚拟存储器的特征1)多次性---一个作业被分成多次调入内存运行,最初装入部分程序和数据,运行中需要时,再将其它部分调入;2)对换性---允许在作业的运行过程中进行换进、换出;换进和换出能有效地提高内存利用率;3)虚拟性---从逻辑上扩充内存容量,使用户所看到远大于实际内存容量;这是虚拟存储器最重要的特征和最重要的目标;4)离散性---是以上三个特性的基础,在内存分配时采用离散分配的方式;备注:虚拟性是以多次性和对换性为基础的,而多次性和对换性又必须建立在离散分配的基础上;4.7 请求分页存储管理方式4.6.1 请求分页中的硬件支持---页表、缺页中断和地址变换请求分页系统是在分页的基础上,增加了“请求调页”和“页面置换”功能,每次调入和换出基本单位都是长度固定的页,实现比请求分段简单;1.页表机制---将用户地址空间中的逻辑地址变换为内存空间中的物理地址,因只将部分调入内存,需增设若干项;在请求分页系统中的每个页表项如下所示:1 状态位P:该页是否已调入内存,供访问时参考;2 访问字段A:记录一段时间内本页被访问的频率,供选择换出页时参考;3 修改位M:页在调入内存后是否被修改过,供置换页面时参考;4 外存地址:指出该页在外存上的地址,即物理块号,供调入该页时参考;4.7.2 内存分配策略和分配算法1.最小物理块数的确定是指能保证进程正常运行所需的最小物理块数,当系统为进程分配的物理块数少于此值时,进程将无法运行;进程应获得的最少物理块数与计算机的硬件结构有关;对于某些简单的机器,所需的最少物理块数为2,分别用于存放指令和数据,间接寻址时至少要有三块;对于某些功能较强的机器,因其指令本身、源地址和目标地址都可能跨两个页面,至少要为每个进程分配6个物理块,以装入这些页面;2. 物理块的分配策略请求分页系统的两种内存分配策略:即固定和可变分配策略;两种置换策略:即全局置换和局部置换;可组合出以下三种策略;1 固定分配局部置换Fixed Allocation, Local Replacement--每进程分配一定数目的物理块,在整个运行期间都不再改变,换入换出都限于这些物理块;每个进程物理块难以确定,太多太少都不好2 可变分配全局置换Variable Allocation, Global Replacement --每进程分配一定数目的物理块,OS 保持一空闲物理块队列;进程缺页时,摘下一空闲块,并将该页装入;3 可变分配局部置换Variable Allocation, Local Replacemen --每进程分配一定数目的物理块;进程缺页时,只允许从该进程内存页中选出一页换出;若缺页中断频繁,再为该进程分配若干物理块,直至缺页率减少;若缺页率特低,则减少该进程的物理块数,应保证缺页率无明显增加;3. 物理块分配算法1 平均分配算法--将所有可供分配的物理块,平均分配给各个进程; 例如,有100个物理块,5个进程,每进程可分20个物理块;未考虑到各进程本身的大小;2 按比例分配算法--根据进程的大小按比例分配物理块;共n 个进程,每进程页面数为si,则页面数的总和为:设可用的物理块为m,每进程分到的物理块数为bi,有:3 考虑优先权的分配算法--为了照顾重要、紧迫的作业尽快完成,为它分配较多的空间;通常采取:把可供分配的物理块分成两部分:一部分按比例分给各进程;另一部分根据优先权分给各进程;有的系统是完全按优先权来分配;4.7.3 调页策略1. 何时调入页面1 预调页策略缺页前 :页面存放连续,用预测法一次调入多个相邻页,预测成功率仅为50%;2 请求调页策略缺页时:运行中,发现不在内存,立即请求,由OS 调入;2. 从何处调入页面请求分页系统中外存分为两部分:文件区和对换区;这样,当发生缺页请求时,系统应从何处将缺页调入内存:1 系统拥有足够的对换区,可以全部从对换区调入所需页面;在进程运行前,须将有关的文件拷贝到对换区;2 系统缺少足够的对换区,这时凡是不会被修改的文件,都直接从文件区调入,由于它们未被修改而不必换出;但对于可能被修改的部分,换出时调到对换区,以后需要时,再从对换区调入;3 UNIX 方式;凡是未运行过的页面,都应从文件区调入;曾运行过但已换出的页面,放在∑==ni iS S 1m SS b ii ⨯=对换区,下次应从对换区调入;4.8 页面置换算法当进程运行时,所访问的页面不在内存而需要将他们调入内存,但内存无空闲时,需要选择一页面换出到对换区,选择算法即页面置换算法;算法评价:页面置换频率低,调出页面将不会或很少访问;4.8.1 最佳置换算法和先进先出置换算法1. 最佳Optimal 置换算法由Belady 于1966年提出的一种理论上的算法;原理:其所选择的被淘汰页面,将是以后永不使用的, 或是在最长未来时间内不再被访问的页面;特点:通常可获得最低的缺页率,但由于进程运行不可预知而无法实现,用来评价其他算法;假定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1进程运行时,先将7,0,1三页装入内存;当进程要访问页面2时,将会产生缺页中断,此时OS 根据最佳置换算法,将选择页面7予以淘汰;共发生6次页面置换;图 4-25 利用最佳页面置换算法时的置换图 2. 先进先出FIFO 页面置换算法---总是置换最先进入内存的页面;用FIFO 算法共发生12次页面置换;该算法与进程的实际运行规律不相符,有些页面经常被访问全局变量,常用函数;图 4-26 利用FIFO 置换算法时的置换图4.8.2 最近最久未使用Least Recently Used LRU 置换算法1. LRU置换算法 ---在无法预测各页面将来使用情况下,利用“最近过去”作为“最近将来”的近似选择最近最久未使用的页面予以淘汰;用LRU 算法共发生9次页面置换;引用率70770170122010320304243230321201201770101页框(物理块)203图 4-27 LRU 页面置换算法2. LRU 置换算法的硬件支持LRU 算法比较好,但为了快速知道哪一页是最近最久未使用的页面,需要硬件支持:寄存器或栈;1 寄存器为了记录某进程在内存中各页的使用情况,须为每个页面配置一个移位寄存器,可表示为:原理:进程访问某物理块时,先将寄存器的Rn-1位设成1;此时,定时信号将每隔一定时间将寄存器右移一位;若将n 位寄存器的数看做是一整数,那么,具有最小数值的寄存器所对应的页面,就是最近最久未使用的页面;例:某进程在内存中有8个页面,为每页面配置一8位寄存器时的LRU 访问情况,如图4-28图 4-28 某进程具有8个页面时的LRU 访问情况2 栈--利用栈来保存当前使用的各页面的页面号;原理:每当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶;因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号;假定现有一进程所访问的页面的页面号序列为:4,7,0,7,1,0,1,2,1,2,6随着进程的访问,栈中页面号的变化情况如图4-29所示;在访问页面6时发生了缺页,此时页面4是最近最久未被访问的页,应将它置换出去;LRU 算法较好,但要求较多硬件支持, 实际使用接近LRU算法-Clock 算法;图引用率70770170122010323104430230321013201770201页框2304204230230127127011474074704170401741074210741207421074621074-29 用栈保存当前使用页面时栈的变化情况。

操作系统第四章复习

操作系统第四章复习

页框号为21。 因为起始驻留集为空, 而0页对应的ห้องสมุดไป่ตู้框为空闲链表中的第三个空闲页框,其对应的页框号为21。
页框号为32。 因为11 > 10故发生第三轮扫描,页号为1的页框在第二轮已经处于空闲页框链表中,此刻该页又被重新访问,因此应被重新放回到驻留集中,其页框号为32。
页框号为41。 因为第2页从来没有被访问过,不在驻留集中。因此从空闲链表中取出链表头的页框,页框号为41。
4. 在虚拟内存管理中,地址变换机构将逻辑地址转换为物理地址,形成该逻辑地址的阶段是( )。 ① 编辑 ② 编译 ③ 链接 ④ 装载 5. 采用段式存储管理的系统中,若地址用24位表示,其中8位表示段号,则允许每段的最大长度是_______ A)224 B)28 C) 216 D) 232 6. 作业在执行中发生了缺页中断,经操作系统处理后,应让其执行______指令。 A)被中断的前一条 B)被中断的后一条 C)被中断的 D) 启动时的第一条
7、某基于动态分区存储管理的计算机,其主存容量为55MB(初始为空),采用最佳适配(Best fit)算法,分配和释放的顺序为:分配15MB,分配30MB,释放15MB,分配6MB,此时主存中最大空闲分区的大小是( ) A:7MB B:9MB C:10MB D:15MB
当该进程执行到时刻260时,要访问逻辑地址为17CAH的数据,请问答下列问题: (1)该逻辑地址对应的页号是多少? (2)若采用先进先出置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。 (3)若采用时钟置换算法,该逻辑地址对应的物理地址是多少?(设搜索下一页的指针沿顺时针方向移动,且当前指向2号页框)
页号
存储块号
0 1 2 3
5 10 4 7

考研操作系统-存储管理(二)

考研操作系统-存储管理(二)

考研操作系统-存储管理(二)(总分:108.00,做题时间:90分钟)一、单项选择题(总题数:34,分数:68.00)1.对主存储器的访问,是( )。

A.以页(块)或段为单位B.以字节或字为单位C.随存储器的管理方案不同而异D.以用户的逻辑记录为单位A.B. √C.D.本题考查对主存的访问,不是对主存的分配。

主存的编址以字节为单位,对主存的访问也是以字节为单位。

因此本题选择B。

2.在虚拟内存管理中,地址变换机构将逻辑地址变换为物理地址,形成该逻辑地址的阶段是( )。

A.编辑 B.编译 C.链接 D.装载A.B. √C.D.编译过程指编译程序将用护源代码编译成目标模块。

源地址编译成目标程序时,会形成逻辑地址。

因此本题选择B。

3.把作业空间中使用的逻辑地址变换为内存中的物理地址的过程称为( )。

A.加载 B.重定位 C.物理化 D.逻辑化A.B. √C.D.本题考查重定位的概念。

由于作业装入内存时分配的内存空间与作业的地址空间是不一致的。

因此在作业装入或执行时,不对有关逻辑地址部分进行相应的修改,会导致错误的结果。

这种将作业的逻辑地址变换为物理地址的过程称为“地址重定位”。

因此本题选择B。

4.为了保证一个程序中主存中改变了存放位置之后仍能正常执行,则对主存空间应采用( )技术。

A.静态重定位 B.动态重定位 C.动态分配 D.静态分配A.B. √C.D.本题考查重定位的相关概念,而不是内存分配方式,所以首先排除C和D选项。

静态重定位中,地址变换通常是在装入时一次性完成,之后地址都不再改变,称为静态重定位。

动态重定位采用动态运行时装入方式,可以保证一个程序在主存中改变了存放位置后仍然能正确执行。

因此本题选择B。

5.在存储管理中采用交换与覆盖技术,其目的是( )。

A.从物理上扩充内存 B.实现主存共享C.节省存储空间 D.提高内存利用率A.B.C.D. √本题考查交换与覆盖技术的基本概念。

采用交换与覆盖技术不会扩充物理内存,可以提高内存利用率。

操作系统-存储管理

操作系统-存储管理

操作系统-存储管理操作系统-存储管理一、引言存储管理是操作系统中重要的组成部分,它负责管理计算机系统中的存储器资源。

存储管理的任务包括内存分配、内存保护、内存回收等,通过有效的存储管理可以充分利用系统的存储资源,提高系统的运行效率和性能。

二、内存层次结构1、主存储器主存储器是计算机系统中最主要的存储器,它用于存放正在运行的程序和数据,是CPU直接访问的存储器。

主存储器一般被划分为若干个固定大小的块,每个块被称为一页,每一页可以存放一个进程的一部分或全部。

2、辅助存储器辅助存储器是主存储器的扩展,主要用于存储大容量的数据和程序。

辅助存储器包括硬盘、磁带等设备,其访问速度比主存储器慢,但容量较大。

三、内存管理1、内存分配方式a:静态分配静态分配是指在程序运行之前,就确定了程序在内存中的位置。

静态分配的优点是简单高效,但是会浪费存储资源。

b:动态分配动态分配是指程序在运行时,根据需要动态分配内存。

动态分配的优点是灵活高效,但是需要额外的内存管理开销。

2、内存管理算法a:首次适应算法首次适应算法是按照内存块的起始地质逐一查找,找到第一个大小大于等于要求的空闲的内存块进行分配。

b:最佳适应算法最佳适应算法是在所有满足要求的内存块中选择大小最小的内存块进行分配。

c:最差适应算法最差适应算法是在所有满足要求的内存块中选择大小最大的内存块进行分配。

3、内存保护内存保护是指通过访问权限控制,确保每个进程只能访问自己分配的内存空间,防止进程之间的干扰。

4、内存回收内存回收是指当进程不再使用某些内存空间时,将其释放给系统以便后续的内存分配。

内存回收可以通过标记清除算法、引用计数算法等方式实现。

四、虚拟内存管理1、虚拟内存机制虚拟内存是一种扩展的内存管理技术,它通过将部分程序或数据装入主存储器,并实现从辅助存储器到主存储器的动态迁移,提高了计算机系统的运行性能。

2、页面置换算法页面置换算法是指当主存储器已满时,需要置换出某些页面到辅助存储器中,以便为新的页面腾出空间。

[操作系统]第3章 存储管理

[操作系统]第3章  存储管理

3.3.2 可变分区管理
1. 可变分区概念 可变分区/动态分区,与固定分区有三点不同: 1)分区的建立时刻 可变分区:在系统运行过程中,在作业装入时动态建立 固定分区:系统初启时建立。 2)分区的大小 可变分区:根据作业对内存的需求量而分配。 固定分区:事先设定,固定不变。 3)分区的个数 可变分区:变化不定。 固定分区:固定不变。
第3章 存储管理 章
本章研究的主要目的: 第一、要使主存得到充分、有效的利用; 第二、为用户提供方便的使用环境。
第3章 存储管理 章
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 概述 地址映射 分区管理 覆盖与交换 分页管理 分段管理 段页式管理 虚拟存储器管理
3.1 概述
存储器分类
作业调度时,根据内存需求,按一定的分区分 配算法,在PDT中查找空闲区,若满足,则进 行分配,并置该分区状态为1,表明已被占用。 作业执行完,回收内存时,回收的分区状态置 0,等待重新分配。
固定分区存在问题
简单易行但存在下列问题: 碎片 可接纳的作业大小受分区大小的限制 一般用在作业大小预先知道的专用系统中。
空白区表中的空白区按其容量以递减的次序排 列。查找分区说明表,找到第一个满足申请长 度的空闲区,分配并分割。剩余部分插入适当 位置。 最差适应算法:分割大空闲区后,还可以产生 较大的空闲区,空闲区均匀地减小,以避免碎 片。
④ 唯一最佳适应算法(single best fit) 分区按大小顺序分级(8KB、16KB、32 KB、…… ) 作业按请求容量也分成相应的存储级,仅当 PDT中相应级的分区为空闲时,才进行内存 分配,即使有更大的分区空闲也不予以分配。
分配策略/算法
① 首次/最先适应First fit:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.1 内存管理基础内存管理的主要任务是:为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器。

内存管理包括:内存分配,内存保护,地址映射,内存扩充。

---------------------------------------------------------------------------------------------应用程序的处理一般过程:由相应的语言处理程序将源程序模块对应转换成目标模块->由链接程序将所有相关的目标模块链接到一起,整合成一个可执行程序->由装入程序将程序装入内存后予以执行。

重定位的概念:由于编译程序无法确定目标代码在执行时所对应的地址单元,故一般从0号单元开始为其编址。

这样的地址称为相对地址、程序地址或虚拟地址。

因此当装入程序将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成内存地址,这个过程称为地址重定位。

重定位分为静态重定位和动态重定位两种,静态重定位在装入时将所有相对地址转换成绝对地址,这种装入方式要求作业在装入时就必须分配其要求的所有空间,整个运行过程中不能在内存中移动,也不能申请新空间;动态重定位是装入时不地址转换,在执行过程中由硬件的地址转换机构转换成绝对地址,这种装入方式可以将程序分配到不连续的存储区中,不必装入所有代码就可以运行,但是需要硬件支持。

在重定位中通常设置一个重定位寄存器,里面放的是程序的基址,物理地址=基址+相对地址程序链接的方式:静态链接:在运行前链接装入时动态链接:边装入边链接运行时动态链接:运行到需要处才链接,便于修改和更新,便于实现共享程序装入的方式:绝对装入方式:在编译时就知道程序要驻留的内存地址(和静态重定位完全不是一回事)可重定位装入方式:有静态重定位和动态重定位两种其他方式:和分页和分段相结合---------------------------------------------------------------------------------------------交换和覆盖的目的都是扩充逻辑内存交换技术:把暂时不用的某个程序及数据部分(或全部)从内存中移到外存,或吧指定的程序或数据从外存读到内存。

交换技术打破了一个程序一旦进入主存便一直运行到结束的限制。

覆盖技术:(定义略)覆盖技术要求程序员实现把一个程序划分成不同的程序段,并规定好它们的覆盖结构。

打破了一个进程必须在全部信息都装入内存后才可运行的限制。

---------------------------------------------------------------------------------------------连续分配管理方式:(1)单一连续分配:把内存空间分为系统区和用户区,每次只装入运行一个程序,存储器利用率极低。

(2)固定分区分配:将内存用户空间划分为若干个固定大小的区域,每个分区只装一道作业,分区大小可以相等也可以不等优点:可用于多道程序系统最简单的存储分配缺点:空间利用率较低(3)动态内存分配:又称可变内存分配,其做法是在作业进入内存时,根据作业的大小动态的建立分区优点:实现了多道程序共享内存,管理方案相对简单,实现存储保护的手段相对简单缺点:系统中总有一部分空间得不到利用,无法实现多进程共享存储器的信息,无法实现主存的扩充动态内存分配算法首次适应算法:将空闲分区链以地址递增的次序连接,在分配内存时,从链首开始查找,知道找到一个大小合适的空间区间为止由于首次适应算法每次都从低址开始找,这样容易造成内存各部分使用不均,所以又有了循环首次适应算法循环首次适应算法:在分配内存空间时,从上次找到的空闲分区的下一个空闲分区开始查找循环首次适应算法可以减少查找开销,但可能导致较大的空闲分区最佳适应算法:空闲分区按容量从小到大排列,每次分配时都将能满足要求且最小的空闲分区分配给作业最佳适应算法产生的碎片小但却多,这是优点也是缺点最差适应算法:空闲分区按容量从大到小排列,每次分配时都将能满足要求且最大的空闲分区分配给作业最差适应算法能使每次留下的空闲区较大,便于下次使用,但是大的空间区不易保留分区的回收:作业执行结束后要回收使用完毕的分区,系统根据回收分区的大小及首地址,在空闲分区表中检查是否有相邻的空闲区,如有则合并成一个大的空闲区,合并时可能出现的情况有三种:上邻接,下邻接和上下都邻接。

拼接(紧凑)技术:解决碎片问题的一种方法是采用拼接技术,所谓拼接是指将移动寄存器中所有已分配内存移到内存的一段,是原本分散的空闲区连成一个大的空闲区。

拼接实际一般有两种:在某个分区回收时立刻拼接或在找不到合适的空闲区且空闲区的总容量可以满足作业要求时进行拼接。

存储保护:上下界寄存器法和基址限长寄存器法---------------------------------------------------------------------------------------------非连续内存分配管理方式根据分区的大小固定和不固定又分为分页存储管理方式和分段存储管理方式,分页管理方式又分成基本分页存储管理方式和请求分页存储管理方式基本分页存储管理方式:实现思想:将作业分成若干个大小相等的区域,称为页,将内存也分成与页相等的区域,称为块。

可以将作业中的任意一页放入内存中的任意一个空闲块中。

在调度作业运行时,必须将它的所有页面一次调入内存,若内存中没有足够的物理块,则作业等待。

逻辑地址结构:前一部分是页号P,后一部分是页内偏移量W,如果逻辑空间时2^m,页面大小为2^n,则逻辑地址的前m-n为时页号,后n位是页内偏移量。

为便于在内存中找到进程中每个页面对应的物理块,系统为每个进程建立了一张页面映射表,简称页表,记录页面在内存中对应的物理块号,页表一般放在内存中。

页表大小由机器的地址结构决定,一般在512B~8KB之间。

系统设置了一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表的长度M,进程未执行时,页表的的起始地址和长度放在进程控制块中,当进程执行时,在将页表的起始地址和长度存入PTR中。

地址变换过程:假设页表起始地址为F,页表长度为M,页面大小为L,逻辑地址为A,要计算物理地址E:①计算页号P=(int)A/L,页内偏移量W=A%L。

②比较页号和页表长度M,若P>=M,则产生越界中断。

③在页表找到页号P对应的物理块号b=F[P]。

④E=b*L+W快表:由上面的地址变换过程可知,要想访问一个地址,只有要读取两次内存,这种方法比不用分页慢了一倍。

为了加快内存存取速度,可以在高速缓存存储器中增加一个快表,快表中登记了一部分页号和块号的对应关系。

根据程序执行局部性的特点,在一段时间内总是经常访问某些页,把这些页放入块表中可以有效提高执行速度有无页表访问时间比较:设访问内存一次需要时间为t,查找快表一次需要时间e,命中率为a。

如果没有快表,读取一个地址平均时间为2t,如果有快表,平均时间为ae+(a-1)(e+t)+t=2t+e-ta≈(2-a)t(一般e可忽略不计)多级页表:当页表所占内存很大,无法用一个物理块装下时,就需要将页表分级。

基本分段存储管理方式:在分页存储系统中,作业的地址空间是一维线性的,这破坏了程序内部天然的逻辑结构,造成共享、保护的困难。

引入分段存储管理方式,按逻辑地址将作业分段,每段都有自己的名字,可以根据段名来访问相应的程序段和数据段分段存储管理主要是为了满足用户和程序员的下述需要:1) 方便编程,2) 信息共享,3) 信息保护,4) 动态增长,5) 动态链接段的共享与保护:分段的共享是通过两个作业的段表中相应表项指向被共享分段的同一个物理副本来实现的。

在多道程序环境下,必须注意共享段的信息保护问题,当一个作业正从共享段读取数据时,必须防止另一个作业修改共享段的数据。

在大多数实现共享的系统中,程序被分成代码区和数据区。

不能修改的代码称为纯代码或可重入代码。

这样的代码和不能修改的数据时可以共享的,而可修改的代码和数据则不能共享。

分段管理优缺点:优点:便于动态申请内存,管理和使用统一化,便于共享,便于动态链接;缺点:产生碎片分页和分段的主要区别:(1) 页是信息的物理单位,段则是信息的逻辑单位; (2) 页的大小固定且由系统决定,而段的长度却不固定; (3) 分页的作业地址空间是一维的,即单一的线性地址空间,分段的作业地址空间则是二维的。

段页式存储管理:基本思想:将作业分段,再将段分页对主存储器的访问,是 B 。

A.随存储器的管理方案不同而异 B.以字节或字为单位B 存储管理方式提供一维地址结构。

A.分段 B.分页 C.段页式下列 C 存储管理方式能使存储碎片尽可能少,而且是内存利用率较高。

A.固定分区 B.可变分区 C.分页管理 D.段页式管理分页是由硬件完成的---------------------------------------------------------------------------------------------3.2 虚拟内存管理由于常规存储器管理具有一次性(要求将作业全部装入内存才能运行)和驻留性(作业装入内存后,便一直驻留在内存中)的特点,难以满足作业有很大和有大量作业要求运行的情况。

虚拟存储管理是一种借助于外存空间,从而允许一个进程在其运行过程中部分装入内存的技术。

程序执行的局部性原理:在一较短的时间内,程序的执行仅局限于某个部分,相应的,它所访问的内存空间也局限于某个区域,这就是程序执行的局部性原理,可以分成空间局部性和时间局部性。

虚拟存储器的实质是让程序所在的地址空间与运行时用于存放程序的存储空间区分开,程序员可以在地址空间内编写程序,而完全不用考虑实际内存的大小。

实现虚拟存储技术的硬件支持:相当数量的外存,一定数量的内存,地址变换机构。

常用虚拟存储技术:请求分页存储管理,请求分段时存储管理,请求段页式存储管理虚拟存储器特征:离散性,多次性,对换性,虚拟性请求分页存储管理:请求分页系统=基本分页系统+请求调页功能+页面置换功能实现思想:在请求分页存储管理中,作业运行之前,只要求将当前需要的一部分页面装入内存,便可启动作业运行。

在作业执行过程中,当所要访问的页面不在内存时在通过调页功能将其调入,同时还可以通过置换功能将暂时不用的页面换出到外存上,以便腾出内存空间。

因为在运行过程中必然出现要访问的页面不在内存中的情况,所以需要对页表项进行扩充。

扩充后的各字段如下:页号和物理块号:同基本分页管理状态位P(中断位):表示页面是否在内存中访问位A:用于记录页面在一段时间内被访问的次数,或最近已有多长时间未被访问,供置换算法参考修改位M:用于表示页面调入内存后是否修改过。

相关文档
最新文档