内存和交换空间

内核用map管理内存和交换空间

1
2
3
4
struct map {
char *m_size;
char *m_addr;
};

int coremap[CMAPSIZ]; //以64字节为单位管理
int swapmap[SWAPSIZ]; //以512字节为单位管理

获取未使用的区域采用了First Fit
数组尾部,有一个长度为0的元素,充当哨兵

1
2
3
4
5
6
7
8
//分配地址
malloc(mp, size);
mp: coremap[] or swapmap[]
size: 大小
//释放地址
mfree(mp, size, aa);
aa: addr, 释放的起始地址。