第三种情况是系统在运行期间分配给用户的内存 块大小不固定,可以随请求而变。此时,可利用空间 表中的结点即空闲块的大小也是随意的。通常,操作 系统中的可利用空间表属于这种类型,这种存储管理 实际上就是操作系统中的可变分区管理方法。系统初 始状态下,整个内存空间是一个空闲块,即可利用空 间表中只有一个大小为整个内存区的结点,随着分型 和回收的进行,可利用空间表中的结点大小和个数也 随之而变。 由于链表中结点大小不同,结点的结构可包含四 个域,即:标志域(tag),用于区分此块是否为空闲 块、大小域(size),用于指示空闲块的存储量、链 域(link),用于指示可利用空间链表中的下一个结 点、存储空间域( space),它是一个大小为size的连 续存储空间
tag size link 0空闲块 tag space 1占用块 由于可利用空间表中的结点大小不同,因此相应 的分配与回收过程较为复杂。假设某用户需大小为n 的内存,而可利用空间表中仅有一块大小为m≥n的空 闲块,则只需将其中大小为n的一部分分配给申请的 用户,同时将剩余大小为mn的部分作为一个结点留 在链表中即可。当可利用空间表中存在多个空间大小 不小于n的空闲块时,一般可采用以下三种不同的分 配策略
tag size link space