操作系统内存管理.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统内存管理
。操作系统内存管理1。内存管理方法内存管理主要包括虚拟地址、地址转换、内存分配和恢复、内存扩展、内存共享和保护功能。2.连续分配存储管理模式连续分配是指为用户程序分配连续的内存空间。连续分配包括单个连续存储管理和分区存储管理。2.1单一连续存储管理在此管理模式中,内存分为两个区域:
系统区域和用户区域。应用程序被加载到用户区域,并且可以使用用户区域中的所有空间。它的特点是简单,适用于单用户和单任务操作系统。
Cp/m和低于2.0的dos就是这样被采用的。这种方法的最大优点是易于管理。然而,仍然存在一些问题和不足,如为需要较少内存空间的程序浪费内存;
所有程序都被加载,所以很少使用的程序部分也占用一定的内存。2.2分区存储管理为了支持多通道程序系统和分时系统,并支持多个程序的并发执行,引入了分区存储管理。分区存储管理是将内存分成大小相等或不等的分区。操作系统占用一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区存储管理可以支持并发,但是共享内存分区很困难。分区存储管理带来了两个新问题:
内部碎片和外部碎片。内部片段是被占用的分区中未使用的空间,而外部片段是空闲分区(通常是小空闲分区),难以在被占用的分区之间使用。为了实现分区存储管理,操作系统应该维护的数据结构
是分区表或分区链表。表中的每个条目通常包括每个分区的起始地址、大小和状态(是否已分配)。
分区存储管理中常用的一种技术是内存压缩。2 . 2 . 1 nxed partition。固定分区的特征是将内存划分成几个固定大小的连续分区。分区大小可以相等:
此方法仅适用于多个相同程序的并发执行(处理多个相同类型的对象)。分区大小也可能不同:
有许多小分区、中等分区和少量大分区。
根据程序的大小,分配适当大小的当前空闲分区。
优势:
易于实现,成本低。有两个主要缺点:
内部碎片造成的浪费;
分区的总数是固定的,限制了并发程序的数量。2.2.2动态分区动态分区的特点是动态创建分区:
加载程序时,根据其初始要求分配程序,或者在程序执行期间通过系统调用分配或更改分区大小。与固定隔板相比,其优点是: 没有内部碎片。然而,它引入了另一种碎片,——外层碎片。动态分区的分区分配是为了找到某个空闲分区,其大小需要大于或等于程序的要求。如果它大于要求,该分区被分成两个分区,其中一个分区具有要求的大小并被标记为“已占用”,而另一个分区是其余的分区并被标记为“空闲”。分区分配的顺序通常是从内存的低端到高端。动态分区的分区释放过程中需要注意的问题之一是将相邻的空闲分区
合并成一个大的空闲分区。下面列出了几种常用的分区分配算法: 第一适应方法(nrst- 2。连续分配存储管理方法连续分配是指为用户程序分配连续的内存空间。连续分配包括单个连续存储管理和分区存储管理。2.1单一连续存储管理在此管理模式中,内存分为两个区域:
系统区域和用户区域。应用程序被加载到用户区域,并且可以使用用户区域中的所有空间。它的特点是简单,适用于单用户和单任务操作系统。
Cp/m和低于2.0的dos就是这样被采用的。这种方法的最大优点是易于管理。然而,仍然存在一些问题和不足,如为需要较少内存空间的程序浪费内存;
所有程序都被加载,所以很少使用的程序部分也占用一定的内存。2.2分区存储管理为了支持多通道程序系统和分时系统,并支持多个程序的并发执行,引入了分区存储管理。分区存储管理是将内存分成大小相等或不等的分区。操作系统占用一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区存储管理可以支持并发,但是共享内存分区很困难。分区存储管理带来了两个新问题:
内部碎片和外部碎片。内部片段是被占用的分区中未使用的空间,而外部片段是空闲分区(通常是小空闲分区),难以在被占用的分区之间使用。为了实现分区存储管理,操作系统应该维护的数据结构是分区表或分区链表。表中的每个条目通常包括每个分区的起始地
址、大小和状态(是否已分配)。
分区存储管理中常用的一种技术是内存压缩。2 . 2 . 1 nxed partition。固定分区的特征是将内存划分成几个固定大小的连续分区。分区大小可以相等:
此方法仅适用于多个相同程序的并发执行(处理多个相同类型的对象)。分区大小也可能不同:
有许多小分区、中等分区和少量大分区。
根据程序的大小,分配适当大小的当前空闲分区。
优势:
易于实现,成本低。有两个主要缺点:
内部碎片造成的浪费;
分区的总数是固定的,限制了并发程序的数量。2.2.2动态分区动态分区的特点是动态创建分区:
加载程序时,根据其初始要求分配程序,或者在程序执行期间通过系统调用分配或更改分区大小。与固定隔板相比,其优点是: 没有内部碎片。然而,它引入了另一种碎片,——外层碎片。动态分区的分区分配是为了找到某个空闲分区,其大小需要大于或等于程序的要求。如果它大于要求,该分区被分成两个分区,其中一个分区具有要求的大小并被标记为“已占用”,而另一个分区是其余的分区并被标记为“空闲”。分区分配的顺序通常是从内存的低端到高端。动态分区的分区释放过程中需要注意的问题之一是将相邻的空闲分区合并成一个大的空闲分区。下面列出了几种常用的分区分配算法:
第一种自适应方法(nrst:根据内存中分区的顺序从头开始搜索,以找到满足分配要求的第一个分区。该算法的分配和释放时间性能更好,更大的空闲分区可以保留在内存的高端。然而,随着低端分区的不断划分,将会产生更多的小分区,并且每次进行分配时搜索时间的成本都会增加。下一个自适应方法(循环优先自适应算法next fit):根据内存中分区的顺序,从上次分配的分区(从最后一个{area}开始)进行搜索,找到满足分配要求的第一个分区。该算法的分配和释放时间性能良好,因此空闲分区根据内存中分区的顺序,从上次分配的分区(从最后一个{zone}开始)中搜索,以找到满足分配要求的第一个分区。该算法的分配和发布的时间性能良好,使得空闲点——可以单独编写和编译——可以对不同类型的段采用不同的保护——可以由段共享,包括通过动态链接共享代码。这种方法的优点是:
源程序文件可以单独编写和编译,不同类型的段可以采用不同的保护
没有内部片段,外部片段可以通过记忆收缩来消除。
从而促进内存共享。缺点与页面存储管理的缺点相同。进程必须全部加载到内存中。5.2段管理的数据结构为了实现段管理,操作系统需要以下数据结构来实现进程地址空间到物理内存空间的映射,并跟踪物理内存的使用情况,以便在加载新段时合理分配内存空间。*流程部分表:
描述组成进程地址空间的段,这些段可以是系统段表中条目的索引。每个段都有一个段基地址,它是段内的地址。为系统中的每个流