成組鏈結法

2021-07-13 16:28:01 字數 927 閱讀 9780

首先說一下,成組鏈結法出現的背景和意義,它的出現帶來了什麼好處。

成組鏈結法作為檔案儲存空間管理方法之一(主要是空閒盤區的管理),還有其他三種管理方法分別是:空閒表法、空閒鍊錶法和位示圖法,它克服了空閒鍊錶法表太長的缺點,但是保持了其優點,即分配和**乙個盤塊比較簡單。

這麼好的檔案儲存空間管理方法,我們當然要認真學咯。。

首先來看文字解釋:成組鏈結法是unix系統中常見的管理空閒盤區的方法,它把空閒塊分為若干組,每100個空閒塊為一組,每組的第乙個空閒塊記錄了空閒塊總數和下一組物理空閒塊的物理盤塊號。理解這一點很重要。特別是對於看下面這張神圖。

這張圖我得好好解釋一下,首先來看左邊綠色的空閒盤塊號棧,這是第一組(唯一進入記憶體的一組,只有它會佔據儲存空間)。看到s.free = 100了沒,這表示該組有100個空閒塊數目,再往下看,第0號對應的是300,表示下一組物理空閒塊的物理盤塊號為300,你看它指向的是不是300號對應的磁碟塊。再看黃色的塊,這些塊裡儲存的才是真正的可用的空閒塊,也就是說每組中只有99個塊可用。儘管如此,每組還是有100個塊的。特別要注意的是,最後一組的下一組盤塊號不是沒有麼,我們這裡採用的是結束標記「0」,也就是最右邊乙個藍色塊的第二項為0。

下面說一下,磁碟塊分配和**的過程。

磁碟**過程:

系統**空閒盤塊時,若第一組不滿100塊,則只需將**塊的塊號填入超級塊的空閒盤塊號棧棧頂,並將其中的空閒盤塊數加1;若第一組已有100塊,則必須先將超級塊中的空閒盤塊數和空閒盤塊號寫入**塊中,然後將盤塊數1和**塊號記入超級塊中。

記住一點的是,分配過程是從前往後分配,先分配第一組,然後分配第二組……

**過程是正好相反,從後往前分配,先將釋放的空閒塊放入第一組,第一組滿了,再開闢一組,之前的第一組變為第二組……

Swift4實現成組鏈結法

main.swift 成組鏈結法 swift created by wejudging on 2018 12 11.import foundation 盤塊的大小 let block size int 4 盤塊分組大小 let group size int 3 盤塊數 let blocknum in...

鏈結法hash表

乙個通過鏈結法解決碰撞問題的hash表 主要實現的功能是 1.讀取全域資料並通過hash對映儲存到hash表中 2.查詢乙個屬於全域中的資料在hash表中的位置 author storymonster last change date 2016 6 24 include include typede...

雜湊 分離鏈結法

通過某種特定的函式 演算法 稱為雜湊函式 演算法 將要檢索的項與用來檢索的索引 稱為雜湊,或者雜湊值 關聯起來,生成一種便於搜尋的資料結構 稱為雜湊表 也譯為雜湊。我們需要將輸入的字串進行轉換,將其轉換成數字,在插入儲存的數,當然,也可能會存在不同字串對應相同的數字,這時,為了保證不衝突,我們將字串...