第八章动态存储管理一.选择题 1C二.推断题 1.错误 2.正确三.填空题1.(1)480+8=488(480 %23+1=0) (2)480-32=448 2.(1)0 (2)03 . 用 户 不 再 使 用 而 系 统 没 有 回 收 的 结 构 和 变 量
例 如 , p=malloc(size) ;…,p=null;四.应用题1. 在伙伴系统中,无论占用块或空闲块,其大小均为 2 的 k(k 为≥0 的正整数)次幂
若内存容量为 2m,则空闲块大小只能是 20,21,22,…,2m
由同一大块分裂而得的两个小块互称“伙伴空间”,如内存大小为 210的块分裂成两个大小为 29 的块
只有两个“伙伴空间”才能合并成一个大空间
起始地址为 p,大小为 2k的内存块,其伙伴的起始地址为:buddy(p,k)=p+2k (若 p % 2k+1=0),或 buddy(p,k)=p-2k (若 p % 2k+1=2k)2.首次拟合法;从链表头指针开始查找,找到第一个≥所需空间的结点即分配
最佳拟合法:链表结点大小增序排列,找到第一个≥所需空间的结点即分配
最差拟合法:链表结点大小逆序排列,总从第一个结点开始分配,将分配后结点所剩空间插入到链表适当位置
首次拟合法适合事先不知道请求分配和释放信息的情况,分配时需查询,释放时插在表头
最佳拟合法适用于请求分配内存大小范围较宽的系统,释放时容易产生存储量很小难以利用的内存碎片,同时保留那些很大的内存块以备将来可能发生的大内存量的需求,分配与回收均需查询
最差拟合法适合请求分配内存大小范围较窄的系统,分配时不查询,回收时查询,以便插入适当位置
3. 0 4.05.(1)buddy(1664,7)=1664-128=1536 (2)buddy(2816,6)=2816+64=28806.动态存储分配伙伴系统的基本思想请参见上面题 1