《存储器管理》PPT课件.ppt
《《存储器管理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《存储器管理》PPT课件.ppt(183页珍藏版)》请在三一办公上搜索。
1、1,第四章 存储器管理,2,第四章 存储器管理,如何对存储器进行有效的管理,不仅影响到存储器的利用率,而且还对系统性能有重大影响。存储器:内存(本章)外存(第六章),3,主要内容,new 存储器的层次结构4.1 程序的装入和链接 4.2 连续分配方式4.3 基本分页存储管理方式4.4 基本分段存储管理方式4.5 虚拟存储器的基本概念4.6 请求分页存储管理方式4.7 页面置换算法4.8 请求分段存储管理方式,4,本章学习目标,了解存储管理的研究对象和目的了解存储管理的基本功能和有关的基本概念掌握分页存储管理和分段存储管理的基本概念掌握请求分页和请求分段存储管理的基本原理,New 4.1存储器的
2、层次结构,1.多级存储器结构2.主存储器与寄存器3.高速缓存与磁盘缓存,5,1.多级存储器结构,6,三层由快到慢寄存器与主存(前四者)由操作系统直接管理,可快速访问,称为可执行存储器。后两者需要通过I/O访问,2.主存储器与寄存器,1.主存储器容量大小2.寄存器速度与CPU完全协调长度以字为单位,几十至几百个,7,3.高速缓存和磁盘缓存,高速缓存局部性原理CPU与内存之间磁盘缓存频繁使用的磁盘数据暂存在内存中的 磁盘高速缓存中,8,9,预备知识,地址空间的概念1内存空间(物理空间)内存是由若干个存储单元组成的,每个存储单元的编号称为内存地址(或物理地址)2逻辑空间 经过汇编或编译后形成目标程序
3、是以0为基址顺序进行编址的,目标程序占据的地址空间称为作业的逻辑地址空间。逻辑空间中的地址称为逻辑地址,这是一个相对地址。,10,4.1 程序的装入和链接,为作业创建进程需将其装入内存。要把程序装入内存,就要对程序进行编译和链接。1.编译 由编译程序把源程序翻译成若干个目标模块;2.链接 由链接程序把目标模块以及相关的库函数链接在一起,形成完整的装入模块;3.装入 由装入程序把装入模块装入内存。,11,4.1.1 程序的装入,将一个装入模块装入内存时,有三种方式:绝对装入方式可重定位装入方式动态运行时装入方式,关键在于将逻辑地址转换为物理地址的时机不同,12,1.绝对装入方式Absolute
4、Loading Mode,若编译时知道程序将在内存的(起始)驻留地址,编译程序将产生绝对(物理)地址的目标代码。只适用单道程序环境。装入模块不需再地址转换,直接装入内存。绝对地址,即可在编译或汇编时给出,也可由程序员直接给出。通常在程序中采用符号地址,在编译或汇编时,再将其转换为绝对地址。,13,2.可重定位装入方式Relocation Loading Mode,多道程序环境下,各目标模块的起始地址均从0开始,程序中的其它地址都是相对于起始地址计算的,不是绝对的物理地址,编译程序无法预知目标模块应放于何处。装入时,需根据内存当前的情况,将模块装入到内存的适当位置,存在一个逻辑地址空间到内存物理
5、地址空间的转换过程(即重定位)。,14,2.可重定位装入方式Relocation Loading Mode,逻辑地址与实际装入内存的物理地址会不同。,Load 1,2500 的作用是把2500单元中的数据送至寄存器1。在装入时,指令的地址会由原来的1000,变为11000,取数地址2500也会变为12500。该例中,在装入时对目标程序中指令和数据的地址修改过程称为重定位。该地址变换是在装入时一次完成的,不再改变,故称为静态重定位。,15,3.动态运行时装入方式Dynamic Run-time Loading,把程序装入内存后,并不立即把装入模块中的逻辑地址转换为物理地址,仍是相对地址。逻辑地址
6、到物理地址的转换直到程序真正运行时才进行。不仅允许装入模块装入到内存中的任何位置,而且允许程序在运行时在内存中移动。(动态重定位分区分配),16,4.1.2 程序的链接,根据链接时间的不同,可分为:静态链接装入时动态链接运行时动态链接,关键在于进行链接的时机,17,1.静态链接方式Static Linking,在程序运行之前把各目标模块及库函数链接成一个完整的装入模块,以后不再拆开。装配时需解决两个问题:(1)对相对地址进行修改。(2)变换外部符号。,18,模块ABC在链接前其内部地址均是相对于起始地址0而言的。链接成一个装入模块后,BC的首地址分别变成了L和L+M,这就需要修改BC中的相对地
7、址,将其全部加上L或L+M;对于ABC各模块中所使用的外部调用符号,也都需进行变换,CALL B需变换为JSL L。,19,2.装入时动态链接Load-time Dynamic Linking,编译的目标模块在装入内存时,边装入边链接。即在装入一个目标模块时,若发生一个外部模块调用,将引起装入程序去找出相应的外部目标模块,并将它装入内存,还需修改目标模块中的相对地址。,20,2.装入时动态链接Load-time Dynamic Linking,优点:VS 静态链接 1.便于修改和更新 各目标模块分开存放,便于修改或更新。静态链接要修改或更新时,需重新打开装入模块,低效。2.便于实现对目标模块的
8、共享 可将一个目标模块链接到几个应用模块,实现多个应用程序对该模块的共享。静态链接,每个应用模块都必须含有该目标模块的完整拷贝,无法共享。,21,3.运行时动态链接Run-time Dynamic Linking,把对某些模块的链接推迟到执行时进行。在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并链接到调用者模块上。优点:本次执行不需要的模块不链接。可加快装入过程,而且节省内存空间。,22,4.1 程序的装入和链接 小结,程序的装入绝对装入方式可重定位装入方式动态运行时装入方式程序的链接静态链接方式装入时动态链接运行时动态链接,23,4.2 连续分配方式,连续分配方式
9、,指为一个用户程序分配一个连续的内存空间。4.2.1 单一连续分区分配 4.2.2 固定分区分配4.2.3 动态分区分配4.2.4 动态重定位分区分配4.2.5 对换(Swapping),24,4.2.1 单一连续分区分配,1.内存划分(1)系统区 仅提供给OS使用,通常为内存中的低址部分(2)用户区 单一分区,除系统区外的全部内存空间,只提供给用户使用2.适用环境 只适用于单用户、单任务环境?,25,4.2.2 固定分区分配,最早使用的一种可运行多道程序的存储管理方式。将内存空间划分为若干个固定大小的区域,在每个分区中可以装入一道作业,当内存中划分成几个分区时,便允许几道作业并发运行;当有一
10、个空闲分区时,便可从外存的后备队列中,选择一个适当大小的作业装入该分区;当该作业结束时,又可从后备队列中找出另一个作业调入该分区。,划分分区,内存分配,26,1.划分分区的方法,1.分区大小相等使所有的内存分区大小相等。适用于利用一台计算机去控制多个相同对象的场合。缺乏灵活性。2.分区大小不等将内存区分为大小不等的多块,灵活性稍好,可根据程序的大小为之分配适当的分区。,27,2.内存分配,把分区按大小排队,并建立一个分区使用表。分区表中记录各分区的起始地址、大小和状态。分配内存时,检索分区表,如果存在大小合适且未分配的分区,就把其分配给相应的程序,然后置“已分配”标志;若未找到大小足够的分区,
11、则拒绝为之分配内存。,28,2.内存分配,分区大小固定,灵活性仍不足,会产生内存碎片;在某些用于控制相同对象的场合仍有一定应用。,作业2:30K,作业1:112K,29,4.2.3 动态分区分配,动态分区分配是根据进程的实际需要,动态地为之分配内存空间。又称为可变分区分配。示意图,30,可变分区内存使用示意图,31,4.2.3 动态分区分配,三个问题分区分配中的数据结构分区分配算法分区分配操作,32,1.分区分配中的数据结构,记录内存的使用情况,为分配提供依据。(1)空闲分区表在系统中设置一张空闲分区表,用于记录每个空闲分区的情况。每个空闲分区占一个表目,表目中包括分区序号、分区始址及分区的大
12、小等数据项。,33,1.分区分配中的数据结构,(2)空闲分区链每个分区的起始部分,设置用于链接各分区的前向指针;在分区尾部设置一后向指针。通过前、后向链接指针,可将所有的空闲分区链接成一个双向链。,前后向指针,大小,状态,34,2.分区分配算法,按照一定的分配算法,从空闲分区表或空闲分区链中选出一分区分配给该作业。常用的三种分配算法:首次适应算法循环适应算法最佳适应算法,35,(1)首次适应算法,空闲分区以地址递增的次序链接。分配时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区;然后根据作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。优点:倾向于利
13、用内存中低址的空闲区,保留了高址部分的大空闲区,为以后到达的大作业分配大的内存空间创造了条件。缺点:低址不断被划分,会产生大量的碎片;每次从低址开始查找,会增加查找可用空间的开销。,36,(1)首次适应算法,图中采用的空闲分区链按地址由小到大的顺序对空闲分区进行组织,开始指向以40k为首址的空闲分区(其大小为46k,下一个空闲分区为始址为118k)。,作业5大小为36k,37,(2)循环首次适应算法,分配时,不每次均从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,并从中划出一块与请求的大小相等的内存空间分配给作业。需设置一起始查寻指针,以指
14、示下一次起始查寻的空闲分区,并采用循环查找方式。即如果最后一个(链尾)空闲分区,其大小仍不能满足要求,应返回到第一个空闲分区,比较其大小是否满足要求。找到后,应立即调整起始查寻指针。优点:空闲分区分布均更均匀,减少了查找空闲分区的开销,但会导致缺乏大的空闲分区。,38,(3)最佳适应算法,每次为作业分配内存时,总是把既能满足要求,又是最小的空闲分区分配给作业,避免了“大材小用”。为了加速寻找,要求将所有的空闲区,按其容量大小以递增的顺序形成一空闲区链。这样,第一次找到的满足要求的空闲区,必然是最优的。特点:每次似乎是最佳的,然而在宏观上却不一定。每次分配后所切割下来的剩余部分总是最小的,在存储
15、器中会留下许多这样难以利用的小空闲区。,39,(3)最佳适应算法,图中采用的空闲分区链按容量由小到大的顺序组织,40,3.分区分配操作(分配回收),1)分配内存若m.size-u.size=size,说明多余部分太小,可不再切割,将整个分区分配给请求者;否则,从该分区中划分出与请求的大小相等的内存空间分配出去,余下的部分仍留在空闲分区链或空闲分区表中。最后,将分配区的首址返回给调用者。,m.size 空闲分区大小u.size 用户作业大小,41,3.分区分配操作,2)回收内存当一个进程(或程序)释放其所占内存区时,系统将首先检查回收区是否与其它空闲区相邻,若相邻则合并成一个空闲区,否则,将回收
16、区插入空闲分区表(或空闲分区链)中的适当位置。回收情况:A.只有前邻空闲区B.只有后邻空闲区C.既有前邻空闲区又有后邻空闲区D.没有邻接空闲区根据不同情况,A、B、C有不同的合并策略。,42,回收内存示意图,A.将R合并到f1,f1.addr;f1.size+R.size-f1.sizeB.将f2 合并到R,R.addr;f2.size+R.size-f2.sizeC.f1、R、f2合并到f1,f1.addr;f1.size+R.size+f2.size-f1.size;撤消f2空闲区表项D.R作为一个新空闲区,插入到空闲区表(链)的适当位置。,43,4.2.4 动态重定位分区分配,1.动态重
17、定位的引入2.动态重定位的实现3.动态重定位分区分配算法,44,1.动态重定位的引入,为了充分利用内存碎片,可利用“紧凑”操作把多个碎片处理为一个比较大的分区,以便利用。经过紧凑后的某些用户程序在内存中的位置发生了变化,此时需对程序和数据的地址加以修改(变换),即需要进行重定位。,45,2.动态重定位的实现,采用动态运行时装入方式,地址转换推迟到程序指令真正要执行时进行。为避免影响速度,必须有硬件地址变换机构的支持(重定位寄存器),用它来存放程序在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。地址变换过程是在程序执行期间,随着对每条指令和数据的
18、访问而自动进行的,故称为动态重定位。当系统对内存进行了“紧凑”,而使若干程序从内存的某处移至另一处时,不需对程序做任何修改,只要用该程序的新起始地址,去置换原来的起始地址即可。,46,2.动态重定位的实现,47,3.动态重定位分区分配算法,与动态分区分配算法基本相同,差别仅在于:增加了紧凑功能,在找不到足够大的空闲分区来满足用户需求时进行紧凑。,48,3.动态重定位分区分配算法,优点:解决了动态分区分配所引入的“内存零头”问题。消除内存碎片,提高内存利用率。缺点:提高硬件成本,紧凑时花费CPU时间。,49,动态重定位 VS 静态重定位,静态重定位:当用户程序被装入内存时,一次性实现逻辑地址到物
19、理地址的转换,以后不再转换。动态重定位:在程序运行过程中要访问数据时再进行地址变换。由地址变换机构进行的地址变换,硬件上需要重定位寄存器的支持。动态重定位分区分配VS动态分区分配相对而言,前者具有紧凑功能,需要重定位寄存器支持,50,4.2.5 对换(Swapping),1.对换的引入把内存中暂时不能运行的进程或暂时不用的程序和数据,换出到外存,而把已具备运行条件的进程或进程所需要的程序和数据,换入内存,使其投入运行(从而提高内存利用率)。如果对换以整个进程为单位,称之为“整体对换”或“进程对换”。目的是为了解决内存紧张问题如果对换以“页”或“段”为单位,则称之为“页面对换”或“分段对换”。目
20、的是为了支持虚拟存储系统此小节仅介绍进程对换。为了进程对换,需三方面功能:对换空间的管理、进程的换出及换入。,51,2.对换空间的管理,把外存分为文件区和对换区文件区:用于存放文件;为了提高空间的利用率,对其采用离散分配方式。对换区:用于存放从内存换出的进程;因对换操作频繁,为提高进程换入换出速度,对其采用连续分配方式。(对换是在 内存与 外存的对换区之间进行),52,2.对换空间的管理,为了对对换区中的空闲盘块进行管理,在系统中应配置相应的数据结构,以记录外存的使用情况。与内存在动态分区分配方式中所用的数据结构相似,同样可以用空闲分区表或空闲分区链。对换空间的分配与回收,与动态分区分配方式中
21、的内存分配与回收方法雷同。其分配算法可以是首次适应算法、循环首次适应算法或最佳适应算法。,53,3.进程的换出和换入,进程换出:选择处于阻塞状态且优先级最低的进程作为换出进程,将其程序和数据传送到外存的对换区上,然后便可回收其所占用的内存空间,并对其PCB作相应修改。进程换入:查找处于“就绪”状态但已换出的进程,将其中换出时间最久的进程作为换入进程,将其换入。,54,4.2 连续分配方式 小结,单一连续分配方式固定分区分配 分区使用表动态分区分配 首次适应算法 循环首次适应算法 最佳适应算法动态重定位分区分配“紧凑”动态重定位的实现(重定位寄存器)对换,55,4.3 基本分页存储管理方式,引入
22、:连续分配方式会形成许多“碎片”,虽然可通过“紧凑”方法将碎片拼接成可用的大块空间,但须为此付出较大开销。?如果允许将一个进程直接分散地分配到许多不相邻接的分区中,就不必再进行“紧凑”。基于这一思想而产生了离散分配方式,相异于4.2所述连续分配方式。,56,4.3 基本分页存储管理方式,分段存储管理方式 基本单位是段分页存储管理方式 基本单位是页基本的分页存储管理方式,要求把每个作业全部装入内存后方能运行。(不具备页面对换功能)4.3.1 页面和页表4.3.2 地址变换机构4.3.3 两级和多级页表,57,4.3.1 页面与页表,1.页面1)页面和物理块页面:将一个进程的逻辑地址空间分成若干个
23、大小相等的片物理块:内存物理空间分成与页相同大小的若干个存储块分配内存时,可将进程中的若干页(逻辑地址空间)分别装入多个可以不相邻接的块(物理地址空间)中。“页内碎片”,58,1.页面,2)页面大小页面大小应适中,且页面大小应为2的幂,一般为512B8KB。页面太小,减少了内存碎片,有利于提高内存利用率;但也会导致页面过多,页表过长页面太大,则会导致内存碎片较多,59,2.分页存储的地址结构,两部分,前一部分为页号P(220);后一部分为位移量W,即页内地址(212)。从逻辑地址获得页号p和页内偏移dp=INT(A/L)d=A MOD LA逻辑地址;L页大小,60,2.地址结构,61,3.页表
24、,各页离散存储在任一物理块,系统需记录各页面对应的物理块。系统为每个进程建立一张页面映射表,简称页表。进程的所有页,依次在页表中有一页表项,其中记录了其对应的物理块号。页表的作用是实现从页号到物理块号的地址映射。查找页表,即可找到每页在内存中的物理块号。,62,页表的作用实现从页号到物理块号的地址映射,作业每页1K,内存每块1K,63,4.3.2 地址变换机构,功能:完成从逻辑地址(页号+页内地址)到物理地址的转换。(页与物理块的大小完全一致,故)页内地址和内存物理块中的物理地址是一一对应的,无需再转换页号需转换成内存中的物理块号,这也是地址变换机构的实质需做的工作。借助于页表完成。两种实现方
25、法基本的地址变换机构具有快表的地址变换机构,64,1.基本的地址变换机构,由于页表项的总数很多,不可能均用寄存器来实现,页表大多驻留在内存中。需设置一个页表寄存器PTR(Page-Table Register),存放页表在内存的始址和页表的长度。进程未执行时,这两个数据存于进程的PCB中;执行时,才将它们装入PTR。,65,1.基本的地址变换机构,地址变换过程:1)分页地址变换机构自动将有效地址分为页号和页内地址两部分,再以页号为索引去检索页表。2)在检索页表前,将页号与页表长度比较,如果越界则产生一越界中断,本次访问失败3)如果未越界,则 页表始址+页号*页表项长度 得到该页号在页表中的位置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储器管理 存储器 管理 PPT 课件
链接地址:https://www.31ppt.com/p-5491727.html