内核内存分配深入解析
1. 内存分配API的使用与特性
1.1 kvmalloc() 与 vmalloc() 的关联
使用 kvmalloc() API 分配大量内存(如 5 MB)时,会内部调用 vmalloc() API。而 kmalloc() API 在这种情况下会失败,且不会发出警告或重试。可以通过查看 /proc/vmallocinfo 来确认相关情况,关于其字段解释可参考 内核文档 。在 ch9/vmalloc_demo 内核模块中,可通过传递 kvnum=<# bytes to alloc> 作为模块参数来改变 kvmalloc() 的分配内存量。
1.2 内核的辅助 API
- vmalloc_exec() :是
vmalloc()API 的包装,用于分配具有执行权限的虚拟连续内存区域。例如,内核模块分配代码路径(kernel/module.c:module_alloc())会使用此例程分配内核模块(可执行部分)的内存,但该例程未导出。 - vmalloc_user()
超级会员免费看
订阅专栏 解锁全文
724

被折叠的 条评论
为什么被折叠?



