成组链接法是UNIX/Linux等大型文件系统采用的文件空间管理方法。在UNIX/Linux系统中,将空闲块分成若干组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数。如果一组的第一个空闲块号等于0,则有特殊的含义,意味着该组是最后一组,即无下一个空闲块。平时整个链接信息保存于计算机系统磁盘上的系统区,系统启动以后,第一组的链接信息经缓冲区复制到内存专用块中。如图1-2所示。
图1-2 UNIX/Linux系统空闲块成组链接示意图
分配空闲磁盘块时,总是先把专用块中的空闲块计数减1,以它为指针找到专用块的相应表项,其内容就是要分配的空闲磁盘块号。当空闲计数减1后等于0时,专用块中仅剩1个磁盘块号,此时要取出表项中磁盘块号(设为i),再把此盘块中所保存的下一组空闲磁盘块链接信息经缓冲区复制到内存专用块中,然后把当前磁盘块i分配出去。释放存储块时,将盘块号记录在由专用块所指示的表项中,然后空闲块计数加1。若发现此表已满(达100项),则应把整个表经缓冲区复制到下面要释放的磁盘块中,然后将释放块的块号写入专用块中的第一个位置,置空闲计数为1。搜索到磁盘块中的第一项是0时,系统应向操作员发出警告,表明空闲块已经用完。