Linux中Swap空間的管理知識講解
經(jīng)常看到有些Linux(國內(nèi)漢化版)安裝手冊上有這樣的說明:Swap空間不能超過128M。為什么會有這種說法?在說明“128M”這個數(shù)字的來歷之前,先給問題一個回答:現(xiàn)在根本不存在128M的限制!現(xiàn)在的限制是2G!
Swap空間是分頁的,每一頁的大小和內(nèi)存頁的大小一樣,方便Swap空間和內(nèi)存之間的數(shù)據(jù)交換。舊版本的Linux實(shí)現(xiàn)Swap空間時,用Swap空間的***頁作為所有Swap空間頁的一個“位映射”(Bit map)。這就是說***頁的每一位,都對應(yīng)著一頁Swap空間。如果這一位是1,表示此頁Swap可用;如果是0,表示此頁是壞塊,不能使用。
這么說來,***個Swap映射位應(yīng)該是0,因?yàn)椋?**頁Swap是映射頁。另外,***10個映射位也被占用,用來表示Swap的版本(原來的版本是Swap_space ,現(xiàn)在的版本是swapspace2)。
那么,如果說一頁的大小為s,這種Swap的實(shí)現(xiàn)方法共能管理“8 * ( s - 10 ) - 1”個Swap頁。對于i386系統(tǒng)來說s=4096,則空間大小共為133890048,如果認(rèn)為1 MB=2^20 Byte的話,大小正好為128M。
之所以這樣來實(shí)現(xiàn)Swap空間的管理,是要防止Swap空間中有壞塊。如果系統(tǒng)檢查到Swap中有壞塊,則在相應(yīng)的位映射上標(biāo)記上0,表示此頁不可用。這樣在使用Swap時,不至于用到壞塊,而使系統(tǒng)產(chǎn)生錯誤。
現(xiàn)在的系統(tǒng)設(shè)計者認(rèn)為:
1.現(xiàn)在硬盤質(zhì)量很好,壞塊很少。
2.就算有,也不多,只需要將壞塊羅列出來,而不需要為每一頁建立映射。
3.如果有很多壞塊,就不應(yīng)該將此硬盤作為Swap空間使用。 于是,現(xiàn)在的Linux取消了位映射的方法,也就取消了128M的限制。直接用地址訪問,限制為2G。
【編輯推薦】