第04章存储器管理培训课件

上传人:yuzo****123 文档编号:140488486 上传时间:2020-07-30 格式:PPT 页数:137 大小:1.95MB
返回 下载 相关 举报
第04章存储器管理培训课件_第1页
第1页 / 共137页
第04章存储器管理培训课件_第2页
第2页 / 共137页
第04章存储器管理培训课件_第3页
第3页 / 共137页
第04章存储器管理培训课件_第4页
第4页 / 共137页
第04章存储器管理培训课件_第5页
第5页 / 共137页
点击查看更多>>
资源描述

《第04章存储器管理培训课件》由会员分享,可在线阅读,更多相关《第04章存储器管理培训课件(137页珍藏版)》请在金锄头文库上搜索。

1、1,第四章存储器管理,4.1 存储器的层次结构 4.2程序的装入和链接 4.3连续分配方式 4.4基本分页存储管理方式 4.5基本分段存储管理方式 4.6虚拟存储器的基本概念 4.7请求分页存储管理方式 4.8页面置换算法 4.9请求分段存储管理方式,2,4.1 存储器的层次结构,4.1.1 多级存储器结构 1. 存储器功能 合理、安全、有效地保存数据 2. 存储器发展方向 接口更新 以硬盘为例:ESDI ; IDE/EIDE ; ATA ; SATA/SATA2 ; SCSI ; IEEE1394 ; USB 高速性 以USB为例:USB1.1是12Mbps,USB2.0是480Mbps,U

2、SB3.0理论上是5Gbps 存储密度越来越高,体积越来越小 1.7Mb/平方英寸;20Mb/平方英寸;1.43Gb/平方英寸; 135Gb/平方英寸;620Gb/平方英寸;1Tb/平方英寸,3,5,3. 存储器层次结构,6,4. 存储管理功能 存储分配与回收 本章主要内容,讨论其算法和数据结构 地址变换 可执行文件生成中的链接技术;程序装入时的重定位技术;进程运行时的地址变换技术和机构(软件、硬件) 存储共享和保护 代码和数据共享;对地址空间的访问权限(读、写、执行) 存储器扩充 由用户应用程序控制:覆盖Overlay 由OS控制:交换Swapping;请求调入和预调入On Demand &

3、 On Prefetch,7,4.1.2 主存储器与寄存器 1主存储器 主存储器(简称内存或主存)是计算机系统中一个主要部件,用于保存进程运行时的程序和数据,也称可执行存储器,材质以DRAM为主。由于主存储器的访问速度远低于CPU执行指令的速度,为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存。,8,2寄存器 寄存器访问速度最快,完全能与CPU协调工作,但价格却十分昂贵,因此容量不可能做得很大。寄存器的长度一般以字(word)为单位。寄存器的数目,对于当前的微机系统和大中型机,可能有几十个甚至上百个;而嵌入式计算机系统一般仅有几个到几十个。 寄存器通常用于加速存储器的访问速度,如用寄存器存

4、放操作数,或用作地址寄存器加快地址转换速度等。,9,4.1.3 高速缓存和磁盘缓存 1高速缓存 高速缓存是现代计算机结构中的一个重要部件,其容量大于或远大于寄存器,而比内存约小两到三个数量级左右,从几十KB到几MB,访问速度快于主存储器。 根据程序执行的局部性原理(即程序在执行时将呈现出局部性规律,在一较短的时间内,程序的执行仅局限于某个部分),将主存中一些经常访问的信息存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度。,10,2磁盘缓存 由于目前磁盘的I/O速度远低于对主存的访问速度,因此将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。,11,

5、4.2程序的装入和链接,在多道程序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常都要经过以下几个步骤:首先是要编译,由编译程序(Compiler)将用户源代码编译成若干个目标模块(Object Module);其次是链接,由链接程序(Linker)将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块(Load Module);最后是装入,由装入程序(Loader)将装入模块装入内存。图4-2示出了这样的三步过程。本节将扼要阐述程序(含数据)的链接和装入过程。,12,

6、图4-2对用户程序的处理步骤,编译 Compile,若干 目标 模块 .OBJ,源 程 序 .C,链接 Link,库函数 Lib,装入 模块 .EXE,装入 Load,CPU,13,4.2.1程序的链接 链接:若干目标模块 + 库函数 可装入模块 根据链接时间的不同,可把链接分成如下三种: (1) 静态链接。在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。我们把这种事先进行链接的方式称为静态链接方式。 (2) 装入时动态链接。这是指将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。 (3) 运行时动态链接。这是指对某些目

7、标模块的链接,是在程序执行中需要该(目标)模块时,才对它进行的链接。,14,1静态链接方式(Static Linking) 在生成可装入模块时(也就是在程序装入运行前)完成的链接。见图4-4 特点: 一次链接,n次运行 得到完整的可装入模块,不可再拆 不灵活:不管有用与否的模块都将链接到装入模块,同时导致内存利用率较低 不利于模块的修改和升级,15,16,2装入时动态链接(Load-time Dynamic Linking) 用户源程序经编译后所得的目标模块,是在装入内存时边装入边链接的,即在装入一个目标模块时,若发生一个外部模块调用事件,将引起装入程序去找出相应的外部目标模块,并将它装入内存

8、,还要按照图4-4所示的方式来修改目标模块中的相对地址。,17,3运行时动态链接(Run-time Dynamic Linking) 装入时动态链接是将所有可能要运行到的模块都全部链接在一起并装入内存,显然这是低效的,因为往往会有些目标模块根本就不运行。比较典型的例子是作为错误处理用的目标模块,如果程序在整个运行过程中都不出现错误,则显然就不会用到该模块。 运行时动态链接方式是对装入时链接方式的一种改进。这种链接方式是将对某些模块的链接推迟到程序执行时才进行链接,亦即,在程序执行过程中,当发现一个被调用模块尚未装入内存时,才立即由OS去找到该模块并将之装入内存,把它链接到调用者模块上。凡在本次

9、执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。,18,4动态链接方式的优点 便于共享 多个进程可共用一个DLL模块,节省了内存。 为部分装入提供了条件(运行时动态链接) 一个进程可由若干DLL模块构成,按需装入。 便于模块的修改和升级 只要被修改模块的接口不变,则该模块的修改不会引发其它模块的重新编译。 改善了程序的可移植性 可面向不同的应用环境开发同一功能模块的不同版本,根据当前的环境载入匹配的模块版本。,19,5动态链接方式的缺点 增加了程序执行时的链接开销。(每次运行都需链接) 模块数量众多,增加了模块的管理开

10、销。,20,4.2.2程序的装入 装入:可装入模块(.EXE) 内存进程 1绝对装入方式(Absolute Loading Mode) 在编译后、装入前已产生了绝对地址(内存地址),装入时不再作地址重定位,即:装入内存前的虚拟地址 = 装入内存后的物理地址。 绝对地址的产生:(1)由编译器完成;(2)由程序员编程完成。 优点:装入过程简单,无需地址映射。 缺点:不适于多道程序系统;过于依赖硬件结构;不易修改、不灵活。,21,2可重定位装入方式(Relocation Loading Mode) 可装入模块在被装入到内存中时,由装入程序来完成程序虚拟地址 内存物理地址的变换,22,如果不进行地址变

11、换,那么这条指令将无法取到正确的数值“365”,所以该指令中的地址应该重定位为: LOAD 1 , 12500,静态地址重定位: 指令或数据的内存地址MA = 该指令或数据的虚拟地址VA + 该程序在内存中的首地址BA,23,可重定位装入的优缺点: 优点: 适用于多道程序系统,提高了内存利用率;由于地址映射规则简单,故在地址变换过程中无需硬件变换机构的支持。 缺点: 任何进程都要求连续的内存空间;必须将全部模块都装入且装入后不能再移动位置(因为无法实现动态重定位);不支持虚拟存储器技术;不易实现共享。,24,3动态运行时装入方式(Dynamic Run-time Loading) 出于实际情况

12、,程序在运行过程中的内存位置可能经常要改变,此时就应采用动态运行时装入的方式。 程序装入内存后并不立即进行地址变换,而是等到真正要执行时才由硬件地址变换机构来完成地址变换,从而得到内存物理地址。,25,动态地址重定位: 指令或数据的内存地址MA = 该指令或数据的虚拟地址VA + 重定位基址寄存器BR,26,动态运行时装入的优缺点: 优点 OS可将一个进程的不同部分分散存放在不连续的内存空间;可移动进程在内存中的位置(由重定位基址寄存器反映移动情况);提供了实现虚拟存储器技术的基础(可实现部分模块装入);有利于实现模块共享。 缺点 动态重定位需要硬件变换机构的支持;实现较复杂。,27,4.3连

13、续分配方式,连续分配方式是指一个进程在内存中必须占用连续的存储空间。典型的连续分配方式主要有:单一连续分配、固定分区分配、动态分区分配、动态重定位分区分配等。 4.3.1单一连续分配 把内存分为系统区和用户区两部分,系统区仅提供给OS使用;用户区是指除系统区以外的全部内存空间,提供给用户使用。 优点:简单,易于管理 缺点:只能用于单用户单任务OS;内存利用率低,毫无共享性可言。早已淘汰。,28,引入:分区存储管理原理 将内存分为一些大小相等或不等的分区(Partition),每个进程可占用一个分区。 适于多道程序系统,支持多个进程并发执行。 出现了碎片问题 内碎片:被占用分区的尾部未被利用的空

14、间。 外碎片:在两个被占用分区之间的难以利用的小空闲分区。 分区管理的数据结构:分区表或分区链表。 内存紧凑(Compaction):将各个已占用分区向内存某端移动,从而使分散的各个小空闲分区能相邻,进而合并为一个稍大的空闲分区。,29,4.3.2固定分区分配 1把内存划分为若干个固定大小的分区,分区的总数以及各个分区的大小都是恒定值。 各分区大小相等 不灵活;对于小进程而言,内存利用率低,内碎片严重;对于大进程而言,分区大小可能无法满足需要,导致无法装入。 各分区大小不等 小分区、中等分区、大分区。适应性较强,可以有效提高内存利用率。,30,2固定分区的内存分配 为了便于内存分配,通常将分区

15、按大小进行排队,并为之建立一张分区使用表,其中各表项包括每个分区的起始地址、大小及状态(是否已分配),见图4-5(a)所示。 当有一用户程序要装入时,由内存分配程序检索该表,从中找出一个能满足要求的、尚未分配的分区,将之分配给该程序,然后将该表项中的状态置为“已分配”;若未找到大小足够的分区,则拒绝为该用户程序分配内存。存储空间分配情况如图4-5(b)所示。,31,32,3固定分区分配的优缺点 优点 由于各分区大小固定,故易于实现,管理开销小。 缺点 内碎片的问题不可避免,较大程序不易装入,故内存利用率较低;分区数目固定也限制了进程的并发度。,33,4.3.3动态分区分配 在动态分区分配方式中

16、,各个分区的大小会在OS的管理下发生改变,分区总数也会相应地发生变化。 1分区分配中的数据结构 (1) 空闲分区表:记录所有空闲分区情况的二维表,34,(2) 空闲分区链:将所有的空闲分区链接成一个双向链,如图4-6所示。,图4-6空闲链结构,35,2分区分配算法 1) 首次适应FF算法(First Fit) 空闲分区链以地址递增的次序链接。在每次分配时,都从链首开始顺序查找,直至找到第一个大小能满足要求的空闲分区为止;然后再按照程序的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失败,返回。 特点:简单;高址内存可保留较大的空闲分区;但低址内存会产生很多碎片分区;查找开销大。,36,2) 循环首次适应NF算法(Next Fit) 该算法是由首次适应FF算法演变而成的:分配空间不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,如果达到链尾则回到链首继续。 特点:查找开销小;空闲分区分布更均

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号