Linux操作系統(tǒng) 存儲管理ppt課件.ppt

Linux操作系統(tǒng) 存儲管理ppt課件.ppt

ID:59446437

大?。?27.00 KB

頁數(shù):31頁

時間:2020-09-17

Linux操作系統(tǒng)  存儲管理ppt課件.ppt_第1頁
Linux操作系統(tǒng)  存儲管理ppt課件.ppt_第2頁
Linux操作系統(tǒng)  存儲管理ppt課件.ppt_第3頁
Linux操作系統(tǒng)  存儲管理ppt課件.ppt_第4頁
Linux操作系統(tǒng)  存儲管理ppt課件.ppt_第5頁
資源描述:

《Linux操作系統(tǒng) 存儲管理ppt課件.ppt》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。

1、10.2存儲管理內(nèi)容:物理內(nèi)存的管理虛擬存儲空間的管理10.2.1物理內(nèi)存的管理內(nèi)存用途存儲內(nèi)核映像其它可動態(tài)加載內(nèi)核模塊內(nèi)存需求進程用戶頁面的需求緩沖需求功能要求快速響應請求盡可能地利用內(nèi)存同時減少內(nèi)存碎片解決方案基于區(qū)域的伙伴系統(tǒng)及slab分配器用戶虛空間對應固定物理內(nèi)存8M4……………….動態(tài)分配用(可以DMA)靜態(tài)內(nèi)核使用動態(tài)分配用進程虛地址空間物理內(nèi)存硬件使用mem_map[](數(shù)組大小為頁幀數(shù))>896M空間03G4G-1016M896M頁幀物理內(nèi)存以頁幀為基本單位,頁幀的大小固定為4K。區(qū)域:物理內(nèi)存分成如下三個區(qū)域:DMAZONE低于16MB的內(nèi)存,是DMA方式能夠訪問的

2、物理內(nèi)存。一般用于I/O緩沖區(qū)NORMALZONE介于16MB與896MB之間,直接被內(nèi)核虛地址映射。部分用于內(nèi)核程序及常數(shù),部分用于動態(tài)表格或用于用戶空間頁HIGHMEMZONE高端內(nèi)存,超過896MB以上的部分。用于存放動態(tài)映射頁面。一、頁幀與區(qū)域在內(nèi)存分配時要根據(jù)區(qū)域訪問優(yōu)先級別來決定分配次序。比如為DMA方式分配內(nèi)存,DMAZONE是唯一符合要求的區(qū)域。而通常的內(nèi)存分配,則可先在NORMALZONE進行,如果不能滿足要求,則在DMAZONE嘗試。二、伙伴算法伙伴算法Linux對每個區(qū)域采用了伙伴算法來對管理空閑內(nèi)存頁幀減少外部碎片。當要為進程用戶空間頁面、系統(tǒng)I/O緩沖區(qū)、系統(tǒng)存

3、儲對象(如表格;動態(tài)模塊等)分配頁幀時調(diào)用伙伴算法。以16個頁面為例,空閑頁面構成五個鏈表(1)初始態(tài)連續(xù)16個頁面[1-16]連續(xù)8個頁面連續(xù)4個頁面連續(xù)2個頁面連續(xù)1個頁面(2)分配兩個頁面,剖分[1-16],[1-2]被使用,狀態(tài)如下連續(xù)16個頁面連續(xù)8個頁面[9-16]連續(xù)4個頁面[5-8]連續(xù)2個頁面[3-4]連續(xù)1個頁面分配方法:盡可能從合適大小的鏈表尋找,如有,則摘除返回頁面。否則尋找更大的連續(xù)空閑頁面,剖成兩個大小相等伙伴,將后者插入合適位置。再看前者是否滿足要求,若不,繼續(xù)剖分。(3)再申請四個頁面,[1-2][5-8]被使用連續(xù)16個頁面連續(xù)8個頁面[9-16]連續(xù)4

4、個頁面連續(xù)2個頁面[3-4]連續(xù)1個頁面(4)釋放頁面[1-2],看能否合并伙伴連續(xù)16個頁面連續(xù)8個頁面[9-16]連續(xù)4個頁面[1-4]連續(xù)2個頁面連續(xù)1個頁面釋放過程:看能否與空閑伙伴合并,若可以,則合并成更大的連續(xù)頁面并繼續(xù)重復能否與空閑伙伴合并的過程。最后插入合適位置。兩組連續(xù)頁面塊被認為是一對"伙伴"必須滿足如下條件:(1)大小相同,比如說都有b個頁面(2)物理空間上連續(xù)(3)位于后面那個塊的最后頁面號必須是2×b的倍數(shù)伙伴算法的優(yōu)點分配頁面時盡量動用小的連續(xù)頁面,回收頁面時則盡可能將空閑的伙伴合成大的連續(xù)頁面伙伴系統(tǒng)的操作申請空間的函數(shù)為__alloc_pages()釋放函

5、數(shù)為__free_pages_ok()當在申請內(nèi)存發(fā)現(xiàn)頁面短缺時還會喚醒kswapd內(nèi)核線程運行,該線程會騰出一些空間以滿足要求三、slab分配器存在問題伙伴系統(tǒng)是以頁幀為基本分配單位,對于小對象容易造成是內(nèi)部碎片解決辦法基于伙伴系統(tǒng)的slab分配器。slab分配器的基本思想:為經(jīng)常使用的小對象建立緩沖,小對象的申請與釋放都通過slab分配器來管理。slab分配器再與伙伴系統(tǒng)打交道好處其一是充分利用了空間,減小了內(nèi)部碎片。其二是管理局部化,盡可能少地與伙伴系統(tǒng)打交道,從而提高了效率。slab分配器的構成為不同的常用對象生成不同的緩沖,每個緩沖存儲相同類型的對象。某種對象的緩沖區(qū)由一連串的

6、slab構成,每個slab又由一個或多個連續(xù)的物理頁幀組成,包含了若干同種類型的對象。slab對象用結構slab_t來描述,某種特定對象建立的slab隊列都有個隊頭kmem_cache_t系統(tǒng)有一個slab隊列頭的slab隊列,其對象是其它對象的隊頭,其隊頭也是一個kmem_cache_t結構,叫cache_cache。除了上面討論的特定對象的緩沖外,Linux還提供了十三種通用的緩沖,其存儲對象的單位大小分別為32字節(jié),64字節(jié),128字節(jié),256字節(jié),512字節(jié),1KB,2KB,4KB,8KB,16KB,32KB,64KB和128KB。這些緩沖用來滿足特定對象之外的普通內(nèi)存需求。單位

7、大小級數(shù)增長保證了內(nèi)部碎片率不超過50%。slab分配器的相關操作:kmem_cache_create()該函數(shù)創(chuàng)建一種特定對象的kem_cache_t結構,并加入cache_cache所管理的隊列。如下代碼創(chuàng)建了inode_cache:kmem_cache_create("inode_cache",sizeof(structinode),0,SLAB_HWCACHE_ALIGN,init_once,NULL);kmem_cache

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。