《计算机操作系统课件:第5章存储器管理01-基本概念和连续存储管理》由会员分享,可在线阅读,更多相关《计算机操作系统课件:第5章存储器管理01-基本概念和连续存储管理(34页珍藏版)》请在金锄头文库上搜索。
1、第五章第五章 存储器管理存储器管理-内存内存-外存外存1本章节的本章节的主要内容主要内容 n 1 1 连续连续分配分配存储管理方式存储管理方式n 2 2 分页分页存储管理方式存储管理方式 n 3 3 分段分段存储管理方式存储管理方式 n 4 4 段页式段页式存储管理方式存储管理方式n 5 5 虚拟虚拟存储器(扩大内存容量)存储器(扩大内存容量)离散离散分配方式分配方式2本节课的本节课的主要内容主要内容 n 1 1 存储器的层次结构存储器的层次结构n 2 2 程序的装入和链接程序的装入和链接n 3 3 连续分配方式连续分配方式n 4 4 覆盖技术与交换技术覆盖技术与交换技术3n存储器负责保存整个
2、计算机系统中的数据。存储器负责保存整个计算机系统中的数据。n存储器管理存储器管理主要是对主要是对内存内存的管理,但也包括对内的管理,但也包括对内存和外存交换信息的管理。存和外存交换信息的管理。n内存内存分为分为系统区系统区和和用户区用户区两部分,两部分,系统区系统区用来存用来存储操作系统等系统软件,储操作系统等系统软件,用户区用户区用于分配给用户用于分配给用户程序使用,程序使用,存储管理实际上是对内存用户区的管存储管理实际上是对内存用户区的管理理。n存储器朝存储器朝高速度、大容量高速度、大容量和和小体积小体积的方向发展。的方向发展。存储器管理前言存储器管理前言4目前微机的存储层次结构目前微机的
3、存储层次结构n 从上到下,访问从上到下,访问速度渐慢速度渐慢,容量渐大容量渐大,价格渐低价格渐低。n 最佳状态最佳状态: : 各各层次的存储器层次的存储器都都处于处于均衡的繁忙状态。均衡的繁忙状态。n 由操作系统协调这些存储器的使用。由操作系统协调这些存储器的使用。5各种存储器简介各种存储器简介n寄存器寄存器(RegisterRegister):有限、最快、易变。):有限、最快、易变。 是中央处理器内的一个组成部分。在中央处理器是中央处理器内的一个组成部分。在中央处理器的控制、算术及逻辑部件中都包含的寄存器。的控制、算术及逻辑部件中都包含的寄存器。 是有限存贮容量的高速存贮部件,它们可用来暂是
4、有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。存指令、数据和位址。n高速缓存高速缓存(CacheCache):少量、非常快、易变。):少量、非常快、易变。 加在加在CPUCPU与主存储器之间,缓解速度的差异,提升与主存储器之间,缓解速度的差异,提升系统的系统的执行效率执行效率。 外围设备也会加上外围设备也会加上 CacheCache来提升该设备的来提升该设备的数据存数据存取效率取效率。6各种存储器简介(续)各种存储器简介(续)n内存内存(RAMRAM,随机存取存储器随机存取存储器):): 若干兆字节、中等速度、易变。若干兆字节、中等速度、易变。 存放当前正在使用的(即执行中)的数
5、据和程序。存放当前正在使用的(即执行中)的数据和程序。 一旦关闭电源或发生断电,其中的程序和数据就一旦关闭电源或发生断电,其中的程序和数据就会丢失。会丢失。 n外存外存: 像硬盘、软盘、磁带、像硬盘、软盘、磁带、 光盘等。光盘等。 数百兆或数千兆字节、低速、不易变。数百兆或数千兆字节、低速、不易变。 能长期保存信息,能长期保存信息,不依赖电源不依赖电源。 7内存管理主要功能内存管理主要功能(1)(1)内存分配和回收内存分配和回收 为运行进程的程序和数据分配内存空间,并为运行进程的程序和数据分配内存空间,并在不需要时进行回收。在不需要时进行回收。(2)(2)地址转换地址转换 必须配合硬件进行地址
6、变换工作,把用户必须配合硬件进行地址变换工作,把用户使用的使用的逻辑地址逻辑地址( (又称又称相对地址相对地址或或虚拟地址虚拟地址) )转转换成处理器能访问的换成处理器能访问的物理地址物理地址( (又称又称绝对地址绝对地址或或实地址实地址) )。8逻辑地址与物理地址逻辑地址与物理地址n逻辑地址逻辑地址(相对地址,虚地址相对地址,虚地址) 用户的程序经过汇编或编译后形成目标代用户的程序经过汇编或编译后形成目标代码,目标代码通常采用码,目标代码通常采用相对地址相对地址的形式,其的形式,其首地址为首地址为0 0,其余指令中的地址都相对于首地,其余指令中的地址都相对于首地址而编址。址而编址。 处理机不
7、能直接用逻辑地址在内存中读取处理机不能直接用逻辑地址在内存中读取信息。信息。n物理地址物理地址(绝对地址,实地址绝对地址,实地址) 内存中存储单元的地址,可供处理机直接寻址。内存中存储单元的地址,可供处理机直接寻址。9(3)(3)内存空间的共享与保护内存空间的共享与保护 共享共享是指若干个进程能够共同访问公共程序所占是指若干个进程能够共同访问公共程序所占的主存区。的主存区。 保护保护使在内存中的各道程序,只能访问它自己的使在内存中的各道程序,只能访问它自己的区域,避免各道程序间相互干拢,特别是当一道程序区域,避免各道程序间相互干拢,特别是当一道程序发生错误时,不致于影响其他程序的运行。通常由硬
8、发生错误时,不致于影响其他程序的运行。通常由硬件完成保护功能,由软件辅助实现。件完成保护功能,由软件辅助实现。(4)(4)内存扩充内存扩充 用户在编制程序时,不应该受内存容量限制,所用户在编制程序时,不应该受内存容量限制,所以要借助于虚拟存储技术或其他自动覆盖技术,为用以要借助于虚拟存储技术或其他自动覆盖技术,为用户提供比实际户提供比实际内存空间内存空间大的大的地址空间地址空间,从而实现内存,从而实现内存容量容量“扩充扩充”的目的。的目的。内存管理主要功能(续)内存管理主要功能(续)10内存装入装入程序程序源程序装入模块链接链接程序程序库编译编译程序程序目标模块5.1.4 5.1.4 程序的链
9、接和装入程序的链接和装入编译:编译:由编译程序将由编译程序将源程序编译源程序编译成若干个成若干个目标模块目标模块。链接:链接:由链接程序将编译后形成的由链接程序将编译后形成的目标模块目标模块以及它们所需要以及它们所需要 的的库函数链接库函数链接在一起形成在一起形成装入模块(可执行文件)装入模块(可执行文件)。装入:装入:由装入程序将装入模块由装入程序将装入模块装入内存装入内存。构造。构造PCBPCB,形成进程。,形成进程。11内存的分配方式一n连续分配方式:用户程序装入内存时连续分配方式:用户程序装入内存时系统系统分配一块连续的内存区域分配一块连续的内存区域。 1. 1. 单一连续分配单一连续
10、分配2. 2. 分区分配分区分配12n只能用于单用户、单任务的操作系统中。只能用于单用户、单任务的操作系统中。n工作原理:工作原理:在单道环境下,不管是单用户系统还在单道环境下,不管是单用户系统还是单道批处理系统,进程(作业)执行时除了系统是单道批处理系统,进程(作业)执行时除了系统占用一部分主存外,剩下的主存区域全部归它占用。占用一部分主存外,剩下的主存区域全部归它占用。主存可以划分为三部分:主存可以划分为三部分:系统区、用户区、空闲区。系统区、用户区、空闲区。内存的用户区一次只分给一个用户程序使用。用户内存的用户区一次只分给一个用户程序使用。用户占用区是一个连续的存储区占用区是一个连续的存
11、储区所以又称单一连续区存所以又称单一连续区存储管理。储管理。单一连续分配的存储管理单一连续分配的存储管理13单一连续存储管理单一连续存储管理n优点优点:简单,易于管理。:简单,易于管理。n缺点缺点: 对要求内存空间少的程序,闲置内存空间对要求内存空间少的程序,闲置内存空间较多,造成较多,造成内存浪费内存浪费; 14 分区式存储管理分区式存储管理1 1 原理原理2 2 固定分区固定分区(fixed partitioning)(fixed partitioning)3 3 动态分区动态分区(dynamic partitioning)(dynamic partitioning)15n原理原理:把内存
12、分为一些大小相等或不等的连续:把内存分为一些大小相等或不等的连续分区分区。 操作系统占用操作系统占用其中其中一个分区一个分区,其余其余由由应用程序应用程序使使用用,每个应用程序占用一个或多个分区。每个应用程序占用一个或多个分区。n特点特点:适用于多道程序系统和分时系统。:适用于多道程序系统和分时系统。 支持多个程序并发执行支持多个程序并发执行。n问题问题:可能存在:可能存在内碎片内碎片和和外碎片外碎片。内碎片:内碎片:占用分区之内未被利用的空间。占用分区之内未被利用的空间。外碎片外碎片:占用分区之间难以利用的空闲分区:占用分区之间难以利用的空闲分区 (通常是小空闲分区)。(通常是小空闲分区)。
13、 分区式存储管理分区式存储管理16 固定分区固定分区(fixed partitioning)(fixed partitioning)n工作原理:工作原理: 预先把可分配的主存储器空间分割成若干个预先把可分配的主存储器空间分割成若干个连续区域,称为连续区域,称为一个分区一个分区。 每个分区的大小可以相同也可以不同每个分区的大小可以相同也可以不同, ,但但分区分区大小固定不变大小固定不变。 每个分区每个分区装一个且装一个且只只能能装一个程序装一个程序,而且系,而且系统需要建立一张统需要建立一张分区使用表分区使用表,表项包含每个分区,表项包含每个分区的分区号、起始地址、长度及分配状态。当分配的分区号
14、、起始地址、长度及分配状态。当分配时找到符合的内存大小并且未分配就进行分配。时找到符合的内存大小并且未分配就进行分配。 17 固定分区固定分区(fixed partitioning)(fixed partitioning)n分区大小相等分区大小相等: 只适合于多个相同程序的并发执行(处理多个类只适合于多个相同程序的并发执行(处理多个类型相同的对象)。型相同的对象)。n分区大小不等分区大小不等: 多个小分区、适量中等分区、少量大分区。多个小分区、适量中等分区、少量大分区。 可根可根据程序的大小,分配当前空闲的、适当大小的分区。据程序的大小,分配当前空闲的、适当大小的分区。 把内存划分为若干个把内
15、存划分为若干个固定大小(个数固定,固定大小(个数固定,大小不能改变)大小不能改变)的连续分区。的连续分区。18固定分区固定分区( (大小相同大小相同) )固定分区固定分区( (多种大小多种大小) ) 固定分区固定分区19各个分区的碎片各个分区的碎片 固定分区固定分区20n优点:易于实现,开销小。优点:易于实现,开销小。n缺点:缺点:内碎片造成浪费。内碎片造成浪费。分区总数固定,限制了并发执行的程序数目。分区总数固定,限制了并发执行的程序数目。 固定分区固定分区21动态分区动态分区(dynamic partitioning)(dynamic partitioning)n工作原理:工作原理: 内存
16、不是系统预先划分好的,而是当程内存不是系统预先划分好的,而是当程序装入时,根据程序的序装入时,根据程序的实际需求实际需求和和内存空内存空间的使用情况间的使用情况来决定是否分配。若有足够来决定是否分配。若有足够的空间,则按需要分割一部分分区给该进的空间,则按需要分割一部分分区给该进程;否则令其等待内存空间。程;否则令其等待内存空间。 22 1. 1. 首次适应算法首次适应算法(first-fit)(first-fit) 按分区在内存中的先后次序从头开始找,找到符合按分区在内存中的先后次序从头开始找,找到符合要求的第一个分区进行分配。要求的第一个分区进行分配。q优点优点:分配和释放的时间性能较好,
17、较大的空闲:分配和释放的时间性能较好,较大的空闲 分区可以被保留在内存的高址部分。分区可以被保留在内存的高址部分。q缺点缺点:随着低址分区不断划分,:随着低址分区不断划分,容易容易形成形成多个过多个过 小分区而难以利用,成为小分区而难以利用,成为外碎片外碎片。同时这。同时这 些小分区些小分区增加增加了了查寻查寻时的判断时的判断时间时间,每次每次 分配时查找时间开销会增大,降低效率。分配时查找时间开销会增大,降低效率。 常用的动态分区分配算法常用的动态分区分配算法23 改变首次适应算法每次从链首开始查寻造成的改变首次适应算法每次从链首开始查寻造成的缺陷。缺陷。 从上次分配的空闲分区的从上次分配的
18、空闲分区的下一个空闲分区下一个空闲分区开始查开始查找,到最后分区时再从头开始循环查找,直到找到找,到最后分区时再从头开始循环查找,直到找到符合要求的第一个分区进行分配。符合要求的第一个分区进行分配。 优点优点:使内存区分配比较均匀,减少查寻次数:使内存区分配比较均匀,减少查寻次数。 缺点缺点:大空闲分区不易保留,大进程无法进入。:大空闲分区不易保留,大进程无法进入。2. 2. 循环首次适应算法循环首次适应算法(next-fit next-fit ) 常用的动态分区分配算法常用的动态分区分配算法24 按分区在内存中的先后次序从头开始找,找到其按分区在内存中的先后次序从头开始找,找到其大小与要求大
19、小与要求相差最小相差最小的空闲分区进行分配。的空闲分区进行分配。 空闲分区链(为了加速查找):按照空闲分区链(为了加速查找):按照分区容量递增分区容量递增的方的方式形成,分配时从链首开始查找,这样找到的第一个大小可式形成,分配时从链首开始查找,这样找到的第一个大小可以满足的分区肯定是与进程申请空间大小最接近,甚至是完以满足的分区肯定是与进程申请空间大小最接近,甚至是完全吻合的分区。全吻合的分区。 优点:优点:外碎片较小外碎片较小,较大空闲分区可以被保留。较大空闲分区可以被保留。 缺点:缺点:剩余分区肯定是相对最小的,外碎片较多,每次剩余分区肯定是相对最小的,外碎片较多,每次 分配都会产生一个难
20、以再利用的小分配都会产生一个难以再利用的小“碎片碎片” 。3. 3. 最佳适应算法(最佳适应算法(best-fitbest-fit)25 按分区在内存中的先后次序从头开始找,找到按分区在内存中的先后次序从头开始找,找到最大的空闲分区进行分配。(最大的空闲分区进行分配。(“最差最差” 不是指这种算不是指这种算法的性能最差,相反在某种情况下,它却是一种性能法的性能最差,相反在某种情况下,它却是一种性能“最佳最佳”的算法。)的算法。) 空闲分区链(为了加速查找):按照空闲分区链(为了加速查找):按照分区容量递减分区容量递减的方的方式形成,分配时从链首开始,若链首分区大小不满足,则可式形成,分配时从链
21、首开始,若链首分区大小不满足,则可以肯定不存在能够满足要求的分区;否则对链首分区进行划以肯定不存在能够满足要求的分区;否则对链首分区进行划分。分。 分割后空闲块仍为较大空块,基本不留下小空闲分区。分割后空闲块仍为较大空块,基本不留下小空闲分区。优点:优点:基本不留下小空闲分区,不易形成基本不留下小空闲分区,不易形成外碎片外碎片。缺点:缺点:较大空闲分区不易被保留。较大空闲分区不易被保留。4. 4. 最坏适应算法(最坏适应算法(worst-fitworst-fit)26动态分区动态分区-回收内存回收内存n当进程运行完毕释放内存时,系统根据回收区的首当进程运行完毕释放内存时,系统根据回收区的首地址
22、,从地址,从空闲分区链表空闲分区链表中找到相应的插入点,进行中找到相应的插入点,进行回收。回收。n分区释放分区释放过程中需要将相邻的过程中需要将相邻的空闲分区合并空闲分区合并成一个成一个空闲分区,包括以下空闲分区,包括以下4 4种情况:种情况:回收区F1F2回收区F2回收区F1回收区27动态分区动态分区-回收内存回收内存(a)M1、M2都非空,将回收区直接记录在空闲分区表或者插入空闲分区链中。(b)M1为空,M2非空,则首先将M1与回收区合并,修改M1大小为其原大小与回收区之和。(c)M1非空,M2为空,则首先将M2与回收区合并,修改M2始地址为回收区的始地址,M2大小为其原大小与回收区之和。
23、(d)M1、M2都空,合并M1、回收区、M2,修改M1为原大小、回收区大小和M2大小三者之和,从空闲分区链中去掉M2。28动态(可变)分区分配的优缺点动态(可变)分区分配的优缺点n优点:优点:q有助于多道程序设计,提高了内存的利用率;有助于多道程序设计,提高了内存的利用率;q要求硬件支持少,代价低;要求硬件支持少,代价低;q管理算法简单,实现容易。管理算法简单,实现容易。n缺点:缺点:q必须给作业分配一连续的内存区域;必须给作业分配一连续的内存区域;q碎片问题严重,内存仍不能得到充分利用;碎片问题严重,内存仍不能得到充分利用;q不能实现对内存的扩充。分区的大小受到存储不能实现对内存的扩充。分区
24、的大小受到存储器容量的限制。器容量的限制。293.3.紧凑紧凑n紧凑是紧凑是解决解决“碎片碎片”问题问题的一种方法。的一种方法。n定义定义 通过移动,把多个分散的小分区拼接成大通过移动,把多个分散的小分区拼接成大分区的方法被称为分区的方法被称为“紧凑紧凑”或或“ 拼接拼接”。n代价与时间代价与时间 紧凑的开销很大,当系统中每个空闲区域紧凑的开销很大,当系统中每个空闲区域单独均不能满足,但所有空闲区域之和能够满单独均不能满足,但所有空闲区域之和能够满足时才进行一次紧凑足时才进行一次紧凑 。30n目的:目的:为了解决为了解决大程序大程序与与小内存小内存之间的矛盾,之间的矛盾,引入了覆盖技术和交换技
25、术。引入了覆盖技术和交换技术。n实质实质是对内存进行了是对内存进行了逻辑扩充逻辑扩充。5 5.3 .3 覆盖技术与交换技术覆盖技术与交换技术315.3.1 5.3.1 覆盖技术覆盖技术n定义:定义:指同一内存区可以被不同的程序段指同一内存区可以被不同的程序段重复使用。重复使用。q可以相互覆盖的程序段叫做可以相互覆盖的程序段叫做覆盖覆盖q可共享的内存区叫做可共享的内存区叫做覆盖区覆盖区q把程序执行时并不要求同时装入内存的覆盖把程序执行时并不要求同时装入内存的覆盖组成一组,叫组成一组,叫覆盖段覆盖段,并分配同一个内存区。,并分配同一个内存区。32交换技术交换技术(swapping)(swappin
26、g) 原理:原理:当内存空间紧张时,系统需要将内存中当内存空间紧张时,系统需要将内存中暂暂时不运行时不运行的某个的某个进程进程部分或全部移到外存,以便部分或全部移到外存,以便腾出足够的内存空间,把外存中的某个腾出足够的内存空间,把外存中的某个已具备运已具备运行条件的程序行条件的程序移到相应的内存区,创建进程,并移到相应的内存区,创建进程,并使其投入运行。使其投入运行。 这种技术是进程在内存与外存之间的动态调度。这种技术是进程在内存与外存之间的动态调度。常用于常用于多道程序系统多道程序系统或或小型分时系统小型分时系统中,与中,与分区分区存储管理存储管理配合使用。配合使用。 交换技术的发展导致了交换技术的发展导致了虚存技术虚存技术的出现。的出现。3334