Linux記憶體技術分析(下)

2022-02-04 04:06:03 字數 2572 閱讀 1780

linux記憶體技術分析(下)

五、記憶體使用場景

out of memory的時代過去了嗎?no,記憶體再充足也不可任性使用。

1、記憶體的使用場景

2、使用者態記憶體分配函式

3、核心態記憶體分配函式

函式分配原理最大記憶體其他_get_free_pages直接對頁框進行操作4mb適用於分配較大量的連續物理記憶體kmem_cache_alloc基於 slab 機制實現128kb適合需要頻繁申請釋放相同大小記憶體塊時使用kmalloc基於 kmem_cache_alloc 實現128kb最常見的分配方式,需要小於頁框大小的記憶體時可以使用vmalloc建立非連續物理記憶體到虛擬位址的對映物理不連續,適合需要大記憶體,但是對位址連續性沒有要求的場合dma_alloc_coherent基於_alloc_pages 實現4mb適用於 dma 操作ioremap實現已知實體地址到虛擬位址的對映適用於實體地址已知的場合,如裝置驅動alloc_bootmem在啟動 kernel 時,預留一段記憶體,核心看不見小於物理記憶體大小,記憶體管理要求較高

4malloc申請記憶體

5、缺頁異常

6、使用者程序訪問記憶體分析

7、共享記憶體

1)    原理

2)    shm 介面

六、記憶體使用那些坑

1c記憶體洩露

2c野指標

3c資源訪問衝突

4stl迭代器失效

錯誤示例:刪除當前迭代器,迭代器會失效

正確示例:迭代器

erase

時,需儲存下乙個迭代器

5c++ 11智慧型指標

(2)資料結構:

(3)使用方法:a.  lock() 獲取所管理的物件的強引用指標 b. expired() 檢測所管理的物件是否已經釋放 c. get() 訪問智慧型指標物件

6c++ 11更小更快更安全

forward_list 是單鏈表(std::list 是雙鏈表),只需要順序遍歷的場合,forward_list 能更加節省記憶體,插入和刪除的效能高於 list

Linux記憶體管技術分析

題目名稱 linux記憶體管技術分析 指導教師 張志強 2007 12 3 22 11 34 學年 2008 適宜專業 電腦科學與技術,計算機應用與維護,計算機資訊管理,資訊與計算科學 組數 1每組人數 1 內容 分析linux最近幾個版本的記憶體管理方法,頁面替換演算法 對linux頁面替換演算法...

linux 記憶體分析

執行root android busybox free 得到結果如下 root android busybox free m total used free shared buffers mem 64 39 24 0 1 buffers 38 26 swap 0 0 0 從以上結果可知當前系統已使用...

分析Linux記憶體

前言 在linux上不像在windows上看記憶體那樣方便,而且還有swap這個新的概念,所以知道如何來看linux記憶體還是有一定意義的.下面是buffers與cached的區別。buffers是指用來給塊裝置做的緩衝大小,他只記錄檔案系統的metadata以及 tracking in fligh...