答案1
地址空间映射在某些(不是全部!)架构上是相同的,但即使在它们相同的架构上,保护级别也不同。copy_from_user
等服务于三个主要目的:
- 他们检查要读取或写入的内存的权限是否允许在用户空间中运行的进程读取或写入它 - 这确保进程不能欺骗内核访问进程不应该访问的内存能够;
- 它们允许特定的错误处理,以便保护错误不会使内核崩溃,例如,如果当前未映射请求的地址(考虑零页或换出页);
- 它们确保内核不会被自身的保护所绊倒,例如 表面活性剂或内核特定的地址空间(S/390)。
一些架构使用内存布局,允许这些函数采取捷径,例如使用物理内存的直接映射,但您不能假设情况确实如此,并且它无论如何也不能处理所有情况(换出的页面不存在于物理内存中)。