第4章--存储管理ppt课件计算机操作系统汤小丹梁红兵版.ppt
《第4章--存储管理ppt课件计算机操作系统汤小丹梁红兵版.ppt》由会员分享,可在线阅读,更多相关《第4章--存储管理ppt课件计算机操作系统汤小丹梁红兵版.ppt(292页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 存储管理存储管理 第第4章章 存储管理存储管理 4.1 概述概述 4.2 分区存储管理方案分区存储管理方案 4.3 页式存储管理页式存储管理 4.4 段式存储管理段式存储管理 4.5 段页式存储管理段页式存储管理 4.6 交换技术与覆盖技术交换技术与覆盖技术 4.7 虚拟存储虚拟存储 4.8 高速缓冲存储器高速缓冲存储器 4.9 内存管理实例分析内存管理实例分析习题习题 第第4 4章章 存储管理存储管理 4.1 概概 述述 存储器是计算机系统中的重要组成部分,随着计算机技术的飞速发展和内存价格的降低,现代计算机中的内存也在不断增加,已经达到GB的范围。 第第4 4章章 存储管理
2、存储管理 4.1.1 存储体系 存储器的功能是保存指令和数据,它的发展方向是高速、大容量和小体积,诸如内存在访问速度方面的发展有DRAM、SDRAM、SRAM等技术;而磁盘技术的发展方向主要在大容量方面,比如接口标准、存储密度等。第第4 4章章 存储管理存储管理 存储组织的功能是在存储技术和CPU寻址技术许可的范围内组织合理的存储结构,其依据是访问速度的匹配关系、容量要求和价格。常见的存储结构有两种:“寄存器内存外存”结构和“寄存器快速缓存内存外存”结构。 图4.1所示的是“寄存器快速缓存内存外存”结构。外存(secondary storage)快速缓存(cache)寄存器(register)
3、内存(primary storage)图4.1 存储层次结构第第4 4章章 存储管理存储管理 从源程序到程序执行从源程序到程序执行编译:编译程序 由编译程序(Compiler)将用户源代码编译成若干个目标模块。链接:链接程序 由链接程序(Linker)将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成装入模块。装入:装入程序 由装入程序(Loader)将装入模块复制到内存中。库汇编编译主子1子2目标模块链接程序装入模块库主子1子2装入程序内存库主子1子2第第4 4章章 存储管理存储管理 地址空间的概念地址空间的概念物理(绝对)地址程序执行 每个内存单元的固定顺序地址(编号)。逻
4、辑(相对)地址装入(汇编编译) 被链接装配(或汇编、编译)后的目标模块所限定的地址的集合; 相对于某个基准量(通常为:0)的编址。物理地址 内存000000000100002.0100001FFF主子1子2主子1子2逻辑地址 装入模块000.FFF主子1子2相对地址源程序/单个目标模块0005FF0005FF0003FF第第4 4章章 存储管理存储管理 4.1.2 地址重定位 可执行文件的建立过程是:源程序编译目标模块(多个目标模块或程序库) 链接可执行文件。当程序执行时由操作系统装入内存而成为进程。 对程序员来说,数据的存放地址是由符号决定的,故称为符号名地址,或者称为名地址。 第第4 4章
5、章 存储管理存储管理 当程序被装入内存时,程序的逻辑地址被转换成内存的物理地址,称为地址重定位地址重定位。 在可执行文件装入时需要解决可执行文件中地址(指令和数据)和内存地址的对应问题。这是由操作系统中的装入程序Loader来完成的,如图4.2所示。图4.2 地址重定位Load A datal源程序编译链接0100BA1000datal 34562003456Load A datal逻辑地址空间地址映射Load A datal3456物理地址空间12001000第第4 4章章 存储管理存储管理 1绝对装入(absolute loading) 在可执行文件中记录内存地址,装入时直接定位于上述内存
6、地址的方式称为绝对装入(或者称为固定地址再定位)。 在这种方式下,程序的地址再定位是在执行之前被确定的,也就是在编译、链接时直接制定程序在执行时访问的实际存储器地址。这样,程序的地址空间和内存地址空间是一一对应的。单片机或者单用户系统常采用这种方式。 固定地址再定位的优点是装入过程简单;缺点是过于依赖于硬件结构,不适合多道程序系统。第第4 4章章 存储管理存储管理 2可重定位装入(relocatable loading) 可重定位装入方式是指在可执行文件中,列出各个需要重定位的地址单元和相对地址值,装入时再根据所定位的内存地址去修改每个重定位地址项,添加相应的偏移量。 一个有相对地址空间的程序
7、装入到物理地址空间时,由于两个空间不一致,就需要进行地址变换,或称地址映地址映射,即地址的再定位。射,即地址的再定位。 地址再定位有两种方式:静态再定位和动态再定位。 第第4 4章章 存储管理存储管理 1) 静态再定位 静态再定位是指当程序执行时,由装入程序运行重定位程由装入程序运行重定位程序序,根据作业在内存重分配的起始地址,将可执行的目标代码装入到指定内存中。所谓静态,是指地址定位完成后,在程序的执行期间将不会再发生变化。静态再定位是在程序执行之前进行地址再定位的,这一工作通常是由装配程序完成的。 LOAD 1,50012 3450100500700LOAD 1,5 50012 34505
8、 700程序A的地址空间程序A的存储空间5 5005 1005 000静态重定位示意图 第第4 4章章 存储管理存储管理 静态地址再定位的优点是优点是:无需硬件地址变化机构支持,容易实现;无需硬件支持,它只要求程序本身是可再定位的;它只对那些要修改的地址部分做出某种标识,再由专门设计的程序来完成。在早期的操作系统中大多数都采用这种方法。 静态地址再定位的缺点是缺点是:必须给作业分配一个连续的存储区域,该存储区不能分布在内存的不同区域;在作业的执行期间不能扩充存储空间,也不能在内存中移动,因而不能重新分配内存,不利于内存的有效利用;多个用户很难共享内存中的同一程序,如若共享同一程序,则各用户必须
9、使用自己的副本。 第第4 4章章 存储管理存储管理 2) 动态再定位 动态地址再定位是在程序执行期间,在每次存储在每次存储访问之前进行的访问之前进行的。程序在装入内存时,并不修改程序的逻辑地址值,而是在访问物理内存之前,再实时地将逻辑地址转换成物理地址。在这种情况下,其实现机制要依赖硬件地址变换机构,即通过基地址寄存器BR、变址寄存器VR计算出指令的有效地址,再利用硬件机构实现地址变换,如图4.3所示。第第4 4章章 存储管理存储管理 LOAD-A 200200VRBR1000逻辑地址空间34563002001000物理地址空间LOAD-A 20034561300120011000图4.3 动
10、态地址再定位的原理第第4 4章章 存储管理存储管理 从图4.3中可以看出:当程序开始执行时,系统将程序在内存的起始地址送入BR中。执行指令时,系统将逻辑地址与BR中的起始地址相加,从而得到物理地址。 动态地址再定位的优点是:优点是:程序在执行期间可以换入和换出内存,这样可以缓解内存紧张的矛盾;可以把内存中的碎片集中起来,以充分利用空间;不必给程序分配连续的内存空间,可以较好地利用较小的内存块;若干用户可以共享同一程序。 动态地址再定位的缺点:缺点:需要附加的硬件支持,而且实现存储管理的软件算法比较复杂。第第4 4章章 存储管理存储管理 3动态运行期装入 动态运行期装入(dynamic run-
11、time loading)是指在可执行文件中记录虚拟内存地址,在装入和执行时通过硬件地址变换机构完成虚拟地址到实际内存地址的变换。 动态运行期装入的优点是:操作系统可以将一个程序分散存放于不连续的内存空间,可以通过移动程序来实现共享;能够支持程序执行中产生的地址引用,如指针变量(而不仅是生成可执行文件时的地址引用)。 动态运行期装入的缺点是:需要硬件支持(通常是CPU),操作系统的实现比较复杂。第第4 4章章 存储管理存储管理 4.1.3 链接 1链接方法 常见的链接方法有静态链接和动态链接两种。 1) 静态链接 静态链接(static linking)是在生成可执行文件时进行的,即在目标模块
12、中记录被调用模块的名字符号地址(symbolic address),在可执行文件中将该名字改写为指令直接使用的数字地址,如图4.4所示。第第4 4章章 存储管理存储管理 0L1callfunction1Module AModule B function10 function1( ) call LFModule AModule B0L1L function1 function1( ) LFLM1M1F图4.4 静态链接 第第4 4章章 存储管理存储管理 2) 动态链接 动态链接(dynamic-linking)是在运行可执行文件时进行的,亦即,执行过程中,当发现一个被调用模块未装入内存时,立即取
13、找到该模块,并链接到调用者模块上。 通常被链接的共享代码称为动态链接库(Dynamic Link Library,DLL)或共享库(shared library)。第第4 4章章 存储管理存储管理 动态链接的优点是: (1) 共享:多个进程可以共用一个DLL,比较节省内存,从而可以减少文件的交换。 (2) 部分装入:一个进程可以将多种操作分散在不同的DLL中实现,而只将当前操作的DLL装入内存。 (3) 便于局部代码修改:即便于代码升级和代码重用;只要函数的接口参数(输入和输出)不变,则修改函数及其DLL时,无需对可执行文件重新编译或链接。 (4) 便于适应运行环境:调用不同的DLL,就可以适
14、应多种使用环境并提供不同的功能。 第第4 4章章 存储管理存储管理 动态链接的缺点是:(1) 增加了程序执行时的链接开销。(2) 程序由多个文件组成,因此增加了管理复杂度。第第4 4章章 存储管理存储管理 4.1.5 存储管理的任务 在现代操作系统中,存储管理的主要任务有以下几个方面。 (1) 存储分配和回收:是存储管理的主要内容,用来确定其算法和相应的数据结构。 (2) 地址变换(地址再定位):可执行文件生成中的链接技术、程序加载时的重定位技术及进程运行时硬件和软件的地址变换技术和机构。第第4 4章章 存储管理存储管理 (3) 存储共享和保护:将代码和数据共享,设定对地址空间的访问权限(读、
15、写、执行)。 (4) 存储器扩充:它涉及存储器的逻辑组织和物理组织,有两种控制方式: 如果由应用程序控制,则采用覆盖技术。 如果由操作系统控制,则采用交换技术(整个进程空间范围内)或请求调入和预调入(部分进程空间)。第第4 4章章 存储管理存储管理 4.1.6 各种存储管理方案 从操作系统的发展历史来看,存储管理主要有以下几个方案: (1) 分区存储管理方案:是一种连续存储管理方案,但需要一次性全部装入内存。 (2) 段式存储管理方案:是一种不连续存储管理方案,段和段之间可以不连续,但需要一次性全部装入内存。 (3) 页式存储管理方案:是一种不连续存储管理方案,也需要一次性全部装入内存。 第第
16、4 4章章 存储管理存储管理 (4) 段页式存储管理方案:是一种不连续存储方案,如果采用纯分页和分段思想,需要一次性全部装入内存;如果采用虚拟存储思想,则不需要一次性全部装入内存。 (5) 交换技术和覆盖技术:是存储扩充的两种技术,其中交换技术的优点是编写程序时不需要特殊的控制,也不会影响程序的结构。 (6) 虚拟存储管理方案:又分为两种,分别是虚拟页式(请求分页)存储管理和虚拟段式(请求分段)存储管理。第第4 4章章 存储管理存储管理 4.2 分区存储管理方案分区存储管理方案 分区存储管理方案的数据结构是分区表或分区链表,主要功能是: (1) 可以只记录空闲分区,也可以同时记录空闲和占用分区
17、。 (2) 分区表中,表项数目随着内存的分配和释放而动态改变,可以规定最大表项数目。 (3) 分区表可以划分为两个表格:空闲分区表和分配分区表,从而减小每个表格的长度。 第第4 4章章 存储管理存储管理 4.2.1 单一连续分区存储管理 单一连续分区存储管理把整个内存空间的最低端和最高端作为操作系统区,中间作为用户程序区。在DOS操作系统中就采用了这种方法,如图4.7所示。第第4 4章章 存储管理存储管理 分配给用户作业的空间操作系统用户程序未用0 xFFF0ROM中的设备驱动程序用户程序位于RAM中的操作系统0 xFFF0图4.7 单一连续分区存储管理的分配方式 第第4 4章章 存储管理存储
18、管理 这种存储分配思想将内存分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。 单一连续分区的优点是:简单,适用于单用户、单任务的操作系统(比如CP/M和DOS操作系统),不需要复杂的硬件支持。 单一连续分区的缺点是:一个作业运行时要占用整个内存的地址空间,即使很小的程序也是如此,对内存造成了很大的浪费,内存的利用率很低。第第4 4章章 存储管理存储管理 4.2.2 固定分区分配 为了便于管理整个内存,需建立一个表格来登记和管理整个内存。在这个表中登记了每一个分区的大小,起始地址和分配状态,如表4.1和图4.8所示。当有作业装入时,系统便可以搜索这个表,找出一个大小合适
19、的分区分配给它。当程序运行结束时,可以把它所占用的空间再释放回去。地址重定位可以采用静态地址定位或是动态地址定位的方法。第第4 4章章 存储管理存储管理 表4.1 分区状态表 分区号大小起始地址分配状态120 KB100 K已分配240 KB120 K已分配3100 KB160 K未分配4200 KB260 K已分配第第4 4章章 存储管理存储管理 操作系统0下界寄存器作业A作业B作业C460K160K120K100K下界寄存器260K图4.8 固定分区的内存分配情况第第4 4章章 存储管理存储管理 为了实现多道程序设计,可以按等待作业的类型设置多个等待队列,也可以把所有的等待作业设置为一个等
20、待队列。如图4.9所示为多道程序情况下固定分区的情况,左边为多个等待队列情况下的固定分区,右边为单个等待队列情况下的固定分区。第第4 4章章 存储管理存储管理 多个等待队列分区4分区3分区2分区1操作系统分区4分区3分区2分区1操作系统单个等待队列图4.9 多道程序情况下的固定分区原理第第4 4章章 存储管理存储管理 固定分区的优点是:与单一连续分配方法相比,固定分区法的内存利用率提高了;可以支持多道程序;实现简单,开销小。 固定分区的缺点:必须预先能够估计作业要占用多大的内存空间,有时候这是难以做到的;区内碎片造成浪费;分区总数固定,限制了并发执行的程序数目。第第4 4章章 存储管理存储管理
21、 4.2.3 可变分区 (动态分区分配) 1空闲存储区表 若采用固定分区法,则作业运行时所需内存一般不会刚好等于某一个分区的大小,因此分区内部的“内零头”被白白浪费了;另一方面,固定分区的分区数在系统启动以后不能任意改变,当系统中运行的作业数大于分区数时,就不可避免地会有一些作业分配不到分区,即使所有作业所需存储空间总和小于内存总和也不行。 第第4 4章章 存储管理存储管理 可变分区存储管理法并不预先将内存划分成分区,而是等到作业运行需要内存时才向系统申请,从空闲的内存区中挖一块出来,其大小等于作业所需内存的大小,这样就不会产生“内零头”。管理空闲内存区的数据结构可采用链接法和连续线性表格法。
22、每一个空闲分区用一个map结构管理: struct map unsigned m_size; /空闲分区的长度 char * m_addr; /空闲分区的起始地址 ; struct map coremapN;第第4 4章章 存储管理存储管理 图4.10所示为空闲分区表的初始状态,图4.11为某一时刻空闲分区表的状态。图中,m_size是空闲分区的长度,m_addr是空闲分区的起始地址。各个空闲分区按起始地址由低到高的顺序登记在空闲存储区表中,m_size为0的表项是空白表项,它们集中在表的后部。第第4 4章章 存储管理存储管理 m_sizem_addr00空闲区内存图4.10 空闲分区表的初始
23、状态 第第4 4章章 存储管理存储管理 m_sizem_addrm_sizem_addrm_sizem_addr0空闲区已分配区空闲区已分配区已分配区空闲区内存 图4.11 某一时刻空闲分区表的状态 第第4 4章章 存储管理存储管理 2分区分配算法 寻找某个空闲分区,其大小必须大于或等于程序的要求。若是大于要求,则将该分区分割成两个分区,其中一个分区为要求的大小并标记为“占用”,而另一个分区为余下部分并标记为“空闲”。分区的先后次序通常是从内存低端到高端。 选择分区的算法有四种:最先适应算法、最佳适应算法、最差适应算法和循环最先适应算法。第第4 4章章 存储管理存储管理 1) 最先适应算法(f
24、irst-fit) 最先适应算法是将所有的空闲分区按照地址递增的顺序排列,然后按照分区的先后次序从头开始查找,符合要求的第一个分区就是要找的分区。该算法的分配和释放的时间性能较好,较大的空闲分区可以被保留在内存高端。 第第4 4章章 存储管理存储管理 (1) 分配算法: 当为作业分配大小为size的空间时,总是从表的低地址部分开始查找,当第一次找到大于等于申请大小的空间时,就按所需要的大小分配空间给作业,若分配后还有剩余空间,就修改原来的m_size和m_addr,以记录余下的零头;如果作业所需要的空间刚好等于该空间的大小,那么该空间的m_size就为0;然后要删除表中的这些空间,即将各个非零
25、的表项上移。程序描述如下:第第4 4章章 存储管理存储管理 int *ffmalloc( mp , size )struct map *mp;unsigned int size;register int regint;register struct map *bp; /从mp开始,只要size不等于0,逐个地址检查 for(bp=mp; bp-m_size ; bp+ ) if ( bp-m_size = size ) /只要空间足够大struct map unsigned m_size; char * m_addr;;第第4 4章章 存储管理存储管理 regint = bp-m_addr ;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 存储 管理 ppt 课件 计算机 操作系统 汤小丹梁红兵版
限制150内