實(shí)驗(yàn)九linux內(nèi)存

實(shí)驗(yàn)九linux內(nèi)存

ID:27676682

大?。?37.01 KB

頁(yè)數(shù):13頁(yè)

時(shí)間:2018-12-02

實(shí)驗(yàn)九linux內(nèi)存_第1頁(yè)
實(shí)驗(yàn)九linux內(nèi)存_第2頁(yè)
實(shí)驗(yàn)九linux內(nèi)存_第3頁(yè)
實(shí)驗(yàn)九linux內(nèi)存_第4頁(yè)
實(shí)驗(yàn)九linux內(nèi)存_第5頁(yè)
資源描述:

《實(shí)驗(yàn)九linux內(nèi)存》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、實(shí)驗(yàn)九Linux內(nèi)存管理實(shí)驗(yàn)九Linux內(nèi)存管理預(yù)備知識(shí)Linux內(nèi)存管理Linux內(nèi)存分配Linux內(nèi)存回收實(shí)驗(yàn)指導(dǎo)內(nèi)存信息的監(jiān)視內(nèi)存的申請(qǐng)和釋放實(shí)驗(yàn)?zāi)康?、?nèi)容1.1Linux內(nèi)存管理—虛擬內(nèi)存0xBFFFFFFF0xFFFFFFFF0x00000000用戶空間(對(duì)系統(tǒng)其他進(jìn)程不可見(jiàn))內(nèi)核空間(所有進(jìn)程及內(nèi)核共享)固定映射區(qū)(4M)永久內(nèi)存映射區(qū)(4M)動(dòng)態(tài)內(nèi)存映射區(qū)(min120M)直接內(nèi)存映射區(qū)(max896M)0xC00000000xFFFFFFFF連續(xù)區(qū)kmalloc()非連續(xù)區(qū)vmalloc()1.2Linux內(nèi)存管理—虛擬內(nèi)存的實(shí)現(xiàn)地址映射

2、機(jī)制緩存和刷新機(jī)制請(qǐng)求頁(yè)機(jī)制交換機(jī)制內(nèi)存分配和回收機(jī)制1.2Linux內(nèi)存分配32位系統(tǒng):64位系統(tǒng):頁(yè)目錄頁(yè)號(hào)頁(yè)偏移量01211222131線性地址……頁(yè)目錄……頁(yè)表……物理 地址物理頁(yè)3號(hào)控制寄存器頁(yè)全局目錄(PGD)頁(yè)上級(jí)目錄(PUD)頁(yè)中間目錄(PMD)頁(yè)表(PT)…………物理塊1.2Linux內(nèi)存分配—常用的內(nèi)存分配函數(shù)函數(shù)名分配原理最大內(nèi)存其他_get_free_pages直接對(duì)頁(yè)框進(jìn)行操作4MB適用于分配較大量的連續(xù)物理內(nèi)存kmem_cache_alloc基于slab機(jī)制實(shí)現(xiàn)128KB適合需要頻繁申請(qǐng)釋放相同大小內(nèi)存塊時(shí)使用kmalloc基

3、于kmem_cache_alloc實(shí)現(xiàn)128KB最常見(jiàn)的分配方式,需要小于頁(yè)框大小的內(nèi)存時(shí)使用vmalloc建立非連續(xù)物理內(nèi)存到虛擬地址的映射物理不連續(xù),適合需要大內(nèi)存,但對(duì)地址連續(xù)性沒(méi)有要求的場(chǎng)合dma_alloc_coherent基于_alloc_pages實(shí)現(xiàn)4MB適用于DMA操作Ioremap實(shí)現(xiàn)已知物理地址到虛擬地址的映射適用于物理地址已知的場(chǎng)合,如設(shè)備驅(qū)動(dòng)alloc_bootmem在啟動(dòng)kernel時(shí),預(yù)留一段內(nèi)存,內(nèi)核看不見(jiàn)小于物理內(nèi)存大小,內(nèi)存管理要求較高1.3Linux內(nèi)存回收堆內(nèi)存:程序從堆中分配的、大小任意的、使用完后必須顯示釋放的

4、內(nèi)存堆內(nèi)存的分配:malloc()、realloc()、new()對(duì)內(nèi)存的回收:free()、delete()內(nèi)存泄漏的堆積,會(huì)最終消耗盡系統(tǒng)所有的內(nèi)存使用kill命令回收內(nèi)存使用工具軟件Memprof回收內(nèi)存實(shí)驗(yàn)九Linux內(nèi)存管理預(yù)備知識(shí)Linux內(nèi)存管理Linux內(nèi)存分配Linux內(nèi)存回收實(shí)驗(yàn)指導(dǎo)內(nèi)存信息的監(jiān)視內(nèi)存的申請(qǐng)和釋放實(shí)驗(yàn)?zāi)康?、?nèi)容2.1內(nèi)存信息的監(jiān)視用free命令監(jiān)控內(nèi)存使用情況用vmstat命令監(jiān)視虛擬內(nèi)存使用情況2.2內(nèi)存的申請(qǐng)和釋放動(dòng)態(tài)分配內(nèi)存空間malloc()、calloc()malloc():一個(gè)參數(shù),即要分配的內(nèi)存空間大小c

5、alloc():兩個(gè)參數(shù),即元素?cái)?shù)目和每個(gè)元素的大小malloc():不能初始化所分配的內(nèi)存空間calloc():初始化為零釋放原先申請(qǐng)的內(nèi)存空間free()釋放內(nèi)存后,不能再去訪問(wèn)被釋放的內(nèi)存空間不能兩次釋放相同的指針C語(yǔ)言中,malloc/free需配套使用實(shí)驗(yàn)九Linux內(nèi)存管理預(yù)備知識(shí)Linux內(nèi)存管理Linux內(nèi)存分配Linux內(nèi)存回收實(shí)驗(yàn)指導(dǎo)內(nèi)存信息的監(jiān)視內(nèi)存的申請(qǐng)和釋放實(shí)驗(yàn)?zāi)康?、?nèi)容3.1實(shí)驗(yàn)?zāi)康恼莆誏inux虛擬內(nèi)存管理的原理掌握Linux中動(dòng)態(tài)內(nèi)存操作函數(shù)的使用方法掌握Linux監(jiān)測(cè)內(nèi)存使用情況的方法3.2實(shí)驗(yàn)內(nèi)容利用系統(tǒng)提供的內(nèi)存操作

6、函數(shù)進(jìn)行內(nèi)存的申請(qǐng)、使用和釋放利用系統(tǒng)提供的內(nèi)存操作函數(shù)進(jìn)行內(nèi)存的申請(qǐng)、調(diào)整、使用和釋放利用free和vmstat命令觀察主存分配結(jié)果及使用情況

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

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

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