Linux內(nèi)存管理

Linux內(nèi)存管理

ID:38165299

大小:529.61 KB

頁數(shù):12頁

時間:2019-06-06

Linux內(nèi)存管理_第1頁
Linux內(nèi)存管理_第2頁
Linux內(nèi)存管理_第3頁
Linux內(nèi)存管理_第4頁
Linux內(nèi)存管理_第5頁
資源描述:

《Linux內(nèi)存管理》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、內(nèi)存管理,不用多說,言簡意賅。在內(nèi)核里分配內(nèi)存還真不是件容易的事情,根本上是因為內(nèi)核不能想用戶空間那樣奢侈的使用內(nèi)存。?????先來說說內(nèi)存管理。內(nèi)核把物理頁作為內(nèi)存管理的基本單位。盡管處理器的最小可尋址單位通常是字,但是,內(nèi)存管理單元MMU通常以頁為單位進行處理。因此,從虛擬內(nèi)存的交代來看,頁就是最小單位。內(nèi)核用struct?page(linux/mm.h)結(jié)構(gòu)表示系統(tǒng)中的每個物理頁:?1234567891011121314Structpage{????????unsignedlongflags;???????????????????

2、???????????????????????????????????????????atomic_tcount;????????????????????????unsignedintmapcount;??????????????????unsignedlongprivate;??????????????????structaddress_space*mapping;??????????pgoff_tindex;??????????????????????????structlist_headlru;??????union{??????

3、?structpte_chain;???????pte_addr_t;????}?????????????????void*virtual;??????????????????};?????flag用來存放頁的狀態(tài),每一位代表一種狀態(tài),所以至少可以同時表示出32中不同的狀態(tài),這些狀態(tài)定義在linux/page-flags.h中。count記錄了該頁被引用了多少次。mapping指向與該頁相關(guān)的address_space對象。virtual是頁的虛擬地址,它就是頁在虛擬內(nèi)存中的地址。要理解的一點是page結(jié)構(gòu)與物理頁相關(guān),而并非與虛擬頁相

4、關(guān)。因此,該結(jié)構(gòu)對頁的描述是短暫的。內(nèi)核僅僅用這個結(jié)構(gòu)來描述當(dāng)前時刻在相關(guān)的物理頁中存放的東西。這種數(shù)據(jù)結(jié)構(gòu)的目的在于描述物理內(nèi)存本身,而不是描述包含在其中的數(shù)據(jù)。?????在linux中,內(nèi)核也不是對所有的也都一視同仁,內(nèi)核而是把頁分為不同的區(qū),使用區(qū)來對具有相似特性的頁進行分組。Linux必須處理如下兩種硬件存在缺陷而引起的內(nèi)存尋址問題:1.一些硬件只能用某些特定的內(nèi)存地址來執(zhí)行DMA2.一些體系結(jié)構(gòu)其內(nèi)存的物理尋址范圍比虛擬尋址范圍大的多。這樣,就有一些內(nèi)存不能永久地映射在內(nèi)核空間上。為了解決這些制約條件,Linux使用了三種區(qū):

5、1.ZONE_DMA:這個區(qū)包含的頁用來執(zhí)行DMA操作。2.ZONE_NOMAL:這個區(qū)包含的都是能正常映射的頁。3.ZONE_HIGHEM:這個區(qū)包"高端內(nèi)存",其中的頁能不永久地映射到內(nèi)核地址空間。?????區(qū)的實際使用與體系結(jié)構(gòu)是相關(guān)的。linux把系統(tǒng)的頁劃分區(qū),形成不同的內(nèi)存池,這樣就可以根據(jù)用途進行分配了。需要說明的是,區(qū)的劃分沒有任何物理意義,只不過是內(nèi)核為了管理頁而采取的一種邏輯上的分組。盡管某些分配可能需要從特定的區(qū)中獲得頁,但這并不是說,某種用途的內(nèi)存一定要從對應(yīng)的區(qū)來獲取,如果這種可供分配的資源不夠用了,內(nèi)核就會占

6、用其他可用去的內(nèi)存。下表給出每個區(qū)及其在X86上所占的列表:?????????每個區(qū)都用定義在linux/mmzone.h中的structzone表示,如下:?1234567891011121314structzone{????????spinlock_t?????????????lock;????????unsignedlong??????????free_pages;????????unsignedlong??????????pages_min,pages_low,pages_high;????????unsignedlong???

7、???????protection[MAX_NR_ZONES];????????spinlock_t?????????????lru_lock;???????????????structlist_head???????active_list;????????structlist_head???????inactive_list;????????unsignedlong??????????nr_scan_active;????????unsignedlong??????????nr_scan_inactive;????????unsign

8、edlong??????????nr_active;????????unsignedlong??????????nr_inactive;????????int????????????????????all_

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

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

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