成組鏈法是空閒塊鏈的連結法的擴展。成組鏈法首先把檔案存儲設備中的所有空閒塊按50塊劃分為一組。
成組鏈法,詳情,
成組鏈法
組的劃分為從後往前順次劃分。其中,每組的第一塊用來存放前一組中各塊的塊號和總塊數。由於第一組的前面已無其他存在,因此,第一組的塊數為49塊。不過,由於存儲設備的空間塊不一定正好是50的整倍數,因而最後一組將不足50塊,且由於該組後面已無另外的空閒塊組,所以,該組的物理塊號與總數只能放在管理檔案存儲設備用的檔案資源表中。
在成組鏈法對檔案設備進行了上述分組之後,系統可根據申請者的要求進行空閒塊的分配,並在釋放檔案時回收空閒塊。下面介紹楊組鏈法的分配和釋放過程。
詳情
首先,系統在初啟時把檔案資源表複製到記憶體,從而使檔案資源表中放有最後一組空閒塊塊號與總塊數的堆疊進入記憶體,並使得空閒塊的分配與釋放可在記憶體進行。這就減少了每次分配和釋放空間都 要啟動I/O設備的壓力。
與空閒塊塊號及總塊數相對應,用於空閒塊分配與回收的堆疊有棧指針P(tr),且P(tr)的初值等於該組空閒塊的總塊數。當申請者提出空閒塊要求n時,按照後進出的原則,分配程式在取走P(tr)所指的塊號之後,再做P(tr)←P(tr)-1的操作。這個過程一直持續到所要求的n塊都 已分配完畢或堆疊中只剩下最後一個空閒塊的塊號。當堆疊中只剩下最後一個空閒塊號時,系統啟動設備程式,將該塊中存放的下一組的塊號與總塊數讀入記憶體之後將該塊分配給申請者。然後,系統重新設定P(tr)指針,並繼續為申請者進程分配空閒塊。
檔案存儲設備的最後一個空閒塊中設定有尾部標識,以指示空閒塊分配完畢。
如果用戶進程不再使用有關檔案並刪除這些檔案時,回收程式回收裝有這些檔案的物理塊。成組鏈法的回收過程仍利用檔案管理堆疊進行回收。在回收時,回收程式先做P(tr)←P(tr)+1操作,然後把回收的物理塊號放入當前指針P(tr)所指的位置。如果P(tr)等於50,則表示該組已經回收結束。此時,如果還有新的物理塊需要回收的話,回收該塊並啟動I/O設備管理程式,把回收的50個塊號與入新回收的塊中。然後,將P(tr)重新置1另一個新組。
顯然,對空閒塊的分配和釋放必須互斥進行,否則將會發生數據混亂。