01无用单元收集
1、可利用空间表的特点是,在用户请求存储时进行分配,在用户释放存储时进行回收,即系统时应用户的需求来进行存储分配和回收的,
2、在上面提到的存储管理系统中,用户必须明确给出“请求”和“释放”的信息。
3、在多用户分时并发的操作系统中,当用户程序进入系统时即请求分配存储区。
4、反之,当用户程序执行完毕退出系统时即释放所占存储。
5、在使用C语言编写程序时,用户是通过malloc和free两个函数来表示请求分配和释放存储的。
6、收集无用单元应分为两步进行:第一步是对所有占用结点加上标志;第二步时对整个可利用存储空间顺序扫描一遍,将所有标志域为“0”的结点链接成一个新的可利用空间表。
02伙伴系统
1、伙伴系统(buddy system)是操作系统中用到的另一种动态存储管理方法。
2、伙伴系统和边界标识法类似,在用户提出申请时,分配一块大小“恰当”的内存区给用户,在用户释放内存区时即回收。
3、在伙伴系统中,无论是占用块或空闲块,其大小均为2的k次幂(k为某个正整数)。
4、例如:当用户申请n个字的内存区时,分配的占用块大小为2的k次方个字(n大于2的(k-1)次方,小于2的k次方)。
5、由此,在可利用空间表中的空闲块大小也只能是2的k次幂。
6、若总的可利用内存容量为2的次方个字,则空闲块的大小只可能为2^0、2^1、……、2^k。
更多案例可以go公众号:C语言入门到精通
正文完