第四章存储器管理D培训讲学

上传人:yuzo****123 文档编号:141571945 上传时间:2020-08-10 格式:PPT 页数:135 大小:708KB
返回 下载 相关 举报
第四章存储器管理D培训讲学_第1页
第1页 / 共135页
第四章存储器管理D培训讲学_第2页
第2页 / 共135页
第四章存储器管理D培训讲学_第3页
第3页 / 共135页
第四章存储器管理D培训讲学_第4页
第4页 / 共135页
第四章存储器管理D培训讲学_第5页
第5页 / 共135页
点击查看更多>>
资源描述

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

1、第四章 存储器管理,4.1程序的装入与链接,4.1.1基本概念存储器分成两类:,内存储器(简称内存、主存、物理存储器) 处理机能直接访问的存储器。用来存放系统和用户的程序和数据,其特点是存取速度快,存储方式是以新换旧,断电信息丢失。,外存储器(简称外存、辅助存储器) 处理机不能直接访问的存储器。用来存放用户的各种信息,存取速度相对内存而言要慢得多,但它可用来长期保存用户信息。在文件系统中介绍。,4.1.1基本概念,4.1.1基本概念,4.1.1基本概念,2.程序的逻辑结构 程序逻辑地址:用户编程序时所用的地址(或称逻辑地址 、虚地址 ),基本单位可与内存的基本单位相同,也可以不相同。 程序逻辑

2、地址空间(逻辑地址空间、虚地址空间):用户的程序地址的集合称为逻辑地址空间,它的编址总是从0开始的,可以是一维线性空间,也可以是多维空间。,4.1.1基本概念,4.1.2存储管理的功能,1. 存储管理功能 (1)地址映射 将程序逻辑地址空间中使用的逻辑地址变换成主存中的地址的过程 (2) 主存分配 按照一定的算法把某一空闲的主存区分配给作业或进程。,4.1.2存储管理的功能,(3) 存储保护 保证用户程序(或进程映象)在各自的存储区域内操作,互不干扰。 (4) 提供虚拟存储技术 使用户程序的大小和结构不受主存容量和结构的限制,即使在用户程序比实际主存容量还要大的情况下,程序也能正确运行,4.1

3、.2存储管理的功能,4.1.2.1 地址映射 一、什么是地址映射 地址映射 将程序地址空间中使用的逻辑地址变换成主存中的物理地址的过程称为地址映射。有时也称为地址重定位 。,4.1.2存储管理的功能,4.1.2存储管理的功能,二、地址映射方式(程序的链接方式) 地址映射的功能就是要建立虚实地址的对应关系,实现地址映射有三种方式: 1.编程或编译时确定地址映射关系 2.静态地址映射 3.动态地址映射,4.1.2存储管理的功能,1. 编程或编译时确定地址映射关系(对应与静态链接方式) 编程时确定虚实地址的关系是指在用机器指令编程时,程序员直接按物理内存地址编程,这种程序在系统中是不能做任何移动的,

4、否则就会出错。,4.1.2存储管理的功能,2.静态地址映射 静态地址映射是在程序装入内存时完成从逻辑地址到物理地址的转换的。 在一些早期的系统中都有一个装入程序(加载程序),它负责将用户程序装入系统,并将用户程序中使用的访问内存的逻辑地址转换成物理地址。,4.1.2存储管理的功能,评价: 优点是实现简单,不要硬件的支持。 缺点是程序一旦装入内存,移动就比较困难。有时间上的浪费。在程序装入内存时要将所有访问内存的地址转换成物理地址。,4.1.2存储管理的功能,4.1.2存储管理的功能,3.动态地址映射 动态地址映射是在程序执行时由系统硬件完成从逻辑地址到物理地址的转换的。 系统中设置了重定位寄存

5、器。,4.1.2存储管理的功能,4.1.2存储管理的功能,动态地址映射是由硬件执行时完成的,程序中不执行的程序就不做地址映射的工作,这样节省了CPU的时间 。 重定位寄存器的内容(程序装入内存的基址)由操作系统用特权指令来设置,比较灵活。 实现动态地址映射必须有硬件的支持,并有一定的执行时间延迟。现代计算机系统中都采用动态地址映射技术。,4.1.2存储管理的功能,动态地址映射技术能满足以下目标: (1)具有给一个用户程序任意分配内存区的能力; (2)可实现虚拟存储; (3)具有重新分配的能力 (4)对于一个用户程序,可以分配到多个不同的存储区(通过动态改变重定位寄存器实现),4.1.3 程序的

6、装入和链接,4.1.3.1 程序的装入,1. 绝对装入方式(Absolute Loading Mode),1. 绝对装入方式(Absolute Loading Mode) 程序中所使用的绝对地址,既可在编译或汇编时给出, 也可由程序员直接赋予。 但在由程序员直接给出绝对地址时, 不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。,2. 可重定位装入方式(Relocation Loading Mode),3. 动态运行时装入方式(Denamle Run-time Lo

7、ading),动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此, 装入内存后的所有地址都仍是相对地址。,4.1.3.2 程序的链接,1. 静态链接方式(Static Linking),图 4-3 程序链接示意图,在将这几个目标模块装配成一个装入模块时,须解决以下两个问题: (1) 对相对地址进行修改。 (2) 变换外部调用符号。,4.1.3.2 程序的链接,1. 静态链接(static Linking),2. 装入时动态链接(Loadtime Dynamic Linking),装入时动态链接方式有以

8、下优点: 便于修改和更新。 (2) 便于实现对目标模块的共享。,3. 运行时动态链接(Run-time Dynamic Linking),近几年流行起来的运行时动态链接方式,是对上述在装入时链接方式的一种改进。这种链接方式是将对某些模块的链接推迟到执行时才执行,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存, 把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。,4.2 内存分配,在多道程序设计的环境中,内存分配的功能包括:制定分配策略、构造分配用的

9、数据结构、响应系统的内存分配的请求和回收系统释放的内存区。内存管理策略有三种: 1、放置策略 决定内存中放置信息的区域(或位置),即如何在若干个空闲区中选择一个或几个空闲区的原则;,4.2 内存分配,2、调入策略 决定信息装入内存的时机,有两种(1)在用户请求时调入,称为请调;(2)根据某种算法,确定系统将要使用的信息,并在执行前预先调入内存,称为预调 ; 3、淘汰策略 当内存不足时,决定将某些信息调出内存的策略(交换与覆盖) 。,4.2 内存分配,分区存储管理 分区存储管理是满足多道程序设计的最简单的一种存储管理方法,它允许多个用户程序同时存在系统内存中,即共享内存空间。 最早期的分区存储管

10、理采用固定分区的方法,把内存空间分成若干个大小不等的区域,称为分区。每个用户程序(作业、进程)调入内存后,占用其中一个分区,程序运行完成后释放该分区。 这种存储管理的方法的主要问题是内存使用效率极低,很快就被淘汰。,4.2 内存分配,1、动态分区存储管理技术 系统生成后,操作系统占用内存的一部分,一般在物理内存的开始处,比如,一个操作系统占20KB,装入系统后占用020KB的内存空间,剩下的部分作为一个空闲区,当一个用户程序(作业、进程)调入内存时,把这个空闲区的低地址部分的区域分配给它,如图所示。,4.2 内存分配,4.2 内存分配,当有作业完成后释放所占用的存储区。 在系统运行的过程中,系

11、统中形成多个空闲的不连续的存储区。,4.2 内存分配,动态分区存储管理技术的实现: (1)地址映射 (2)动态存储管理的机构(数据结构) (3)分区的分配和回收 (4)三种基本的放置策略,4.2 内存分配,2、用基地址寄存器实现动态地址映射 在这种存储管理技术中,系现设置一个专用寄存器,称为基地址寄存器,当一个进程(或程序、作业)被调度运行时,系统首先从PCB中取出该进程的首地址装入基地址寄存器中,在该进程运行的过程中实现动态地址映射。,4.2 内存分配,分区存储管理使用的数据结构主要是空闲区表、空闲区队列两种。其形式如图所示。,4.2 内存分配,内存分配程序包括分配一个内存块(分区)和释放一

12、个内存块(分区)两个函数,当进程需要一个大小为size的内存时,可以通过系统调用向系统申请。,4.2 内存分配,分配算法 1、分配算法中切割空闲区是从低地址开始的,例如,一个空闲区大小是100KB,首址是230KB,一申请者要求80KB,分配时将从230KB开始的80KB分配给申请者,剩下的部分仍作为一个空闲区,其首址是310KB,大小是20KB。 2、门限值是切割空闲区后剩下的区域若小于门限值,就不切割该空闲区,统统分给申请者。,4.2 内存分配,切割空闲区有两种方法: 从空闲区头开始 从空闲区尾开始 空闲区大小50KB,首址156KB,申请34KB。,4.2 内存分配,回收算法 当一个进程

13、(或程序)释放某内存区时,要调用存储区释放算法release,它将首先检查释放区是否与空闲区表(队列)中的其它空闲区相邻,若相邻则合并成一个空闲区,否则,将释放为一个空闲区插入空闲区表(或队列)中的适当位置。 空闲释放区与空闲区相邻有四种情况。,4.2 内存分配,A、将r合并到f1,f1.addr;f1.size+r.size=f.size B、将r合并到f2, r.addr;r.size+r.size=f2.size C、f1、r、f2 合并到f1, f1.addr; f1.size+r.size+f2.size=f1.size 撤消f2空闲区 D、r作为一个空闲区,并插入到空闲区表的适当位

14、置。,4.2 内存分配,几种放置策略(分配算法) 分区分配和回收是对空闲区表(或空闲区队列)数据结构进行操作,空闲区表的组织有两种方法: 1、按空闲区大小的升序(降序)组织; 2、按空闲区首址升序(降序)组织。 根据空闲区表组织的方法的不同,有不同的放置策略,它们是最佳适应算法、首次适应算法和最坏适应算法三种。,4.2 内存分配,1、首次适应算法 首次适应算法的表是按空闲区首址升序的(即空闲区表是按空闲区首址从小到大)方法组织的。,4.2 内存分配,4.2 内存分配,分配时从表首开始,以请求内存区的大小逐个与空闲区进行比较,找到第一个满足要求的空闲后,若空闲区大小与请求区的大小相等,则将该空闲

15、区分配给请求者,并撤消该空闲区所在表目;若大于请求区,就将该空闲区的一部分分配给请求者,然后,修改空闲区的大小和首址。,4.2 内存分配,这种算法的实质是尽可能地利用低地址部分的空闲区,而尽量地保证高地址部分的大空闲区,使其不被切削成小的区,其目的是保证在以有有大的作业的到来有足够大的空闲区来满足请求者。 回收时,首先考察释放区是否与系统中的某个空闲区相邻,若相邻则合并成一个空闲区,否则,将释放区作为一个空闲区按首址升序的规则插入到空闲区表适当的位置。,4.2 内存分配,例:利用首次适应算法,在上图所示系统中确定内存分配次序和内存变化情况:申请内存分别是25K,20K,10K,5K。,4.2

16、内存分配,2、最佳适应算法 最佳适应算法是将申请者放入与其大小最接近的空闲区中。切割后的空闲区最小,若系统中有与申请区大小相等的空闲区,这种算法肯定能将这种空闲区分配给申请者。(首次适应法则不一定)。,4.2 内存分配,最佳适应算法的空闲区表按空闲区大小升序方法组织。 分配时,按申请的大小逐个与空闲区大小进行比较,找到一个满足要求的空闲区,就说明它是最适合的(即最佳的)。 这种算法最大的缺点是分割后的空闲区将会很小,直至无法使用,而造成浪费。,4.2 内存分配,例:利用最佳适应算法,在上图所示系统中确定内存分配次序和内存变化情况:申请内存分别是25K,20K,10K,5K。,4.2 内存分配,3、最坏适应算法 为了克服最佳适应算法把空闲区切割得大小的缺点,人们提出了一种最坏适应算法,即每次分配时,总是将最大的空闲区切去一部分分配给请求者,其依据是当一个很大的空闲区被切割了一部分后可能仍是一个较大的空闲区。避免了空闲区越分越小的问题。,4.2 内存分配,最坏适应算法的空闲区表是按空闲区大小降序的方法组织的(从大到小的顺序)。

展开阅读全文
相关资源
相关搜索

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

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