跳到内容

Minix 3/内存管理

来自维基教科书,开放的书籍,为开放的世界

Minix2 被认为有一个“简单”的内存管理器,因为 a) 它旨在为单个用户使用,并且 b) 它被认为在 8088 上运行,不支持虚拟内存。内存管理器具有 posix 内存接口 - 也就是说,它在调用 fork() 或 exec() 函数时使用。

以下是一些关于内存管理器中的一些术语的讨论。

1. 最佳匹配算法,内存管理器分配内存,最基本的参数是请求的大小。内存管理器可以搜索非分配内存块的列表,直到找到一个比请求大小更大的连续未分配内存块,将其拆分为一个用于请求大小的块和一个更小的未使用的块,它是该块的剩余部分。然后返回请求大小的块以供使用。

“最佳匹配”算法搜索未使用的块列表,直到找到最近的更大或相等大小的块并将其返回,但此算法的问题是返回到空闲列表的块的未使用部分往往很小并且无用。

任何空闲内存分配算法的一个重要方面是,一旦使用的块被返回,它必须与相邻块进行比较以查看它们是否也未被使用,并与前后块合并以使空闲块大小尽可能大。如果这样做,空闲块大小很快就会变得太小而无法满足某些请求。

此要求使“快速匹配”算法比简单的“最佳匹配”更复杂:快速匹配是指根据大小范围保存空闲块列表,但当返回块时,这些列表对于查找可能在不同大小范围中列出的相邻空闲块没有用。

还有“最差匹配”,始终选择最大的空闲块。

前三种算法在 D.E. Knuth 的《计算机程序设计艺术》第一卷中有所描述。

华夏公益教科书