導航:首頁 > 編程系統 > ilinuxkernel虛擬內存

ilinuxkernel虛擬內存

發布時間:2024-04-06 22:27:04

A. linux系統為什麼給內核分配1G不是500M為什麼不是2:2分配

所有進程都必須佔用一定數量的內存,這些內存用來存放從磁碟載入的程序代碼,或存放來自用戶輸入的數據等。內存可以提前靜態分配和統一回收,也可以按需動態分配和回收。

對於普通進程對應的內存空間包含5種不同的數據區:

B. Linux內核空間內存動態申請

在Linux內核空間中申請內存涉及的函數主要包括kmalloc () 、_get_free _pages ()和vmalloc(等。kmalloc()和_get_free pages ()(及其類似函數)申請的內存位於DMA和常規區域的映射區,而且在物理上也是連續的,它們與真實的物理地址只有一個固定的偏移,因此存在較簡單的轉換關系。而vmalloc()在虛擬內存空間給出一塊連續的內存區,實質上,這片連續的虛擬內存在物理內存中並不一定連續,而vmalloc ()申請的虛擬內存和物理內存之間也沒有簡單的換算關系。
1.kmalloc ( )
給kmalloc() 的第一個參數是要分配的塊的大小;第二個參數為分配標志,用於控制kmalloc ()的行為。最常用的分配標志是GFP_KERNEL,其含義是在內核空間的進程中申請內存。kmalloc ()的底層依賴於_get_free pages ()來實現,分配標志的前綴GFP正好是這個底層函數的縮寫。使用GFP_KERNEL標志申請內存時,若暫時不能滿足,則進程會睡眠等待頁,即會引起阻塞,因此不能在中斷上下文或持有自旋鎖的時候使用GFP_KERNE申請內存。由於在中斷處理函數、tasklet和內核定時器等非進程上下文中不能阻塞,所以此時驅動應當使用GFP_ATOMIC標志來申請內存。當使用GFP_ATOMIC標志申請內存時,若不存在空閑頁,則不等待,直接返回。
其他的申請標志還包括GFP_USER(用來為用戶空間頁分配內存,可能阻塞)、GFP_HIGHUSER(類似GFP_USER,但是它從高端內存分配)、GFP_DMA(從DMA區域分配內存)、GFP_NOIO(不允許任何IO初始化)、GFP_NOFS(不允許進行任何文件系統調用)、__GFP_ HIGHMEM(指示分配的內存可以位於高端內存)、__(GFP COLD(請求一個較長時間不訪問的頁)、_GFP_NOWARN(當一個分配無法滿足時,阻止內核發出警告)、_GFP_HIGH(高優先順序請求,允許獲得被內核保留給緊急狀況使用的最後的內存頁)、GFP_REPEAT(分配失敗,則盡力重復嘗試)、_GFP_NOFAIL(標志只許申請成功,不推薦)和__GFPNORETRY(若申請不到,則立即放棄)等。
使用kmalloc()申請的內存應使用kfree()釋放,這個函數的用法和用戶空間的free()類似。
2._get_free_pages ()
_get_free pages ()系列函數/宏本質上是Linux內核最底層用於獲取空閑內存的方法,因為底層的buddy演算法以2n頁為單位管理空閑內存,所以最底層的內存申請總是以2n頁為單位的。
get_free _pages ()系列函數/宏包括get_zeroed _page () 、_get_free_page ()和get_free pages () 。
__get_free_pages(unsigned int flags, unsigned int order) 該函數可分配多個頁並返回分配內存的首地址,分配的頁數為2order,分配的頁也不清零。order允許的最大值是10(即1024頁)或者11(即2048頁),這取決於具體的硬體平台。

閱讀全文

與ilinuxkernel虛擬內存相關的資料

熱點內容
溫州銀行網貸在哪個app 瀏覽:307
qq郵箱怎麼把文件另存 瀏覽:489
不加qq怎麼發文件 瀏覽:183
征途app安裝包在哪裡 瀏覽:291
做網站有哪些公司 瀏覽:332
為什麼win10系統刪除不了文件夾里 瀏覽:367
華為網站打不開是什麼原因 瀏覽:335
為什麼編程時大腦空空 瀏覽:36
電腦上怎麼保存ppt文件 瀏覽:907
男性董事總人數怎麼獲得數據 瀏覽:475
java矩陣特徵分解 瀏覽:98
gxworks2怎麼給plc編程 瀏覽:6
文件編輯器怎麼安裝軟體 瀏覽:256
嘉興長沙少兒編程培訓班哪個好 瀏覽:701
win10我的文檔圖標不見了 瀏覽:306
處理linux虛擬機亂碼 瀏覽:745
python開發編程軟體如何升級程序 瀏覽:53
怎樣把蘋果電腦中的文件拷貝到u盤 瀏覽:955
藍屏情況下如何刪除文件 瀏覽:385
topo的文件怎麼打開 瀏覽:466

友情鏈接