习题集解析部分
第8章 动态存储管理
——《数据结构题集》-严蔚敏.吴伟民版
源码使用说明 链接☛☛☛
课本源码合辑 链接☛☛☛
习题集全解析 链接☛☛☛
相关测试数据下载 链接☛
本习题文档的存放目录:数据结构\▼配套习题解析\▼08 动态存储管理
文档中源码的存放目录:数据结构\▼配套习题解析\▼08 动态存储管理\▼习题测试文档-08
源码测试数据存放目录:数据结构\▼配套习题解析\▼08 动态存储管理\▼习题测试文档-08\Data
一、基础知识题
8.1❷假设利用边界标识法首次适配策略分配,已知在某个时刻的可利用空间表的状态如下图所示:
(1)画出当系统回收一个起始地址为559、大小为45的空闲块之后的链表状态;
(2)画出系统继而在接受存储块大小为100的请求之后,又回收一块起始地址为515、大小为44的空闲块之后的链表状态。
注意:存储块头部中大小域的值和申请分配的存储量均包括头和尾的存储空间。
8.2❷组织成循环链表的可利用空间表可附加什么条件时,首次适配策略就转变为最佳适配策略?
8.3❸设两个大小分别为100和200的空闲块依次顺序链接成可利用空间表。设分配一块时,该块的剩余部分在可利用空间表中保持原链接状态,试分别给出满足下列条件的申请序列:
(1)最佳适配策略能够满足全部申请而首次适配策略不能;
(2)首次适配策略能够满足全部申请而最佳适配策略不能。
8.4❶在变长块的动态存储管理方法中,边界标志法的算法效率为什么比以下图所示的结点结构组织的可利用空间表的算法效率高?
8.5❸考虑边界标志法的两种策略(最佳适配和首次适配):
(1)数据结构的主要区别是什么?
(2)分配算法的主要区别是什么?
(3)回收算法的主要区别是什么?
8.6❶二进制地址为011011110000,大小为(4)10的块的伙伴的二进制地址是什么?若块大小为(16)10时又如何?
8.7❸已知一个大小为512字的内存,假设先后有6个用户提出大小分别为23,45,52,100,11和19的分配请求,此后大小为45,52和11的占用块顺序被释放。假设以伙伴系统实现动态存储管理,
(1)画出可利用空间表的初始状态;
(2)画出6个用户进入之后的链表状态以及每个用户所得存储块的起始地址;
(3)画出在回收三个用户释放的存储块之后的链表状态。
8.8❸试求一个满足以下条件的空间申请序列a1,a2,…,an:从可用空间为25的伙伴管理系统的初始状态开始,a1,a2,…,an-1均能满足,而an不能满足,并使a1+a2+…+an最小。
8.9❹设有五个广义表:L=(L1, L3),L1=(L2, L3, L4),L2=(L3),L3=( ),L4=(L2)。若利用访问计数器实现存储管理,则需对每个表或子表添加一个表头结点,并在其中设一计数域。
(1)试画出表L的带计数器的存储结构;
(2)从表L中删除子表L1时,链表中哪些结点可以释放?各子表的计数域怎样改变?
(3)若L2=(L3, L4),将会出现什么现象?
8.10❷假设利用“堆”结构进行动态存储管理。执行存储紧缩过程之前,存储器的格局如下表所示。请用表格方式给出存储紧缩过程执行之后的存储器格局。
转载注明出处:
二、算法设计题
8.11❸考虑空间释放遵从“最后分配者最先释放(栈)”规则的动态存储管理问题,并设每个空间申请中都指定所申请的空闲块大小。
(1)设计一个适当的数据结构实现动态存储管理;
(2)写一个为大小为n的空间申请分配存储块的算法。
8.12❸同8.11题条件,写一个回收释放块的算法。
边界标志法
8.13❸试完成边界标志法和依首次适配策略进行分配相应的回收释放块的算法。
伙伴系统
8.14❺试完成伙伴管理系统的存储回收算法。
无用单元搜集
8.15❸设被管理空间的上下界地址分别由变量highbound和lowbound给出,形成一个由同样大小的块组成的“堆”。试写一个算法,将所有tag域的值为0的块按始址递增顺序链接成一个可利用空间表(设块大小域为cellsize)。
存储紧缩
8.16❹试完成教科书中8.6节所述的存储紧缩算法。