【问题标题】:Why does the kernel use the copy_to_user() function?为什么内核使用 copy_to_user() 函数?
【发布时间】:2012-07-22 15:52:25
【问题描述】:

内核为什么要使用copy_to_user函数?

不能直接对用户空间的数据进行操作吗?

【问题讨论】:

    标签: linux kernel


    【解决方案1】:

    内核和用户空间应用程序具有不同的地址空间,因此复制到用户空间需要更改地址空间。每个进程都有自己的(用户)地址空间。

    此外,内核在复制到用户空间时永远不会崩溃,因此copy_to_user 函数可能会检查目标地址是否有效(也许该地址应该被分页,例如从交换空间)。

    阅读更多关于linux kernelsyscallsprocessesaddress space ...

    【讨论】:

      【解决方案2】:

      如果给定内核仅针对一种架构编写,这可能是一个合理的选择,也可能不是。

      有很多考虑因素可能因架构而异,因此需要某种多态操作...

      • 保护 ...内核可能有太多或太少的访问权限,无论哪种方式都可能需要给定目标上的额外代码

      • 地址空间...用户空间和内核空间可能重叠,因此需要针对特定​​目标的解决方案或临时映射

      • 页面错误管理...对用户空间的访问可能会出现错误,这需要避免或允许。限制对给定特定位置的访问允许额外设置或识别故障原因。

      【讨论】:

        猜你喜欢
        • 2012-09-21
        • 1970-01-01
        • 2014-06-13
        • 2018-09-01
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 2017-10-24
        • 1970-01-01
        相关资源
        最近更新 更多