美文网首页
空闲内存管理

空闲内存管理

作者: 奋斗live | 来源:发表于2018-03-12 23:53 被阅读0次

在进行动态分配内存时,操作系统一般使用两种方式进行管理,位图和空闲链表。

image.png

位图:
内存被划分为小到几个字或大到几千字节的分配单元。每个分配单位对应位图中的一位,0表空闲,1表占用。它有一个设计因素:分配单元越小,位图越大。

因为内存的大小和分配单元的大小决定了位图的大次奥,所以它提供了一种简单的内存区就能对内存使用情况进行记录的方法。 在决定把一个占k个分配单元的进程调入内存时,存储管理器必须搜索位图,在位图中找出有k个连续0的串。不过这个查找连续串是很耗时间的,这就是位图的缺点所在。

空闲链表。
维护一个记录已分配内存段和空闲内存段的链表。每个节点包含空闲区(H)或进程(P)标志、起始地址、长度和下一个节点的指针。

为这链表分配内存的有以下几种算法:
1、首次分配算法。
存储管理器沿着短链表进行搜索,直到找到一个足够大的空闲区,除非空闲区大小和分配的空间大小正好一样。否则将空闲区分为两部分,一部分给进程使用,另一部分形成新的空闲区。
2、下次适配算法
工作方式与首次分配算法类似,不同的地方是每次找到合适的空闲区都记录当时的位置。以便在下一次寻找空闲区时从上次结束的地方开始搜索,
3、最佳适配算法
搜索整个链表,找出能够容纳进程的最小的空闲区。
4、最差适配算法
总是分配最大的可用空闲区,使新的空闲区比较大从而可以继续使用。
5、快速适配算法
为那些常用大小的空闲区维护单独的链表。比如一个n项的表,第一项执行大小为4kb的空闲区链表表头指针,第二项指向8kb的空闲区链表表头指针。

相关文章

  • Chapter-4[内存管理]

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

  • 空闲内存管理

    在进行动态分配内存时,操作系统一般使用两种方式进行管理,位图和空闲链表。 位图:内存被划分为小到几个字或大到几千字...

  • vxworks内存管理(二)

    5.3 内存分配算法 内存可用表、自由链2种方法进行空闲内存块管理。 可用表:二维表,每个表项记录了一个空闲内存块...

  • golang内存分配

    一、分配对象(源码) 二、关于内存的管理 其实heap有两种内存状态free:空闲可用 busy:已被使用;当...

  • 可利用空间表(Free List)

    可利用空间表(单链表) 1、"可利用空间表" ,是动态内存管理得一种方法。通过吧空闲得内存划分成固定得数据块,然后...

  • linux系统监控常用命令

    内存监控 free 参数: total:内存总数 used:已使用的内存数 free:空闲的内存数 shared:...

  • iOS内存管理详解

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

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

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

  • 操作系统之内存管理

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

  • 堆和栈, 他们是什么?

    堆和栈, 他们是什么? 文章地址 堆 堆包含一个链表 来维护已用和空闲的内存块. 在堆上新分配内存是从空闲的内存块...

网友评论

      本文标题:空闲内存管理

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