copy_from_user的作用是什么?

4
如果内核可以访问用户空间,为什么需要使用copy_from_user来复制内核内存中的数据,为什么不能直接访问用户空间数据?这是为了性能考虑吗?
1个回答

4
内核空间和用户空间不一定具有相同的地址空间。它们可以完全分离,需要特殊的CPU指令才能在它们之间移动数据。
另一个重要的问题是内核需要使用用户权限访问用户空间。也就是说,如果用户空间程序访问该地址失败,即使内核本身可以访问该地址,copy_from_user()也会失败。
除了通常的访问违规外,权限失败还可能包括页面不在内存中,因为它驻留在磁盘上。这可能需要某种特殊设置,因为通常内核不使用可交换内存。

请您能否详细说明第二点和第三点? - debonair
1
已经在这里解释过了 https://dev59.com/L2cs5IYBdhLWcg3wp133 - knare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接