美文网首页
Chapter-4[内存管理]

Chapter-4[内存管理]

作者: James | 来源:发表于2017-03-16 09:57 被阅读16次

地址空间

1 地址空间是为程序而创造的一种内存抽象概念。地址空间是进程可以寻址内存的一套地址集合,每个进程都有自己的地址空间,并且独立于其他进程的地址空间

空闲内存管理

1 使用位图的存储管理
  内存被划分为多个存储单元,每个存储单元对应着位图中的一位,0表示空闲,1表示被占用。
2 使用链表的存储管理
  维护一张记录以及分配内存段和空闲段内存的链表,链表的数据结构为:空闲区(H)或者进程(P)的指示标志,起始地址,长度和指向下一节点的指针。

内存管理适配算法

#首次适配算法

1  首次适应算法从空闲[分区表]的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,
   这种方法目的在于减少查找时间。为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址
   由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高[地址空间]保留大的空闲区。

2  首次适应算法的特点(First Fit):
   该算法倾向于优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区,这为以后到达的大作业分配大的内存空间创造了条件。
3 缺点
  低址部分不断被划分,会留下许多难以利用的,很小的空闲分区,称为碎片。而每次查找又都是从低址部分开始的,这无疑又会增加查找可用空闲分区时的开销。

#下次适配算法

1 下次适应(next fit)算法也称“临近适应”算法,其工作方式和[最先适应算法]相同
 (最先适应也称[首次适应算法]。它总是最先找到的、满足存储要求的那个
  空闲分区作为分配对象。),不同的是每次找到合适的空闲的分区时就记住
  它的位置,以便下次就从该位置开始往下查找,而不是每次都像[最先适应算法]那样从头开始查找

2   这种算法的总体结果通常要比[最先适应算法]差。由于它经常会在内存的末尾分
    配存储分区,使位于[存储空间]末尾的最大分区被撕裂称小的外部碎片,因此必须
    经常不断地进行存储紧凑。在该算法中应采取循环查找方式,即最后上个空闲区的
    大小仍不能满足要求时,应再从第一个空闲区开始查找,故又称为循环造就算法。

相关文章

  • Chapter-4[内存管理]

    地址空间 空闲内存管理 内存管理适配算法

  • iOS内存管理详解

    目录 block内存管理 autorelease内存管理 weak对象内存管理 NSString内存管理 new、...

  • 第10章 内存管理和文件操作

    1 内存管理 1.1 内存管理基础 标准内存管理函数堆管理函数虚拟内存管理函数内存映射文件函数 GlobalMem...

  • chapter-4

    C++ Primer第四章! //左值可以位于赋值语句的左侧,而右值则不能。当一个对象被用作右值的时候,用的是对象...

  • 操作系统之内存管理

    内存管理 包括内存管理和虚拟内存管理 内存管理包括内存管理概念、交换与覆盖、连续分配管理方式和非连续分配管理方式(...

  • JavaScript —— 内存管理及垃圾回收

    目录 JavaScript内存管理内存为什么需要管理?内存管理概念JavaScript中的内存管理JavaScri...

  • OC - OC的内存管理机制

    导读 一、为什么要进行内存管理 二、内存管理机制 三、内存管理原则 四、MRC手动内存管理 五、ARC自动内存管理...

  • 3. 内存管理

    内存管理 内存管理包含: 物理内存管理; 虚拟内存管理; 两者的映射 除了内存管理模块, 其他都使用虚拟地址(包括...

  • Go语言——内存管理

    Go语言——内存管理 参考: 图解 TCMalloc Golang 内存管理 Go 内存管理 问题 内存碎片:避免...

  • jvm 基础第一节: jvm数据区

    程序内存管理分为手动内存管理和自动内存管理, 而java属于自动内存管理,因此jvm的职能之一就是程序内存管理 j...

网友评论

      本文标题:Chapter-4[内存管理]

      本文链接:https://www.haomeiwen.com/subject/eeldnttx.html