檔案儲存空間的管理:成組連結法
阿新 • • 發佈:2019-01-31
成組連結法是Unix系統中常見的管理空閒盤區的方法。
在UNIX系統中,將空閒塊分成若干組,每100個空閒塊為一組,每組的第一空閒塊登記了下一組空閒塊的物理盤塊號和空閒塊總數。如果一個組的第二個空閒塊號等於0,則有特殊的含義,意味著該組是最後一組,即無下一個空閒塊。
1.分配空閒塊的時候,從前往後分配,先從第一組開始分配,第一組空閒的100塊分完了,才進入第二組。
2.釋放空閒塊的時候正好相反,從後往前分配,先將釋放的空閒塊放到第一組,第一組滿了,在第一組前再開闢一組,之前的第一組變成第二組。
以下內容來自此網頁點選開啟連結
空閒盤塊的分配與回收
當系統要為使用者分配檔案所需的盤塊時,須呼叫盤塊分配過程來完成。該過程首先檢查空閒盤塊號棧是否上鎖,如未上鎖,便從棧頂取出一空閒盤塊號,將與之對應的盤塊分配給使用者,然後將棧頂指標下移一格。若該盤塊號已是棧底,即S.free(0),這是當前棧中最後一個可分配的盤塊號。由於在該盤塊號所對應的盤塊中記有下一組可用的盤塊號,因此,須呼叫磁碟讀過程,將棧底盤塊號所對應盤塊的內容讀入棧中,作為新的盤塊號棧的內容,並把原棧底對應的盤塊分配出去(其中的有用資料已讀入棧中)。然後,再分配一相應的緩衝區(作為該盤塊的緩衝區)。最後,把棧中的空閒盤塊數減1並返回。
在系統回收空閒盤塊時,須呼叫盤塊回收過程進行回收。它是將回收盤塊的盤塊號記入空閒盤塊號棧的頂部,並執行空閒盤塊數加1操作。當棧中空閒盤塊號數目已達100時,表示棧已滿,便將現有棧中的100個盤塊號,記入新回收的盤塊中,再將其盤塊號作為新棧底。