可利用空间表(Free List)

可利用空间表(单链表)

1、"可利用空间表" ,是动态内存管理得一种方法。通过吧空闲得内存划分成固定得数据块,然后利用指针吧这些数据块链接起来,并使用指针指向首结点。

2、当用户请求分配时候,系统从可利用的空间表种删除一个结点并分配,当用户释放其所占的内存时,系统既回收并将它插入到可利用的空间表中 ,空间表也称“存储池”。

3、空间表的三种结点结构

a. 结点大小相同:把内存分为大小相同的若干块,将各块链接起来,分配时从头上摘取,用完插入头上,这实际时链式栈。

b.结点有若干规格:当用户需求内存量不同,但只允许在几种规格种选取,这样的情况可利用空间表中可以维护几条链表,同一链表中的大小相同

c. 结点大小不等: 分配策略,1首次适配法:从链表头指针开始查找,找到第一个的大小等于所需的空间结点就分配(分配需要查询,释放时候插入表头);2最佳是适配法:要求结点从小到大排列,找到第一个大于等于所需空间的结点及分配(回收分配都需要查询);3 最差适配法:要求结点从大到小鹏爱了,总从第一个结点开始分配。(分配时不需要查询,回收需要查询)

三种分配策略适合于不同的情况,首次适配法的优点是速度快,缺点是可能把较大块拆分成较小的块,导致后来对大块的申请难以满足 —— 这种分配策略适合于系统事先不掌握运行期间可能出现的请求分配和释放的信息的情况。最佳适配法的优点是使无法满足大请求块的可能性降到最低,但可能导致严重的外部碎片问题 —— 这种分配策略适合请求分配内存大小范围较广的系统。最差适配法的优点是使得空闲块长度趋于一致,适合于分配请求长度比较均匀的情况。

你可能感兴趣的:(可利用空间表(Free List))