我四处搜索,发现大多数人都提倡使用kmalloc
,因为您可以保证获得连续的物理内存块。但是,如果找不到您想要kmalloc
的连续物理块,似乎也会失败。
拥有连续的内存块有什么好处?具体来说,为什么我需要在系统调用中有一个连续的物理内存块?有什么理由我不能使用吗?
最后,如果我要在处理系统调用期间分配内存,我应该指定吗?系统调用是否在原子上下文中执行?vmalloc
GFP_ATOMIC
GFP_ATOMIC
分配是高优先级的,不休眠。这是在中断处理程序、下半部分和其他无法睡眠的情况下使用的标志。
GFP_KERNEL
这是正常分配,可能会阻塞。这是在可以安全睡眠时在进程上下文代码中使用的标志。