一些存储概念自己有用需要封装内存分配函数是了解

来源:互联网 发布:软件快捷方式被删除 编辑:程序博客网 时间:2024/06/08 04:33

连续分配存储方式
1.固定分区(Fixed Partitioning)分配
    固定分区是在作业装入之前,内存就被划分成若干个分区。划分工作可以由系统管理员完成,

也可以由操作系统实现。然而一旦划分完成,在系统运行期间不再重新划分,即分区的个数不可变,

分区的大小不可变,所以,固定式分区又称为静态分区。
  这种分区方式一般将内存的用户区域划分成大小不等的分区,以适应不同大小的作业的需要。系

统有一张分区说明表,每个表目说明一个分区的大小、起始地址和是否已分配的使用标志。

固定分区(Fixed Partitioning)分配
       分区说明表
区号  大小  起址  标志
 1   16KB  20K   已分配
 2   32KB  36K   已分配
 3   64KB  68K   已分配
 4  124KB 132K  未分配
  固定式分区实现技术简单,但是内存的利用率不高,适用于作业的大小和多少事先都比较清楚的

系统中。它用于60年代的IBM-360的MFT操作系统中。

2.动态/可变式(Dynamic Partitioning)分区分配
    可变式分区是指在作业装入内存时,从可用的内存中划出一块连续的区域分配给它,且分区大

小正好等于该作业的大小。可变式分区中分区的大小和分区的个数都是可变的,而且是根据作业的大

小和多少动态地划分,因此又称为动态分区。这种存储管理技术是固定式分区的改进,既可以获得较

大的灵活性,又能提高内存的利用率。
  可变式分区的分配和释放的基本思想是:在分配时,首先找到一个足够大的空闲分区,即这个空

闲区的大小比作业要求的要大,系统则将这个空闲分区分成两部分:一部分成为已分配的分区,剩余

的部分仍作为空闲区。在回收撤除作业所占领的分区时,要检查回收的分区是否与前后空闲的分区相

领接,若是,则加以合并,使之成为一个连续的大空间。

动态/可变式(Dynamic Partitioning)分区分配
1、 可变式分区数据结构
    空闲区表形式
  空闲分区表为每个尚未分配的分区设置一个表项,包括分区的序号、大小、始址和状态。空闲区

链形式
  为了实现对空闲分区的分配和链接,在每个分区的起始部分,设置一些用于控制分区分配的信息

(如分区的大小和状态位),以及用于链接其它分区的前向指针;在分区尾部,则设置了一个后向指

针,为了检索方便也设置了控制分区分配的信息。然后,通过前、后向指针将所有的分区链接成一个

双向链表。 
动态/可变式(Dynamic Partitioning)分区分配
序号P  大小  起址  状态
 1   32k   20k   空闲
 2   56k  260k   空闲
 3   116k  396k  空闲
 4   -    -    空表目
 5   -    -    空表目 

2、 分区分配算法(Partitioning Placement Algorithm)
  最佳适应算法(Best Fit):
  它从全部空闲区中找出能满足作业要求的、且大小最小的空闲分区,这种方法能使碎片尽量小。

为适应此算法,空闲分区表(空闲区链)中的空闲分区要按大小从小到大进行排序,自表头开始查找

到第一个满足要求的自由分区分配。该算法保留大的空闲区,但造成许多小的空闲区。
首次适应算法(First Fit):
  从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目

的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到高进

行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高地址空间保留大的

空闲区。
循环首次适应算法(Next Fit):
  该算法是首次适应算法的变种。在分配内存空间时,不再每次从表头(链首)开始查找,而是从

上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一

块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。
(4)动态重定位分区分配
1、 紧凑(Compaction)/拼接
    可变式分区也有零头问题。在系统不断地分配和回收中,必定会出现一些不连续的小的空闲区

,称为碎片(fragment)(又称零头)。小的空闲区称外零头,固定分区内的空闲部分称为内零头。

虽然可能所有零头的总和超过某一个作业的要求,但是由于不连续而无法分配。解决零头的方法是紧

凑(或称拼接),即向一个方向(例如向低地址端)移动已分配的作业,使那些零散的小空闲区在另

一方向连成一片。分区的拼接技术,一方面是要求能够对作业进行重定位,另一方面系统在拼接时要

耗费较多的时间。
2、 动态重定位
    实现紧凑所需的允许作业在运行过程中在内存中移动的技术必须获得硬件支持。只有具有动态

重定位硬件机构的计算机系统,才有可能采取动态重定位可变分区多道管理技术,系统的硬件包括重

定位寄存器和加法器。

3、 动态重定位分区分配算法
    动态重定位分区管理中何时进行存储器紧缩有二种不同的解决办法:
  在某个分区被释放后立即进行紧缩,系统总是只有一个连续的分区而无碎片,此法很花费机时。
  当"请求分配模块"找不到足够大的自由分区分给用户时再进行紧缩,这样紧缩的次数比上种方法

少得多,但表格管理复杂。采用此法的动态重定位分区分配算法框图。 
4、 分区的保护
    分区的保护的常用方法是由系统提供硬件:一对界限寄存器。这可以是上界寄存器、下界寄存

器,或者是基址寄存器、限长寄存器。基址寄存器存放起始地址,作为重定位(地址映射)使用;限

长寄存器存放程序长度,作为存贮保护使用。

   


 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 玩游戏充钱后悔怎么办 我被欺骗了感情怎么办 有隐私被威胁了怎么办 在微信上被威胁怎么办 别人恐吓我我该怎么办 警属受到威胁该怎么办 出了事故家属闹怎么办 孩子不愿和人交流怎么办 4岁双胞胎说话迟怎么办 三岁宝宝说话迟怎么办 3岁幼儿说话迟钝怎么办 人很迷茫的时候怎么办 人在迷茫的时候怎么办 缺乏安全安感该怎么办 皮球掉进树洞里怎么办 遇到不会读的字怎么办 机票行程单假的怎么办 老婆失忆了怎么办微盘 精神差总想睡觉怎么办 孕妇查溶血值256怎么办 饿了怎么办txt百度云 小猫喜欢和人睡怎么办 房子卖了后户口怎么办 若房子卖了户口怎么办 我房子卖了户口怎么办 雄安房子不卖怎么办 擦伤后留下红印怎么办 膝盖摔伤了破皮怎么办 膝盖擦破皮肿了怎么办 跪久了膝盖疼怎么办 摔倒了膝盖肿了怎么办 膝盖摔伤了肿了怎么办 膝盖破皮流血了怎么办 擦伤化脓又肿了怎么办 摔倒了膝盖破皮怎么办 膝盖擦伤碰水了怎么办 收脚运动裤长了怎么办 1岁宝宝发烧反复怎么办 3岁宝宝反复发烧怎么办 3岁宝宝咳嗽发烧怎么办 心里郁闷憋的好难过怎么办