没有虚存功能的内存管理系统
被要求设计一个内存管理程序,这是操作系统大作业吧,要求20分钟写出来,真是太严格了。
- 自己写一个吧~~~
给定一块内存,实现该内存块上的malloc、free、realloc等函数,不能再动态分配内存,可以使用O(1)的栈和全局空间。
- 设定最小分配单元,一次只能分配2的幂次个最小分配单元的内存。
- 用一个数组(链表的数组),记录不同幂次的空闲内存块。
- 每一个最小分配单元,都对应有一个字节的开销,记录其是否空闲以及空闲块的大小。连续可合并的空闲块,只记录在第一个块开销中。
- 初始化时,从尽可能大的空闲块开始
- 分配时,找到最小可满足需求的块,切分为刚好满足需求的2幂次大小,将切分后多余的块存入空闲数组的对应链中。
- 释放时,若其伙伴块为free状态,合并,直到伙伴不为free