动态存储管理的基本问题是如何应用户请求分配内存,如何回收那些用户不在使用而释放的内存。
经过一段时间的运行,有些用户运行结束,它所占用的内存区变成空闲块,只就使整个内存区呈现出占用快和空闲块交错的状态,假如此时又有新的用户进入系统请求分配内存,这时通常有两种做法:
(1)、继续从高地址的空闲块中进行分配,直到分配无法进行,系统才去回收所有用户不再使用的空闲块,并且重新组织内存,将所有空闲的内存块连接在一起成为一个大的空闲块。
(2)、用户一旦运行结束,便将它所占用的内存块释放成空闲块。当有新用户请求分配内存时,系统巡视整个内存区中所有的内存块,并从中找出一个合适的空闲块分配。
可利用空间表及分配方法
可利用空间表有下列3种不同的结构形式:
(1)、系统运行期间所有用户请求分配的存储量的大小相同;每个内存块的大小相同。
(2)、系统运行期间用户请求分配的存储量有若干种大小的规格;建立若干个可利用空间表,同一链表中的结点大小相同。并增加一个标志位tag,表示是空闲还是占用。当请求的内存块过大时,执行存储紧缩操作。
(3)、系统在运行期间分配给用户的内存块大小不固定,可以随请求而变化。所以可利用的空间表只有一个大小为整个内存区的结点。
分配策略:
(1)首次拟合法:从表头指针开始查找可利用空间表,将找到的第一个大小不小于n的空闲块的一部分分配给用户。
(2)最佳拟合法&#