操作系统内存管理.doc
《操作系统内存管理.doc》由会员分享,可在线阅读,更多相关《操作系统内存管理.doc(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. .操作系统存管理 1. 存管理法 存管理主要包括虚地址、地址变换、存分配和回收、存扩大、存共享和保护等功能。 2. 连续分配存储管理式 连续分配是指为一个用户程序分配连续的存空间。连续分配有单一连续存储管理和分区式储管理两种式。2.1 单一连续存储管理 在这种管理式中,存被分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。其特点是,最简单,适用于单用户、单任务的操作系统。CPM和 DOS20以下就是采用此种式。这种式的最大优点就是易于管理。但也存在着一些问题和缺乏之处,例如对要求存空间少的程序,造成存浪费;程序全部装入,使得很少使用的程序局部也占用定数量的存。2.2
2、 分区式存储管理 为了支持多道程序系统和分时系统,支持多个程序并发执行,引入了分区式存储管理。分区式存储管理是把存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区式存储管理虽然可以支持并发,但难以进展存分区的共享。 分区式存储管理引人了两个新的问题:碎片和外碎片。 碎片是占用分区未被利用的空间,外碎片是占用分区之间难以利用的空闲分区(通常是小空闲分区)。 为实现分区式存储管理,操作系统应维护的数据构造为分区表或分区链表。表中各表项一般包括每个分区的起始地址、大小及状态(是否已分配)。 分区式存储管理常采用的一项技术就是存紧缩
3、(paction)。2.2.1 固定分区(nxedpartitioning)。 固定式分区的特点是把存划分为假设干个固定大小的连续分区。分区大小可以相等:这种作法只适合于多个一样程序的并发执行(处理多个类型一样的对象)。分区大小也可以不等:有多个小分区、适量的中等分区以及少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。 优点:易于实现,开销小。 缺点主要有两个:碎片造成浪费;分区总数固定,限制了并发执行的程序数目。2.2.2动态分区(dynamic partitioning)。 动态分区的特点是动态创立分区:在装入程序时按其初始要求分配,或在其执行过程过系统调用进展分配或改变分区
4、大小。与固定分区相比较其优点是:没有碎片。但它却引入了另一种碎片外碎片。动态分区的分区分配就是寻找某个空闲分区,其大小需大于或等于程序的要求。假设是大于要求,那么将该分区分割成两个分区,其中一个分区为要求的大小并标记为“占用,而另一个分区为余下局部并标记为“空闲。分区分配的先后次序通常是从存低端到高端。动态分区的分区释放过程中有一个要注意的问题是,将相邻的空闲分区合并成一个大的空闲分区。下面列出了几种常用的分区分配算法: 最先适配法(nrst-fit):按分区在存的先后次序从头查找,找到符合要求的第一个分区进展分配。该算法的分配和释放的时间性能较好,较大的空闲分区可以被保存在存高端。但随着低端
5、分区不断划分会产生较多小分区,每次分配时查找时间开销便会增大。 下次适配法(循环首次适应算法 next fit):按分区在存的先后次序,从上次分配的分区起查找(到最后区时再从头开场,找到符合要求的第一个分区进展分配。该算法的分配和释放的时间性能较好,使空闲分区分布得更均匀,但较大空闲分区不易保存。 最正确适配法(best-fit):按分区在存的先后次序从头查找,找到其大小与要求相差最小的空闲分区进展分配。从个别来看,外碎片较小;但从整体来看,会形成较多外碎片优点是较大的空闲分区可以被保存。 最坏适配法(worst- fit):按分区在存的先后次序从头查找,找到最大的空闲分区进展分配。根本不留下
6、小空闲分区,不易形成外碎片。但由于较大的空闲分区不被保存,当对存需求较大的进程需要运行时,其要求不易被满足。 2.3 伙伴系统 固定分区和动态分区式都有缺乏之处。固定分区式限制了活动进程的数目,当进程大小与空闲分区大小不匹配时,存空间利用率很低。动态分区式算法复杂,回收空闲分区时需要进展分区合并等,系统开销较大。伙伴系统式是对以上两种存式的一种折衷案。 伙伴系统规定,无论已分配分区或空闲分区,其大小均为 2 的 k 次幂,k 为整数, lkm,其中: 21 表示分配的最小分区的大小, 2m 表示分配的最大分区的大小, 通常 2m是整个可分配存的大小。 假设系统的可利用空间容量为2m个字, 那么
7、系统开场运行时, 整个存区是一个大小为2m的空闲分区。在系统运行过中, 由于不断的划分,可能会形成假设干个不连续的空闲分区,将这些空闲分区根据分区的大小进展分类,对于每一类具有一样大小的所有空闲分区,单独设立一个空闲分区双向链表。这样,不同大小的空闲分区形成了k(0km)个空闲分区链表。 分配步骤: 当需要为进程分配一个长度为n 的存储空间时: 首先计算一个i 值,使 2(i1) <n 2i, 然后在空闲分区大小为2i的空闲分区链表中查找。 假设找到,即把该空闲分区分配给进程。 否那么,说明长度为2i的空闲分区已经耗尽,那么在分区大小为2(i1)的空闲分区链表中寻找。 假设存在 2(i1
8、)的一个空闲分区,那么把该空闲分区分为相等的两个分区,这两个分区称为一对伙伴,其中的一个分区用于配, 而把另一个参加分区大小为2i的空闲分区链表中。 假设大小为2(i1)的空闲分区也不存在,那么需要查找大小为2(i2)的空闲分区, 假设找到那么对其进展两次分割: 第一次,将其分割为大小为 2(i1)的两个分区,一个用于分配,一个参加到大小为 2(i1)的空闲分区链表中; 第二次,将第一次用于分配的空闲区分割为 2i的两个分区,一个用于分配,一个参加到大小为 2i的空闲分区链表中。 假设仍然找不到,那么继续查找大小为 2(i3)的空闲分区,以此类推。 由此可见,在最坏的情况下,可能需要对 2k的
9、空闲分区进展 k 次分割才能得到所需分区。 与一次分配可能要进展屡次分割一样,一次回收也可能要进展屡次合并,如回收大小为2i的空闲分区时,假设事先已存在2i的空闲分区时,那么应将其与伙伴分区合并为大小为2i1的空闲分区,假设事先已存在2i1的空闲分区时,又应继续与其伙伴分区合并为大小为2i2的空闲分区,依此类推。 在伙伴系统中,其分配和回收的时间性能取决于查找空闲分区的位置和分割、合并空闲分区所花费的时间。与前面所述的多种法相比较,由于该算法在回收空闲分区时,需要对空闲分区进展合并,所以其时间性能比前面所述的分类搜索算法差,但比顺序搜索算法好,而其空间性能那么远优于前面所述的分类搜索法,比顺序
10、搜索法略差。 需要指出的是,在当前的操作系统中,普遍采用的是下面将要讲述的基于分页和分段机制的虚拟存机制,该机制较伙伴算法更为合理和高效,但在多处理机系统中,伙伴系统仍不失为一种有效的存分配和释放的法,得到了大量的应用。 2.4 存紧缩 存紧缩:将各个占用分区向存一端移动,然后将各个空闲分区合并成为一个空闲分区。 这种技术在提供了某种程度上的灵活性的同时,也存在着一些弊端,例如:对占用分区进展存数据搬移占用CPU时间;如果对占用分区中的程序进展“浮动,那么其重定位需要硬件支持。 紧缩时机:每个分区释放后,或存分配找不到满足条件的空闲分区时。 图8.12 堆构造的存储管理的分配算法: 在动态存储
11、过程中,不管哪个时刻,可利用空间都是-一个地址连续的存储区,在编译程序中称之为堆,每次分配都是从这个可利用空间中划出一块。其实现方法是:设立一个指針,称之为堆指针,始终指向堆的最低或锻联地址。当用户申请N个单位的存储块时,堆指针向高地址或 低地址称动N个存储单位,而移动之前的堆指针的值就是分配给用户的占用块的初始地址。例如,某个串处理系统中有A、B、C、D这4个串,其串值长度分别為12,6,10和8. 假设堆指针free的初值为零,那么分配给这4个串值的存储空间的初始地址分别为0.12.18和28,如图8.12(a)和b)所示,分配后的堆指针的值为36。 因此,这种堆构造的存储管理的分配算法非
12、常简单, 释放存空间执行存紧缩: 回收用户释放的空闲块就比较麻烦.由于系统的可利用空间始终是一个绝址连续的存储块,因此回收时必须将所释放的空间块合并到整个堆上去才 能重新使用,这就是存储策缩的任务.通常,有两种做法: 一种是一旦有用户释放存储块即进展回收紧缩,例始,图8.12 (a)的堆,在c串释放存储块时即回收紧缩,例如图8.12 (c)的堆,同时修改串的存储映像成图8.12(d)的状态; 另一种是在程序执行过程中不回收用户随时释放的存储块,直到可利用空同不够分配或堆指针指向最高地址时才进展存储紧缩。此时紧缩的目的是将堆中所有的空间块连成一块,即将所有的占用块部集中到 可利用空间的低地地区,
13、而剩余的高地址区成为一整个地继连续的空闲块,如图8.13所示,其中a为紧缩前的状态,(b)为紧缩后的状态 图8.13 a 紧缩前 b紧缩后 和无用单元收集类似,为实现存储紫编,首先要对占用块进展“标志,标志算法和无用单元收集类同(存储块的构造可能不同,其次需进展以下4步雄作: 1)计算占用块的新地址。从最低地址开场巡査整个存储空间,对每一个占用块找到它在紧缩后的新地址。 为此,需设立两个指针随巡查向前移动,这两个指针分别指示占用 块在紧缩之前和之后的原地址和新地址。因此,在每个占用块的第-个存储单位中,除了 设立长度域(存储该占用换的大小和标志域(存储区别该存储块是占用块或空闲块的标 志之外,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 内存 管理
限制150内