5.3 内存分配算法
内存可用表、自由链2种方法进行空闲内存块管理。
可用表:二维表,每个表项记录了一个空闲内存块,主要参数包括块号、长度、起始地址。表格管理过程较简单,但表大小难以确定,表本身需占用一部分内存。
自由链:利用空闲块的开始几个单元存放本空闲块的大小及下个空闲块的开始地址。空闲内存块的查询工作量较大,但不占用额外的内存块。且链表无大小限制,容易添加或删除节点。
vxworks中采用的是自由链管理内存空闲块。
3种内存分配算法:最先适应法、最佳适应法、最坏适应法。
最先适应法:可用表/自由链按起始地址递增顺序排列。一旦找到 ≥ 需求长度的内存块,结束搜索。从找到的内存块中划分出所需大小,并将余下部分进行合并(如相邻内存块是空闲的,合并并修改参数)
最佳适应法:按内存块空闲从小到大的次序排列,找到第一个满足的即停止。
最坏适应法:按大至小排序。
网友评论