第6章存储器管理培训讲学

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

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

1、计算机操作系统 主讲: 四川大学计算机学院 杜忠军,第6章 存储器管理,计算机作为信息处理的工具,其重要的特点之一是具有存储能力。计算机的存储系统主要包括内存储器和外存储器。内存储器为执行内存,存放处理器执行时所需要的所有代码和数据。外存储器是辅助存储器,存放需要长期保存的信息。外存储器保存的信息必须进入内存储器后才能被处理器运行。存储器管理是操作系统的主要功能之一,本章所述的存储器管理是指对内存储器的管理。 虽然计算机系统的内存容量不断增大,但仍然难以满足软件发展的需求。对内存资源管理是否有效,不仅关系到内存本身的利用率,还关系到整个系统性能和效率。 内存管理分为连续管理方式和离散管理方式。

2、连续管理方式将用户程序连续放置在内存,适合单道程序环境。离散管理方式将用户程序以分页或分段方式放置在内存,适合多道程序环境。离散分配方式也是实现虚拟存储器管理的基础。本章针对传统存储器管理进行讲解,虚拟存储器管理在下一章中讲述。,本章的主要内容如下: 存储器管理概述 连续存储管理 分页式存储管理 分段式存储管理,6.1.2 存储管理目的和功能,1、主存储器的分配和回收 内存分配的主要任务是为每一道程序分配内存空间,使它们“各得其所”。 2、提高主存储器的利用率,减少不可用的存储空间(称为“零头),允许多道程序动态共享主存。 3、存储保护 内存保护的任务是确保每道程序都在自己的内存空间运行,互不

3、干扰。 4、内存扩充 内存扩充的任务是从逻辑上来扩充内存容量,使用户认为系统所拥有的内存空间远比其实际的内存空间(硬件RAM)大的多。 5、地址重定位,6.1.3 程序准备执行,用户用高级语言编写的源程序,需要经过编译、链接和装入之后,才能被处理器运行。 编译将用户用高级语言编写的源程序转换为目标模块;链接将用户程序需要的所有目标模块链接在一起,形成一个可执行模块,即装入模块;装入将装入模块放入内存。 用户程序的编译、链接和装入过程之间的关系如图6.2所示,图6.2 程序的编译、链接、加载,6.1.3 程序准备执行(续),1链接 链接是将用户程序所需要的所有目标模块链接在一起的过程。链接的方式

4、有静态链接、装入时动态链接和运行时动态链接。 (1)静态链接 静态链接指链接过程在程序装入内存前完成并形成整个程序的逻辑地址空间。通常,由编译产生的所有目标模块的起始地址可能都是从0开始,每个模块中的程序代码地址都是相对于模块的起始地址。经过静态链接后,模块的地址重新编排,改写相关的地址。,6.1.3 程序准备执行(续),图6.3 程序链接,6.1.3 程序准备执行(续),(2)装入时动态链接 经编译后的模块在装入内存准备运行前进行链接 优点: 便于修改和更新程序 便于共享,节省外存空间 缺点:共享模块并没有减少内存占用量 (3)运行时动态链接 在执行过程中若发现需要的某目标模块没有装入内存链

5、接,则将它装入内存并链接。 优点: 模块共享 提高内存利用率,6.1.3 程序准备执行(续),2装入 目标模块放入内存的过程为装入过程。装入过程实现了程序的逻辑地址和物理地址之间的变换。装入过程有三种方式,分别为:绝对装入方式、静态重定位装入方式和动态重定位装入方式。 绝对装入:程序使用绝对地址编写,装入内存时装入到程序规定的地方,不需要进行地址变换。 静态重定位装入:程序使用逻辑地址编写,装入内存后在执行之前进行地址变换。 动态重定位装入:程序使用逻辑地址编写,装入内存后在执行每条指令存取内存前进行地址变换。,6.1.4 地址重定位,1.名字空间、地址空间和存储空间 符号地址:在源程序中,是

6、通过符号名来访问子程序和数据的,这些符号名实际代表了地址,称为符号地址。例如,变量,子程序名,函数名,标号等。 名字空间:我们把程序中符号名的集合称为“名字空间”。 逻辑地址/程序地址/虚地址:程序中使用的从0开始进行编址的地址,可以是一维或二维地址。 (逻辑)地址空间/程序空间:程序中逻辑地址的集合。 内存地址/物理地址/绝对地址:内存单元的地址 物理空间/存储空间/内存空间:内存地址的集合,是一维线性空间。,6.1.4 地址重定位-1,地址重定位:要把它装入内存执行,就要确定装入内存的实际物理地址,并修改程序中与地址有关的代码,把逻辑地址变换为物理地址,这个过程称为地址重定位。 程序的名字

7、空间、地址空间和存储空间之间的关系如图所示 汇编/编译 地址重定位 连 接 装 入 名字空间 地址空间 存储空间 (相对地址/逻辑地址空间)(绝对地址/物理地址空间),6.1.4 地址重定位-2,地址重定位完成把相对地址转换成内存中的绝对地址,这个过程称为地址映射(map)。按照重定位的时机,可分为静态重定位和动态重定位。 静态重定位 静态重定位是在程序执行之前进行重定位。它根据装配模块将要装入的内存起始地址,直接修改装配模块中的有关使用地址的指令。 在图中以“0”作为参考地址的装配模块,要装入以1000为起始地址的存储空间。显然在装入程序之前,程序必须做一些修改才能正确运行。,6.1.4 地

8、址重定位-3,0: 10000: 100: LOAD 1,(2500) 10100: LOAD 1,(12500) 2500: 365 12500: 365 2600: 12600: 程序的地址空间 内存的地址空间 例如:LOAD 1,2500 这条指令是把相对地址为2500的存储单元的内容365装入1号累加器。而这时内容为365的存储单元的实际物理地址为12500(起始地址10000+相对地址2500),所以LOAD 1,2500 这条指令中的直接地址码要作相应的修改,即改为LOAD 1,12500。,6.1.4 地址重定位-4,在程序中需要修改的位置称为重定位项。程序装入内存中的起始地址称

9、为重定位因子。为了支持静态重定位,连接程序在生成统一地址空间和装配模块时,还应产生一个重定位项表。所以操作系统的装入程序要把装入模块和重定位项表一起装入内存。由装配模块的实际装入起始地址得到重定位因子,然后取重定位项,加上重定位因子得到欲修改位置的实际地址,最后对实际地址中的内容再加上重定位因子,从而完成指令代码的修改。当完成重定位后,就可以启动程序执行。 优点:无须硬件支持的优点 缺点:一是程序重定位以后就不能在内存中移动;二是要求程序的存储空间是连续的,不能把程序存储到若干个不连续的区域中。,6.1.4 地址重定位-5,动态重定位 动态重定位是指在程序执行过程中进行地址重定位,即在每次访问

10、内存单元前才进行地址变换。动态重定位可使装配模块不加任何修改就装入内存,但是它需要硬件重定位寄存器的支持。下图给出了动态重定位的示意图。 程序的目标模块在装入内存时,与地址有关的指令都无须进行修改,如在图中LOAD 1,2500这条指令中仍保持相对地址2500。当该模块被操作系统调度到处理机上执行时,操作系统首先把该模块装入的实际起始地址减去目标模块的相对基地址(图中该模块的基地址为0),然后将其差值装入重定位寄存器。当CPU取一条访问内存的指令时,地址变换硬件逻辑自动将指令中的相对地址与重定位寄存器中的值相加,再根据和值作为内存的绝对地址去访问该单元的数据。,10000,6.1.4 地址重定

11、位-6,重定位寄存器 0: 10000: 100:LOAD 1,(2500) 10100: LOAD 1,(2500) + 2500:365 12500:365 2600: 12600: 程序的地址空间 内存的地址空间,6.1.4 地址重定位-7,优点: (1)目标程序装入内存时无需任何修改,所以装入之后再移动也不会影响其正确运行,这便于存储器用紧缩来解决存储器的碎片问题。 (2)一个程序由若干个相对独立的目标模块组成时,每个目标模块各装入一个存储区域,这些存储区域可以不相领接,只要各个模块有自己对应的重定位寄存器就可以了。 (3)可以部分装入内存,程序就可以运行 (4)便于多个进程共享同一程

12、序副本。 缺点: (1)需要硬件支持 (2)实现存储管理的算法较复杂。,6.2连续分配存储方式,6.2.1单一连续分配 思想: 这是一种最简单的存储管理方式,但只能用于单用户、单任务的操作系统,如在8位和16位微机上CP/M和MS-DOS操作系统。它将内存分为两个区: 系统区:仅供操作系统使用,通常设置在内存的低段; 用户区:指除系统区以外的全部内存空间,提供给用户使用。 存储保护:设置基址界限寄存器对。 缺点: 只支持单道程序运行 不能充分利用内存空间 不能实现虚拟存储,6.2.2 固定分区(Fixed Partitioning)分配,思想:固定式分区是在作业装入之前,内存就被划分成若干个分

13、区。划分工作可以由系统管理员完成,也可以由操作系统实现。然而一旦划分完成,在系统运行期间不再重新划分,即分区的个数不可变,分区的大小不可变,所以,固定式分区又称为静态分区。 这种分区方式一般将内存的用户区域划分成大小不等的分区,以适应不同大小的作业的需要。 管理机构:系统有一张分区说明表,每个表目说明一个分区的大小、起始地址和是否已分配的使用标志。分区说明表和内存分配图如下所示。,0k: 20k: 第1分区(16kb) 36k: 第2分区(32kb) (已分配) 68k: 第3分区(64kb) (已分配) 132k: 第4分区(124kb ) (未分配) 256k: (b)内存分配图,6.2.

14、2 固定分区分配-1,区号 大小起址标志 1 16KB20K已分配 2 32KB36K已分配 3 64KB68K已分配 4 124KB 132K未分配 (a) 分区说明表,内存管理:分配算法和回收算法 存储保护:设置基址界限寄存器对 评价 优点:支持多道程序 缺点:易产生碎片 不支持虚拟存储 不能充分利用内存,当空闲分区之和能满足某程序而单个不能满足时,程序不能运行。 ?PCB中与该管理配套的参数,6.2.3 动态/可变式 (Dynamic Partitioning)分区分配,思想: 可变式分区是指在作业装入内存时,从可用的内存中划出一块连续的区域分配给它,且分区大小正好等于该作业的大小。可变

15、式分区中分区的大小和分区的个数都是可变的,而且是根据作业的大小和多少动态地划分,因此又称为动态式分区。这种存储管理技术是固定式分区的改进,既可以获得较大的灵活性,又能提高内存的利用率。 可变式分区的分配和释放的基本思想是:在分配时,首先找到一个足够大的空闲分区,即这个空闲区的大小比作业要求的要大,系统则将这个空闲分区分成两部分:一部分成为已分配的分区,剩余的部分仍作为空闲区。在回收撤除作业所占领的分区时,要检查回收的分区是否与前后空闲的分区相领接,若是,则加以合并,使之成为一个连续的大空间。,Example Dynamic Partitioning,Operating System,Process 1,320 K,Process 2,Process 3,224 K,288 K,64 K,Operating System,Process 1,320 K,Process 3,224 K,288 K,64 K,Example Dynamic Partitioning,Operating System,320 K,Process 3,288 K,64

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

最新文档


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

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