Skip to main content
 首页 » 编程设计

linux-kernel之copy_from_user 需要什么

2024年12月31日25qlqwjy

这个问题在这里已经有了答案:





Why do you have to use copy_to_user()/copy_from_user() to access user space from the kernel?

(2 个回答)


7年前关闭。




如果内核可以访问用户空间,为什么我们需要 copy_from_user 来复制内核内存中的数据,为什么它不能访问用户空间数据?是为了性能吗?

请您参考如下方法:

内核空间和用户空间不一定具有相同的地址空间。它们可以完全独立,需要特殊的 CPU 指令在它们之间移动数据。

另一个重点是内核需要以用户权限访问用户空间,即如果访问该地址的用户空间程序失败,则 copy_from_user()也会失败,即使内核可以自己访问该地址。

除了一般的访问冲突,权限失败还可能包括页面不在内存中,因为它驻留在磁盘上。这可能需要某种特殊设置,因为通常内核不使用可交换内存。