看板 LinuxDev 關於我們 聯絡資訊
※ 引述《popd (QQ)》之銘言: : 小弟對於linux kernel算初心者,關於vmalloc的解釋有些地方不懂,還請高手解釋 : void * vmalloc(unsigned long size) : The function returns a pointer to at least size bytes of virtually contiguous : memory. On error, the function returns NULL. The function might sleep, and : thus cannot be called from interrupt context or other situations where : blocking is not permissible. : 我的問題是 : 為什麼這個function會sleep? 什麼樣的情況會導致vmalloc進行sleep? : 謝謝! 替你翻了一下google ... 請看此網頁的最後面有關KMALLOC PK VMALLOC 的敘述 關鍵字在於GFP_KERNEL旗標,所以在kernel 中任何記憶體配置函數有用到 GFP_KERNEL 旗標的,全都有可能休眠 這可能是因為,目前記憶體的配置無法滿足呼叫者的空間需求,但kernel會使用一些手法 來盡量滿足呼叫者(例如把某些記憶體頁搬到硬碟去之類的),這些手法可能跑在另一個 執行緒,或可能是一些控制硬體的指令什麼的,所以得要將目前呼叫者的行程送去休眠 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.6.195 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1427862330.A.F8B.html
aweilin: 所以就是為了要取得記憶體,作業系統去取得的這個過程中 04/28 22:11
aweilin: 有可能會去睡覺 04/28 22:11