我正在阅读LDD3。在chapter 8中,我无法理解这一段:
使用
vmalloc
的内核中的函数示例是create_module
系统 call,使用vmalloc
为正在创建的模块获取空间。代码和数据 稍后使用copy_from_user
将模块复制到分配的空间。通过这种方式, 模块似乎被加载到连续的内存中。
为什么使用copy_from_user
?我们不只是在内核空间吗?
答案 0 :(得分:3)
回想一下,内核模块是由insmod
(或modprobe
)命令加载的,该命令在用户空间中运行。这些命令将内核模块从磁盘加载到内存中,然后将其传递给内核,内核必须使用copy_from_user()
将其复制到内核内存。