问答题 已知一个大小为512个字长的存储,假设先后有6个用户申请大小分别为23,45,52,100,11和19的存储空间,然后再顺序释放大小为45,52,11的占用块。假设以伙伴系统实现动态存储管理。(1)画出可利用空间表的初始状态。(2)画出为6个用户分配所需要的存储空间后可利用空间表的状态以及每个用户所得到的存储块的起始地址。(3)画出在回收3个占用块之后可利用空间表的状态。【清华大学1998三(15分)】【同济大学1999】
【正确答案】正确答案:因为512=29,可利用空间表的初始状态图如(1)所示。当用户申请大小为23的内存块时,因2 4 <23≤2 5 ,但没有大小为2 5 的块,只有大小为2 9 的块,故将2 9 的块分裂成两个大小为2 8 的块,其中大小为2 8 的一块挂到可利用空间表上,另一块再分裂成两个大小为2 7 的块。又将其中大小为2 7 的一块挂到可利用空间表上,另一块再分裂成两个大小为2 6 的块,一块2 6 的块挂到可利用空间表上,另一块分裂成两个大小为2 5 的块,其中一块挂到可利用空间表上,另一块分给用户(地址0~31)。如此下去,最后每个用户得到的存储空间的起始地址如图(2)所示,6个用户分配所需要的存储空间后,可利用空间表的状态如图(3)所示。在回收时,因为给申请45的用户分配了2 6 ,其伙伴地址是0,在占用中,不能合并,只能挂到可利用空间表上。在回收大小为52的占用块时,其伙伴地址是192,也在占用。回收大小为11的占用块时,其伙伴地址是48,可以合并为大小为2 5 的块,挂到可利用空间表上。回收3个占用块之后可利用空间表的状态如图(4)所示。
【答案解析】