linux内核申请内存的方法,Linux内核空间的内存申请常用函数
在Linux內核編程中內存的申請不同于系統編程,她有自己的一套機制。
1. kmalloc
函數原型:void *kmalloc( size_t size, int flags )
參數說明:size?? ---? 要分配的內存塊大小
flags ---? 分配標志,常用的有GFP_KERNEL(會引起睡眠),GFP_ATOMIC(不引起睡眠,分配不到,立即返回)
函數特點:申請的內存位于內核物理內存映射區域,物理上連續,與真實的物理地址只有一個固定偏移值,通過不同的分配標志可控制分配動作。
底層依賴:__get_free_page()
釋放函數:free_page(),free_pages()
2.__get_free_page()
函數原型:__get_free_page(unsigned int flags)
參數說明:flags ---? 分配標志,常用的有GFP_KERNEL(會引起睡眠),GFP_ATOMIC(不引起睡眠,分配不到,立即返回)
函數特點:用于獲取一個空閑的新頁,該函數實際是個宏,定義為__get_free_pages( (gfp_mask),0 )。該函數還有一系列類似的函數可使用。
底層依賴:__get_free_pages()
釋放函數:kfree()
3. vmalloc()
函數原型:void *vmalloc( unsigned long size );
參數說明:size?? ---? 要分配的內存塊大小
函數特點:用于分配大塊的內存,開銷很大,需建立新的頁表。
底層依賴:kmalloc
釋放函數:vfree()
總結
以上是生活随笔為你收集整理的linux内核申请内存的方法,Linux内核空间的内存申请常用函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10锁屏壁纸怎么设置 Win10锁
- 下一篇: 真实的linux系统是怎样的,只使用Li