第4章存储器管理(1)资料讲解

上传人:yuzo****123 文档编号:141314227 上传时间:2020-08-06 格式:PPT 页数:34 大小:1.32MB
返回 下载 相关 举报
第4章存储器管理(1)资料讲解_第1页
第1页 / 共34页
第4章存储器管理(1)资料讲解_第2页
第2页 / 共34页
第4章存储器管理(1)资料讲解_第3页
第3页 / 共34页
第4章存储器管理(1)资料讲解_第4页
第4页 / 共34页
第4章存储器管理(1)资料讲解_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《第4章存储器管理(1)资料讲解》由会员分享,可在线阅读,更多相关《第4章存储器管理(1)资料讲解(34页珍藏版)》请在金锄头文库上搜索。

1、第四章 存储器管理,张培欣 ,2,2009年联考所占分值为12分 2010年联考所占分值为12分 2011年联考所占分值为6分 2012年联考所占分值为7分,3,随着计算机应用领域的拓宽,对存储空间的需求在急剧增加。 帕金森定律:存储器有多大,程序就会有多大。,存储器容量一直在不断地扩大,但仍然是最紧张的“瓶颈”资源,满足不了现代化软件发展的需要。 如何合理而有效地使用存储器,在很大程度上反映了 OS 的性能,存储器管理仍是 OS 的中心问题之一。,5,第四章 存储器管理,4.1 存储器的层次结构 4.2 程序的装入和链接 4.3 连续分配方式 4.4 基本分页存储管理方式 4.5 基本分段存

2、储管理方式 4.6 虚拟存储器的基本概念 4.7 请求分页存储管理方式 4.8 页面置换算法 4.9 请求分段存储管理方式,6,4.1 存储器的层次结构,1. 存储器的层次结构 在现代计算机系统 中,存储器是信息处理 的来源与归宿,占据重 要位置。但是,在现有 技术条件下,任何一种 存储装置,都无法同时 从速度与容量两方面, 满足用户的需求。实际 上它们组成了一个存储 装置层次。 存储器的层次结构,7,4.1 存储器的层次结构,主存,CPU 寄存器,辅存,8,4.1 存储器的层次结构,主存,CPU 寄存器,辅存,从容量角度进行对比:,几十个到上百个,几十KB到几MB,数十MB到数GB,数GB到

3、TB,大,小,9,4.1 存储器的层次结构,主存,CPU 寄存器,辅存,从访问时间角度进行对比:,慢,快,高速缓存的作用 磁盘缓存的作用,价格/位,10,4.1 存储器的层次结构,主存,CPU 寄存器,辅存,存储管理负责,设备管理和文件管理负责,11,存储管理的目的 1)主存的分配和管理:当用户需要内存时,系统为之分配相应的存储空间;不需要时,及时回收,以供其它用户使用。 2)“扩充”主存容量:为用户提供比主存物理空间大得多的地址空间,以至使用户感觉他的作业是在这样一个大的存储器中运行。 3)存储保护:确保多道程序都在各自分配到存储区域内操作,互不干扰,防止一道程序破坏其它作业或系统文件的信息

4、。,4.1 存储器的层次结构,12,4.2 程序的装入和链接,能在一个模块内部完成符号名到地址的转换工作,符号解析和重定位,13,装入,关于三个空间的定义:,逻辑地址 或 相对地址,物理地址 或 绝对地址,符号地址,14,4.2.1 程序的装入,将一个装入模块装入内存时,可采用三种方式: 一、绝对装入方式(Absolute Loading Mode) :程序员在编程序时,或编译程序(汇编程序)对源程序进行编译(汇编)时,如果知道程序将驻留在内存的具体位置,那么将产生的(所用的)是物理地址(绝对地址)。,15,在多道程序环境下,由于事先并不知晓目标程序在内存的具体位置,需要采用下述两个技术手段:

5、 (1)把逻辑地址和物理地址分开; (2)对逻辑地址实施地址重定位。,地址重定位是一个地址变换过程,这种地址变换就是地址映射。 根据对地址变换进行的时间及采用技术手段的不同,把重定位分为静态重定位和动态重定位两类。,16,静态重定位:是指作业在装入过程中由装配程序进行的地址变换方式。这种重定位之所以称为静态的,是因为地址变换只在作业执行前集中一次完成的。,主要优点:无需增加硬件地址变换机构,因而可在一般计算机上实现。 主要缺点:在作业执行期间不能被移动,因而也就不能实现重新分配主存。这对提高主存的利用率是不利的。,二、可重定位装入方式(Relocation Loading Mode) :,17

6、,18,三、动态运行时装入方式(Denamle Run-time Loading) : 采用动态重定位技术。 动态重定位:是指在作业执行过程中,当访问指令或数据时,由附加的地址变换机构进行的地址变换方式。 动态重定位是靠硬件地址变换机构实现的。,19,0,3456,.,.,.,.,.,.,LOAD A 200,.,.,.,.,.,.,0,100,200,300,.,.,.,.,.,.,.,.,.,LOAD A 200,3456,逻辑地址空间,1100,1200,1300,物理地址空间,由于这种地址变换是在作业执行期间随着每条指令的数据自动地、连续地进行,所以称之为动态重定位。,20,主要优点:

7、在作业执行期间可以被移动,因而能实现重新分配主存。这对提高主存的利用率是非常重要的。 主要缺点:需要附加硬件支持; 实现存储器管理的软件比较复杂。,21,22,4.2.2 程序的链接,实现链接的方法有三种: 静态链接 装入时动态链接 运行时动态链接,23,4.1.2 程序的链接,一、静态链接: (Static Linking) 事先将几个目标模块 链接装配成一个装入 模块,以后不再拆开 的链接方式,称为静 态链接方式。如右图:,需解决以下两个问题: 1. 将相对地址进行修改。即将除第一个模块外的相对地址修改成装入模块中的相应的相对地址。 2. 变换外部调用符号。即将每个模块中所用的外部调用符号

8、,都变换为相对地址。,24,二、装入时动态链接(Load-Time Dynamic Linking) 用户源程序经编译后所得到的目标模块,是在装入内存时,边装入边链接的。即在装入一个目标模块时,若发生一个外部模块调用,将引起装入程序去找出相应的外部目标模块,并将之装入内存。,25,SEQAM,SUBR 1,MAIN,系统目标库,当前生成的目标库,私有目标库,MAIN . call SEQAM . call SURB 1 .,装入模块,SEQAM RETURN,SURB 1 RETURN,26,装入时动态链接有如下优点: 1. 便于软件版本的修改和更新。只需修改各个目标模块,不必将装入模块拆开,

9、非常方便。 2. 便于实现目标模块共享。即可以将一个目标模块链接到几个应用模块中,从而实现多个应用程序对该模块的共享。,27,三、运行时动态链接(Run-Time Dynamic Linking) 采用装入时动态链接方式,需要把所有可能要运行到的模块全部装入内存,效率很低。 采用运行时动态链接可将某些目标模块的链接推迟到执行时才进行,即在执行过程中,若发现一个被调用模块尚未装入内存时,由OS去找到该模块,将它装入内存,并链接到调用模块上。,28,链接和装入技术的发展史,一个程序要想装入内存运行必然要先经过编译、链接和装入这三个阶段,虽然是这样一个大家听起来耳熟能详的概念,在操作系统发展的过程中

10、却已经经历了多次重大变革。简单来讲,可以将其划分为以下三个阶段:,1 静态链接、静态装入,2 静态链接、动态装入,3 动态链接、动态装入,29,链接和装入技术的发展史,1 静态链接、静态装入,静态链接、静态装入的做法是将所有目标文件链接成一个可执行映象,随后在创建进程时将该可执行映象一次全部装入内存。,例如:假设我们开发了两个程序Prog1和Prog2。 Prog1由main1.c、utilities.c以及errhdl1.c三部分组成,分别对应程序的主框架、一些公用的辅助函数(其作用相当于库)以及错误处理部分,这三部分代码编译后分别得到各自对应的目标文件main1.o、utilities.o

11、以及errhdl1.o。 同样,Prog2由main2.c、utilities.c以及errhdl2.c三部分组成,三部分代码编译后分别得到各自对应的目标文件main2.o、utilities.o以及errhdl2.o。,30,链接和装入技术的发展史,当我们采用静态链接、静态装入的方法,同时运行这两个程序时内存和硬盘的使用情况如图,首先就硬盘的使用,utilities.o被链接进了每一个用到它的程序的可执行映象。内存的使用也是如此,操作系统在创建进程时将程序的可执行映象一次全部装入内存,之后进程才能开始运行。,31,链接和装入技术的发展史,采用这种方法使得操作系统的实现变得非常简单,但其缺点也

12、是显而易见的。 首先,既然两个程序使用的是相同的utilities.o,那么我们只要在硬盘上保存utilities.o的一份拷贝应该就足够了;另外,假如程序在运行过程中没有出现任何错误,那么错误处理部分的代码就不应该被装入内存。 因此静态链接、静态装入的方法不但浪费了硬盘空间,同时也浪费了内存空间。,32,链接和装入技术的发展史,其想法是,一个函数只有当它被调用时,其所在的模块才会被装入内存。 所有的模块都以一种可重定位的装入格式存放在磁盘上。首先,主程序被装入内存并开始运行。当一个模块需要调用另一个模块中的函数时,首先要检查含有被调用函数的模块是否已装入内存。如果该模块尚未被装入内存,那么将

13、由负责重定位的链接装入器将该模块装入内存,同时更新此程序的地址表以反应这一变化。之后,控制便转移到了新装入的模块中被调用的函数那里。 动态装入的优点在于永远不会装入一个使用不到的模块。,2 静态链接、动态装入,33,链接和装入技术的发展史,仍然以上面提到的两个程序Prog1和Prog2为例,假如Prog1运行过程中出现了错误而Prog2在运行过程中没有出现任何错误。当我们采用静态链接、动态装入的方法,同时运行这两个程序时内存和硬盘的使用情况如图,34,链接和装入技术的发展史,理想的情况是系统中只保存一份utilities.o的拷贝,无论是在内存中还是在硬盘上,3 动态链接、动态装入,仍然假设Prog1运行过程中出现了错误而Prog2在运行过程中没有出现任何错误。,无论是硬盘还是内存中都只存在一份utilities.o的拷贝。,

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

最新文档


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

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