作者leolarrel (真.粽子无双)
看板LinuxDev
标题Re: [问题] 关於vmalloc的问题
时间Wed Apr 1 12:25:27 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1427862330.A.F8B.html
1F:推 aweilin: 所以就是为了要取得记忆体,作业系统去取得的这个过程中 04/28 22:11
2F:→ aweilin: 有可能会去睡觉 04/28 22:11