【发布时间】:2012-07-22 15:52:25
【问题描述】:
内核为什么要使用copy_to_user函数?
不能直接对用户空间的数据进行操作吗?
【问题讨论】:
内核为什么要使用copy_to_user函数?
不能直接对用户空间的数据进行操作吗?
【问题讨论】:
内核和用户空间应用程序具有不同的地址空间,因此复制到用户空间需要更改地址空间。每个进程都有自己的(用户)地址空间。
此外,内核在复制到用户空间时永远不会崩溃,因此copy_to_user 函数可能会检查目标地址是否有效(也许该地址应该被分页,例如从交换空间)。
阅读更多关于linux kernel、syscalls、processes、address space ...
【讨论】:
如果给定内核仅针对一种架构编写,这可能是一个合理的选择,也可能不是。
有很多考虑因素可能因架构而异,因此需要某种多态操作...
保护 ...内核可能有太多或太少的访问权限,无论哪种方式都可能需要给定目标上的额外代码
地址空间...用户空间和内核空间可能重叠,因此需要针对特定目标的解决方案或临时映射
页面错误管理...对用户空间的访问可能会出现错误,这需要避免或允许。限制对给定特定位置的访问允许额外设置或识别故障原因。
【讨论】: