第04章_存储器管理.ppt
《第04章_存储器管理.ppt》由会员分享,可在线阅读,更多相关《第04章_存储器管理.ppt(137页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 存储器管理 第四章存储器管理4.1 存储器的层次结构存储器的层次结构 4.2程序的装入和链接程序的装入和链接 4.3连续分配方式连续分配方式4.4基本分页存储管理方式基本分页存储管理方式4.5基本分段存储管理方式基本分段存储管理方式4.6虚拟存储器的基本概念虚拟存储器的基本概念4.7请求分页存储管理方式请求分页存储管理方式4.8页面置换算法页面置换算法4.9请求分段存储管理方式请求分段存储管理方式 1第四章 存储器管理 4.1 存储器的层次结构存储器的层次结构4.1.1 多级存储器结构多级存储器结构1.存储器功能合理、安全、有效地保存数据2.存储器发展方向接口更新以硬盘为例:ESDI;
2、IDE/EIDE;ATA;SATA/SATA2;SCSI;IEEE1394;USB高速性以USB为例:USB1.1是12Mbps,USB2.0是480Mbps,USB3.0理论上是5Gbps存储密度越来越高,体积越来越小1.7Mb/平方英寸;20Mb/平方英寸;1.43Gb/平方英寸;135Gb/平方英寸;620Gb/平方英寸;1Tb/平方英寸2第四章 存储器管理 3第四章 存储器管理 容量越来越大,价格越来越低以下是近年来关于硬盘价格的趣味数字p1995年 200MB400MB 大于4000元/GBp1996年 1.2GB2.1GB 1500元2000/GBp1998年 1.2GB2.1GB
3、 200元250元/GBp2000年 4.3GB6.4GB 40元/GBp2002年 10GB20GB 20元/GBp2004年 40GB80GB 6.9元/GBp2005年 80GB160GB 4.5元/GBp2006年 80GB250GB 3.8元/GBp2008年 160GB1TB 1.6元/GB p2009年 500GB2TB 0.8元/GB p2010年 500GB2TB 0.6元/GB4第四章 存储器管理 3.存储器层次结构速速度度最快最快最慢最慢容容量量最小最小最大最大单单位位成成本本最贵最贵最廉最廉寄存器寄存器高速缓存高速缓存主存主存磁盘缓存磁盘缓存磁盘磁盘可移动存储介质可移动
4、存储介质CPU主存辅存图4-1 计算机系统存储层次示意 5第四章 存储器管理 4.存储管理功能存储分配与回收本章主要内容,讨论其算法和数据结构地址变换可执行文件生成中的链接技术;程序装入时的重定位技术;进程运行时的地址变换技术和机构(软件、硬件)存储共享和保护代码和数据共享;对地址空间的访问权限(读、写、执行)存储器扩充由用户应用程序控制:覆盖Overlay由OS控制:交换Swapping;请求调入和预调入On Demand&On Prefetch6第四章 存储器管理 4.1.2 主存储器与寄存器主存储器与寄存器1主存储器主存储器主存储器(简称内存或主存)是计算机系统中一个主要部件,用于保存进
5、程运行时的程序和数据,也称可执行存储器,材质以DRAM为主。由于主存储器的访问速度远低于CPU执行指令的速度,为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存。7第四章 存储器管理 2寄存器寄存器寄存器访问速度最快,完全能与CPU协调工作,但价格却十分昂贵,因此容量不可能做得很大。寄存器的长度一般以字(word)为单位。寄存器的数目,对于当前的微机系统和大中型机,可能有几十个甚至上百个;而嵌入式计算机系统一般仅有几个到几十个。寄存器通常用于加速存储器的访问速度,如用寄存器存放操作数,或用作地址寄存器加快地址转换速度等。8第四章 存储器管理 4.1.3 高速缓存和磁盘缓存高速缓存和磁盘缓存1
6、高速缓存高速缓存高速缓存是现代计算机结构中的一个重要部件,其容量大于或远大于寄存器,而比内存约小两到三个数量级左右,从几十KB到几MB,访问速度快于主存储器。根据程序执行的局部性原理(即程序在执行时将呈现出局部性规律,在一较短的时间内,程序的执行仅局限于某个部分),将主存中一些经常访问的信息存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度。9第四章 存储器管理 2磁盘缓存磁盘缓存由于目前磁盘的I/O速度远低于对主存的访问速度,因此将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。10第四章 存储器管理 4.2程序的装入和链接程序的装入和链接在多道程
7、序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常都要经过以下几个步骤:首先是要编译编译,由编译程序(Compiler)将用户源代码编译成若干个目标模块(Object Module);其次是链接链接,由链接程序(Linker)将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块(Load Module);最后是装入装入,由装入程序(Loader)将装入模块装入内存。图4-2示出了这样的三步过程。本节将扼要阐述程序(含数据)的链接和装入过程。11第四章 存储器管理 图4
8、-2对用户程序的处理步骤 程程序序员员编译编译Compile若干若干目标目标模块模块.OBJ源源程程序序.C链接链接Link库函数库函数Lib装入装入模块模块.EXE装入装入Load内存内存进程进程进程进程调度调度CPU12第四章 存储器管理 4.2.1程序的链接程序的链接链接:若干目标模块+库函数 可装入模块根据链接时间的不同,可把链接分成如下三种:(1)静态链接。在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。我们把这种事先进行链接的方式称为静态链接方式。(2)装入时动态链接。这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边
9、链接的链接方式。(3)运行时动态链接。这是指对某些目标模块的链接,是在程序执行中需要该(目标)模块时,才对它进行的链接。13第四章 存储器管理 1静态链接方式静态链接方式(Static Linking)在生成可装入模块时(也就是在程序装入运行前)完成的链接。见图4-4特点:一次链接,n次运行得到完整的可装入模块,不可再拆不灵活:不管有用与否的模块都将链接到装入模块,同时导致内存利用率较低不利于模块的修改和升级14第四章 存储器管理 图 4-4程序链接示意图 模块 ACALL B;Return;0L-1模块 BCALL C;Return;0M-1模块 CReturn;0N-10模块 AJSR”L
10、”Return;L-1模块 BJSR”L+M”Return;LL+M-1L+ML+M+N-1模块 CReturn;(a)目标模块(b)装入模块15第四章 存储器管理 2装入时动态链接装入时动态链接(Load-time Dynamic Linking)用户源程序经编译后所得的目标模块,是在装入内存时边装入边链接的,即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存,还要按照图4-4所示的方式来修改目标模块中的相对地址。16第四章 存储器管理 3运行时动态链接运行时动态链接(Run-time Dynamic Linking)装入时动态链接是将
11、所有可能要运行到的模块都全部链接在一起并装入内存,显然这是低效的,因为往往会有些目标模块根本就不运行。比较典型的例子是作为错误处理用的目标模块,如果程序在整个运行过程中都不出现错误,则显然就不会用到该模块。运行时动态链接方式是对装入时链接方式的一种改进。这种链接方式是将对某些模块的链接推迟到程序执行时才进行链接,亦即,在程序执行过程中,当发现一个被调用模块尚未装入内存时,才立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。凡在本次执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。17第四章 存储器管理 4动态
12、链接方式的优点动态链接方式的优点便于共享多个进程可共用一个DLL模块,节省了内存。为部分装入提供了条件(运行时动态链接)一个进程可由若干DLL模块构成,按需装入。便于模块的修改和升级只要被修改模块的接口不变,则该模块的修改不会引发其它模块的重新编译。改善了程序的可移植性可面向不同的应用环境开发同一功能模块的不同版本,根据当前的环境载入匹配的模块版本。18第四章 存储器管理 5动态链接方式的缺点动态链接方式的缺点增加了程序执行时的链接开销。(每次运行都需链接)模块数量众多,增加了模块的管理开销。19第四章 存储器管理 4.2.2程序的装入程序的装入装入:可装入模块装入:可装入模块(.EXE)内存
13、进程内存进程1绝对装入方式绝对装入方式(Absolute Loading Mode)在编译后、装入前已产生了绝对地址(内存地址),装入时不再作地址重定位,即:装入内存前的虚拟地址=装入内存后的物理地址。绝对地址的产生:(1)由编译器完成;(2)由程序员编程完成。优点:装入过程简单,无需地址映射。缺点:不适于多道程序系统;过于依赖硬件结构;不易修改、不灵活。20第四章 存储器管理 2可重定位装入方式可重定位装入方式(Relocation Loading Mode)可装入模块在被装入到内存中时,由装入程序来完成程序虚拟地址 内存物理地址的变换21第四章 存储器管理 图图4-3装入内存时的情况装入内
14、存时的情况LOAD 1,2500365LOAD 1,2500365100001100012500150005000250010000程序地址空间程序地址空间物理内存空间物理内存空间如果不进行地址变如果不进行地址变换,那么这条指令换,那么这条指令将无法取到正确的将无法取到正确的数值数值“365”,所,所以该指令中的地址以该指令中的地址应该重定位为:应该重定位为:LOAD 1,12500静态地址重定位:静态地址重定位:指令或数据的内存地址指令或数据的内存地址MA=该指令或数据的虚拟地址该指令或数据的虚拟地址VA+该程序在内存中的首地址该程序在内存中的首地址BA22第四章 存储器管理 可重定位装入的
15、优缺点:优点:p适用于多道程序系统,提高了内存利用率;由于地址映射规则简单,故在地址变换过程中无需硬件变换机构的支持。缺点:p任何进程都要求连续的内存空间;必须将全部模块都装入且装入后不能再移动位置(因为无法实现动态重定位);不支持虚拟存储器技术;不易实现共享。23第四章 存储器管理 3动态运行时装入方式动态运行时装入方式(Dynamic Run-time Loading)出于实际情况,程序在运行过程中的内存位置可能经常要改变,此时就应采用动态运行时装入的方式。程序装入内存后并不立即进行地址变换,而是等到真正要执行时才由硬件地址变换机构来完成地址变换,从而得到内存物理地址。24第四章 存储器管
16、理 动态地址重定位:动态地址重定位:指令或数据的内存地址指令或数据的内存地址MA =该指令或数据的虚拟地址该指令或数据的虚拟地址VA+重定位基址寄存器重定位基址寄存器BRLOAD 1,25003650100250050002500虚拟地址VR10000基址寄存器BRLOAD 1,250036510000101001250015000程序外存程序一侧 存储器一侧主存+12500取数地址MA25第四章 存储器管理 动态运行时装入的优缺点:优点pOS可将一个进程的不同部分分散存放在不连续的内存空间;可移动进程在内存中的位置(由重定位基址寄存器反映移动情况);提供了实现虚拟存储器技术的基础(可实现部分
17、模块装入);有利于实现模块共享。缺点p动态重定位需要硬件变换机构的支持;实现较复杂。26第四章 存储器管理 4.3连续分配方式连续分配方式 连续分配方式是指一个进程在内存中必须占连续分配方式是指一个进程在内存中必须占用连续的存储空间。典型的连续分配方式主要有:用连续的存储空间。典型的连续分配方式主要有:单一连续分配、固定分区分配、动态分区分配、单一连续分配、固定分区分配、动态分区分配、动态重定位分区分配等。动态重定位分区分配等。4.3.1单一连续分配单一连续分配把内存分为系统区和用户区两部分,系统区仅提供给OS使用;用户区是指除系统区以外的全部内存空间,提供给用户使用。优点:简单,易于管理缺点
18、:只能用于单用户单任务OS;内存利用率低,毫无共享性可言。早已淘汰。27第四章 存储器管理 引入:分区存储管理原理将内存分为一些大小相等或不等的分区(Partition),每个进程可占用一个分区。适于多道程序系统,支持多个进程并发执行。出现了碎片问题I.内碎片:被占用分区的尾部未被利用的空间。II.外碎片:在两个被占用分区之间的难以利用的小空闲分区。分区管理的数据结构:分区表或分区链表。内存紧凑(Compaction):将各个已占用分区向内存某端移动,从而使分散的各个小空闲分区能相邻,进而合并为一个稍大的空闲分区。28第四章 存储器管理 4.3.2固定分区分配固定分区分配1把内存划分为若干个固
19、定大小的分区,把内存划分为若干个固定大小的分区,分区的总数以及各个分区的大小都是恒定分区的总数以及各个分区的大小都是恒定值。值。各分区大小相等不灵活;对于小进程而言,内存利用率低,内碎片严重;对于大进程而言,分区大小可能无法满足需要,导致无法装入。各分区大小不等小分区、中等分区、大分区。适应性较强,可以有效提高内存利用率。29第四章 存储器管理 2固定分区的内存分配固定分区的内存分配为了便于内存分配,通常将分区按大小进行排队,并为之建立一张分区使用表,其中各表项包括每个分区的起始地址、大小及状态(是否已分配),见图4-5(a)所示。当有一用户程序要装入时,由内存分配程序检索该表,从中找出一个能
20、满足要求的、尚未分配的分区,将之分配给该程序,然后将该表项中的状态置为“已分配”;若未找到大小足够的分区,则拒绝为该用户程序分配内存。存储空间分配情况如图4-5(b)所示。30第四章 存储器管理 图 4-5固定分区使用表 操作系统进程A(8K)进程B(25K)进程C(40K)20 KB32 KB64 KB128 KB256 KB分区号大小/KB起址/KB状态11220已分配23232已分配36464已分配4128128未分配(b)存储空间分配情况(a)分区说明表31第四章 存储器管理 3固定分区分配的优缺点固定分区分配的优缺点优点优点由于各分区大小固定,故易于实现,管理开销小。由于各分区大小固
21、定,故易于实现,管理开销小。缺点缺点内碎片的问题不可避免,较大程序不易装入,故内内碎片的问题不可避免,较大程序不易装入,故内存利用率较低;分区数目固定也限制了进程的并发存利用率较低;分区数目固定也限制了进程的并发度。度。32第四章 存储器管理 4.3.3动态分区分配动态分区分配在动态分区分配方式中,各个分区的大小会在OS的管理下发生改变,分区总数也会相应地发生变化。1分区分配中的数据结构分区分配中的数据结构(1)空闲分区表:记录所有空闲分区情况的二维表分区号大小/KB起址/KB状态11820未分配232242未分配3150502未分配4128750未分配33第四章 存储器管理(2)空闲分区链:
22、将所有的空闲分区链接成一个双向链,如图4-6所示。图4-6空闲链结构 0:未分配:未分配1:已分配:已分配34第四章 存储器管理 2分区分配算法分区分配算法1)首次适应FF算法(First Fit)空闲分区链以地址递增地址递增的次序链接。在每次分配时,都从链首开始顺序查找,直至找到第一个大小能满足要求的空闲分区为止;然后再按照程序的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失败,返回。特点:简单;高址内存可保留较大的空闲分区;但低址内存会产生很多碎片分区;查找开销大。35第四章 存储器管理 2)循环
23、首次适应NF算法(Next Fit)该算法是由首次适应FF算法演变而成的:分配空间不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,如果达到链尾则回到链首继续。特点:查找开销小;空闲分区分布更均匀;但较大分区难以保留。36第四章 存储器管理 3)最佳适应BF算法(Best Fit)空闲分区链表以容量递增容量递增为序组织,每次分配时从链首查找,将第一个满足空间要求的分区分配出去。特点:最接近按需分配原则;较大的分区容易保留;但会产生很多难以利用的小碎片分区。4)最坏适应WF算法(Worst Fit)空闲分区链表以容量递减容量递减为序组织,每次分配时从链首查找,将第一个
24、满足空间要求的分区分配出去。特点:小碎片分区的问题得到了有效的解决;但大分区也不易保留。最坏适应算法与前面所述的首次适应、循环首次适应、最佳适应算法一起,统称为顺序搜索法。37第四章 存储器管理 5)快速适应QF算法(Quick Fit)该算法又称为分类搜索法,是将空闲分区根据其容量大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表,这样,系统中存在多个空闲分区链表,同时在内存中设立一张管理索引表,该表的每一个表项对应了一种空闲分区类型,并记录了该类型空闲分区链表表头的指针。空闲分区的分类是根据进程常用的空间大小进行划分。优点:查找效率高;不会对任何分区产生分割,所以
25、能保留大的分区;也不会产生内存碎片。缺点:分区归还主存的算法复杂,系统开销较大;多样化的链表造成管理开销大。38第四章 存储器管理 3分区分配操作分区分配操作1)分配内存系统应利用某种分配算法,从空闲分区链(表)中找到所需大小的分区。设请求的分区大小为u.size,表中每个空闲分区的大小可表示为m.size。若m.size-u.sizesize(size是事先规定的不再切割的剩余分区的大小),说明多余部分太小,可不再切割,将整个分区分配给请求者;否则(即多余部分超过size),从该分区中按请求的大小划分出一块内存空间分配出去,余下的部分仍留在空闲分区链(表)中。然后,将分配区的首址返回给调用者
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 存储器 管理
限制150内