記憶體管理之alloc pages exact

2021-10-09 18:49:27 字數 1899 閱讀 9299

kernel:5.8.11

定義在/mm/page_alloc.c

/**

* alloc_pages_exact - 分配物理上連續的精確頁數。

* @size: 要分配的位元組數

* @gfp_mask: 分配的 gfp 標誌不能包含 __gfp_comp

* * 此函式與alloc_pages()相似,不同之處在於,它分配最少數量的頁面以滿足請求。 alloc_pages()只能在2分之三的頁面中分配記憶體。

* * 此函式也受max_order限制。

* * 此函式分配的記憶體必須由free_pages_exact()釋放。

* * return:指向已分配區域的指標;如果出現錯誤,則返回%null。

*/void

*alloc_pages_exact

(size_t size, gfp_t gfp_mask)

export_symbol

(alloc_pages_exact)

;

kernel:5.8.11

定義在/mm/page_alloc.c

/**

* free_pages_exact-釋放通過alloc_pages_exact()分配的記憶體

* @virt:alloc_pages_exact返回的值。

* @size:分配大小,與傳遞給alloc_pages_exact()的值相同。

* * 釋放先前呼叫alloc_pages_exact分配的記憶體。

*/void

free_pages_exact

(void

*virt, size_t size)

}export_symbol

(free_pages_exact)

;

kernel4.19.133

定義在/mm/page_alloc.c

/**

* alloc_pages_exact - 分配物理上連續的精確頁數。

* @size: 要分配的位元組數

* @gfp_mask: 分配的 gfp 標誌不能包含 __gfp_comp

* * 此函式與alloc_pages()相似,不同之處在於,它分配最少數量的頁面以滿足請求。 alloc_pages()只能在2分之三的頁面中分配記憶體。

* * 此函式也受max_order限制。

* * 此函式分配的記憶體必須由free_pages_exact()釋放。

* * return:指向已分配區域的指標;如果出現錯誤,則返回%null。

*/void

*alloc_pages_exact

(size_t size, gfp_t gfp_mask)

export_symbol

(alloc_pages_exact)

;

kernel4.19.133

定義在/mm/page_alloc.c

/**

* free_pages_exact-釋放通過alloc_pages_exact()分配的記憶體

* @virt:alloc_pages_exact返回的值。

* @size:分配大小,與傳遞給alloc_pages_exact()的值相同。

* *釋放先前呼叫alloc_pages_exact分配的記憶體。

*/void

free_pages_exact

(void

*virt, size_t size)

}export_symbol

(free_pages_exact)

;

記憶體管理之buddy system

buddy system介紹 buddy system是一種記憶體管理方法,它使得分配正確大小的記憶體塊以及相鄰記憶體合併都可以更快速地進行。用普通的演算法對free的記憶體按大小排序並分配是很快的,但是記憶體合併非常的複雜。buddy system主要使用的是基於2的冪運算,而這也正是計算機所擅長...

記憶體管理之概念

程式裝入和鏈結 程式在經過編譯成目標模組 obj 檔案,鏈結程式鏈結之後,需要將對應的模組裝入記憶體,有三種方式 1 絕對裝入 絕對裝入程式按照裝入模組中的位址,將程式和資料裝入記憶體。由於程式中的邏輯位址與實際位址完全相同,不需要對程式和資料的位址進行修改。只適用於單道程式環境 也就是說,基本上接...

C 記憶體管理之四 動態記憶體管理

三 new delete拓展 四 記憶體耗盡怎麼辦 new delete與malloc free都是用於管理動態記憶體。其中malloc free是c標準庫函式,用於c程式的動態記憶體管理 new delete是c 的運算操作符,用於動態記憶體管理,功能完全覆蓋malloc free。new new...