您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页操作系统内存管理——分区、页式、段式管理

操作系统内存管理——分区、页式、段式管理

来源:伴沃教育

1. 内存管理方法

2. 连续分配存储管理方式

      连续分配是指为一个用户程序分配连续的内存空间。连续分配有单一连续存储管理和分区式储管理两种方式。

2.1 单一连续存储管理

     在这种管理方式中,内存被分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。其特点是,最简单,适用于单用户、单任务的操作系统。CPM DOS 20以下就是采用此种方式。这种方式的最大优点就是易于管理。但也存在着一些问题和不足之处,例如对要求内存空间少的程序,造成内存浪费;程序全部装入,使得很少使用的程序部分也占用定数量的内存。

2.2 分区式存储管理

       为了支持多道程序系统和分时系统,支持多个程序并发执行,引入了分区式存储管理。分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区式存储管理虽然可以支持并发,但难以进行内存分区的共享。

       分区式存储管理引人了两个新的问题:内碎片和外碎片。

      内碎片是占用分区内未被利用的空间,外碎片是占用分区之间难以利用的空闲分区(通常是小空闲分区)

      分区式存储管理常采用的一项技术就是内存紧缩(compaction)。

2.2.1 固定分区(nxedpartitioning)。

        固定式分区的特点是把内存划分为若干个固定大小的连续分区。分区大小可以相等:这种作法只适合于多个相同程序的并发执行(处理多个类型相同的对象)。分区大小也可以不等:有多个小分区、适量的中等分区以及少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。

      优点:易于实现,开销小。

      缺点主要有两个:内碎片造成浪费;分区总数固定,了并发执行的程序数目。

2.2.2动态分区(dynamic partitioning)。

        动态分区的特点是动态创建分区:在装入程序时按其初始要求分配,或在其执行过程中通过系统调用进行分配或改变分区大小。与固定分区相比较其优点是:没有内碎片。但它却引入了另一种碎片——外碎片。动态分区的分区分配就是寻找某个空闲分区,其大小需大于或等于程序的要求。若是大于要求,则将该分区分割成两个分区,其中一个分区为要求的大小并标记为占用,而另一个分区为余下部分并标记为空闲。分区分配的先后次序通常是从内存低端到高端。动态分区的分区释放过程中有一个要注意的问题是,将相邻的空闲分区合并成一个大的空闲分区。

下面列出了几种常用的分区分配算法:

        最先适配法(nrst-fit)按分区在内存的先后次序从头查找,找到符合要求的第一个分区进行分配。该算法的分配和释放的时间性能较好,较大的空闲分区可以被保留在内存高端。但随着低端分区不断划分会产生较多小分区,每次分配时查找时间开销便会增大。

       下次适配法(循环首次适应算法 next fit)按分区在内存的先后次序,从上次分配的分区起查找(到最后{区时再从头开始},找到符合要求的第一个分区进行分配。该算法的分配和释放的时间性能较好,使空闲分区分布得更均匀,但较大空闲分区不易保留。

       最佳适配法(best-fit)按分区在内存的先后次序从头查找,找到其大小与要求相差最小的空闲分区进行分配。从个别来看,外碎片较小;但从整体来看,会形成较多外碎片优点是较大的空闲分区可以被保留。

       最坏适配法(worst- fit)按分区在内存的先后次序从头查找,找到最大的空闲分区进行分配。基本不留下小空闲分区,不易形成外碎片。但由于较大的空闲分区不被保留,当对内存需求较大的进程需要运行时,其要求不易被满足。

 2.3 伙伴系统

        固定分区和动态分区方式都有不足之处。固定分区方式了活动进程的数目,当进程大小与空闲分区大小不匹配时,内存空间利用率很低。动态分区方式算法复杂,回收空闲分区时需要进行分区合并等,系统开销较大。伙伴系统方式是对以上两种内存方式的一种折衷方案。
        伙伴系统规定,无论已分配分区或空闲分区,其大小均为 2 的 k 次幂,k 为整数, l≤k≤m,其中:

        2^1 表示分配的最小分区的大小,

        2^m 表示分配的最大分区的大小,

        通常 2^m是整个可分配内存的大小。
        假设系统的可利用空间容量为2^m个字, 则系统开始运行时, 整个内存区是一个大小为2^m的空闲分区。在系统运行过中, 由于不断的划分,可能会形成若干个不连续的空闲分区,将这些空闲分区根据分区的大小进行分类,对于每一类具有相同大小的所有空闲分区,单独设立一个空闲分区双向链表。这样,不同大小的空闲分区形成了k(0≤k≤m)个空闲分区链表。 

       分配步骤:

       当需要为进程分配一个长度为n 的存储空间时:

       首先计算一个i 值,使 2^(i-1) <n ≤ 2^i,

       然后在空闲分区大小为2^i的空闲分区链表中查找。

       若找到,即把该空闲分区分配给进程。

       否则,表明长度为2^i的空闲分区已经耗尽,则在分区大小为2^(i+1)的空闲分区链表中寻找。

       若存在 2^(i+1)的一个空闲分区,则把该空闲分区分为相等的两个分区,这两个分区称为一对伙伴,其中的一个分区用于配,   而把另一个加入分区大小为2^i的空闲分区链表中。

       若大小为2^(i+1)的空闲分区也不存在,则需要查找大小为2^(i+2)的空闲分区, 若找到则对其进行两次分割:

              第一次,将其分割为大小为 2^(i+1)的两个分区,一个用于分配,一个加入到大小为 2^(i+1)的空闲分区链表中;

              第二次,将第一次用于分配的空闲区分割为 2^i的两个分区,一个用于分配,一个加入到大小为 2^i的空闲分区链表中。

      若仍然找不到,则继续查找大小为 2^(i+3)的空闲分区,以此类推。

      由此可见,在最坏的情况下,可能需要对 2^k的空闲分区进行 k 次分割才能得到所需分区。

      与一次分配可能要进行多次分割一样,一次回收也可能要进行多次合并,如回收大小为2^i的空闲分区时,若事先已存在2^i的空闲分区时,则应将其与伙伴分区合并为大小为2^i+1的空闲分区,若事先已存在2^i+1的空闲分区时,又应继续与其伙伴分区合并为大小为2^i+2的空闲分区,依此类推。
        在伙伴系统中,其分配和回收的时间性能取决于查找空闲分区的位置和分割、合并空闲分区所花费的时间。与前面所述的多种方法相比较,由于该算法在回收空闲分区时,需要对空闲分区进行合并,所以其时间性能比前面所述的分类搜索算法差,但比顺序搜索算法好,而其空间性能则远优于前面所述的分类搜索法,比顺序搜索法略差。 需要指出的是,在当前的操作系统中,普遍采用的是下面将要讲述的基于分页和分段机制的虚拟内存机制,该机制较伙伴算法更为合理和高效,但在多处理机系统中,伙伴系统仍不失为一种有效的内存分配和释放的方法,得到了大量的应用。

 2.4 内存紧缩

          内存紧缩:将各个占用分区向内存一端移动,然后将各个空闲分区合并成为一个空闲分区。

        这种技术在提供了某种程度上的灵活性的同时,也存在着一些弊端,例如:对占用分区进行内存数据搬移占用CPU时间;如果对占用分区中的程序进行浮动,则其重定位需要硬件支持。

          紧缩时机:每个分区释放后,或内存分配找不到满足条件的空闲分区时。

 

       

                               图8.12

      堆结构的存储管理的分配算法

     释放内存空间执行内存紧缩:

     回收用户释放的空闲块就比较麻烦.由于系统的可利用空间始终是一个绝址连续的存储块,因此回收时必须将所释放的空间块合并到整个堆上去才 能重新使用,这就是"存储策缩"的任务.通常,有两种做法:

      一种是一旦有用户释放存储块即进行回收紧缩,例始,图8.12 (a)的堆,在c串释放存储块时即回收紧缩,例如图8.12 (c)的堆,同时修改串的存储映像成图8.12(d)的状态;

      

                     图8.13  a 紧缩前 b紧缩后

       和无用单元收集类似,为实现存储紫编,首先要对占用块进行“标志”,标志算法和无用单元收集类同(存储块的结构可能不同),其次需进行下列4步雄作:

       (2)修改用户触初始变量表,以便在存储紧缩后用户程序能继续正常运行*。

       (3)检查每个占用块中存储的数据, 若有指向其他存储换的指针,则需作相应修改.

       可见,存储紧缩法比无用单元收集法更为复杂,前者不仅要传送数据(进行占用块迁移),而且还有需要修改所有占用块中的指针值。因此,存储紧缩也是个系统操作,且非不得已就不用。

 

3. 覆盖和交换技术

 3.1 覆盖技术

        引入覆盖 (overlay)技术的目标是在较小的可用内存中运行较大的程序。这种技术常用于多道程序系统之中,与分区式存储管理配合使用。

       覆盖技术的原理:一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间。将程序必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)平时存放在外存(覆盖文件)中,在需要时才装入内存。不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。

       在任何时候只在内存中保留所需的指令和数据;当需要其它指令时,它们会装入到刚刚不再需要的指令所占用的内存空间;

       如在同一时刻,CPU只能执行B,C中某一条。B,C之间就可以做覆盖。

      

 

       覆盖技术的缺点是编程时必须划分程序模块和确定程序模块之间的覆盖关系,增加编程复杂度;从外存装入覆盖文件,以时间延长换取空间节省。

      覆盖的实现方式有两种:以函数库方式实现或操作系统支持。

3.2 交换技术

      原理:暂停执行内存中的进程,将整个进程的地址空间保存到外存的交换区中(换出swap out),而将外存中由阻塞变为就绪的进程的地址空间读入到内存中,并将该进程送到就绪队列(换入swap in)。

3.3 覆盖与交换比较

       1)与覆盖技术相比,交换不要求程序员给出程序段之间的覆盖结构。

       2)交换主要是在进程与作业之间进行,而覆盖则主要在同一作业或进程内进行。 另外覆盖只能覆盖那些与覆盖程序段无关的程序段。

4. 页式和段式存储管理

根据分配时所采用的基本单位不同,可将离散分配的管理方式分为以下三种:
页式存储管理、段式存储管理和段页式存储管理。其中段页式存储管理是前两种结合的产物。

 

5. 页式存储管理

4.1 基本原理

      

      页式管理方式的优点是:

       1)没有外碎片,每个内碎片不超过页大比前面所讨论的几种管理方式的最大进步是,

       2)一个程序不必连续存放。

      缺点是:要求程序全部装入内存,没有足够的内存,程序就不能执行。

4.2 页式管理的数据结构

       

                                 图4-1 页表

        物理页面表:整个系统有一个物理页面表,描述物理内存空间的分配使用状况,其数据结构可采用位示图和空闲页链表

        对于位示图法,即如果该页面已被分配,则对应比特位置1,否置0.

       

                                  图4-2 页面表

      

                                       图4-3 请求表

4.3 页式管理地址变换

        原理:CPU中的内存管理单元(MMU)按逻辑页号通过查进程页表得到物理页框号,将物理页框号与页内地址相加形成物理地址(见图4-4)。
        逻辑页号,页内偏移地址->查进程页表,得物理页号->物理地址:
       
                                       图4-4 页式管理的地址变换

       第二次完成真正的读写操作。       

 

5. 段式存储管理

5.1 基本原理

      在为某个段分配物理内存时,可以采用首先适配法、下次适配法、最佳适配法等方法。

      在回收某个段所占用的空间时,要注意将收回的空间与其相邻的空间合并。

      程序通过分段划分为多个模块,如代码段、数据段、共享段:

      –可以分别编写和编译
      –可以针对不同类型的段采取不同的保护
      –可以按段为单位来进行共享,包括通过动态链接进行代码共享

      这样做的优点是:可以分别编写和编译源程序的一个文件,并且可以针对不同类型的段采取不同的保护,也可以按段为单位来进行共享。

       总的来说,段式存储管理的优点是:没有内碎片,外碎片可以通过内存紧缩来消除;便于实现内存共享。缺点与页式存储管理的缺点相同,进程必须全部装入内存。

5.2 段式管理的数据结构

        在系统中为每个进程建立一张段映射表,如图:

        

       ·系统段表:系统所有占用段(已经分配的段)。

      

       ·空闲段表:内存中所有空闲段,可以结合到系统段表中。

5.3 段式管理的地址变换

                             

 

6. 页式和段式管理的区别

      1)、需求:是信息的物理单位,分页是为了实现离散分配方式,以减少内存的碎片,提高内存的利用率。或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了更好地满足用户的需要。

    一条指令或一个操作数可能会跨越两个页的分界处,而不会跨越两个段的分界处。

     4)、比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。

  

转载于:https://www.cnblogs.com/iplus/archive/2010/07/05/4490324.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务