copy_to_user中的页面错误,内核如何为用户空间地址映射页面?

问题描述:

我了解到,当copy_to_user函数中发生页面错误时,将使用异常表。
但是我发现几乎所有的修复都会设置返回值并跳转到触发页面错误之后的下一条指令。
内核在哪里做用户空间地址的映射工作?
我的意思是至少有一些地方内核会修改页表。copy_to_user中的页面错误,内核如何为用户空间地址映射页面?

你提的问题是非常不清楚,一个copy_to_user基本上是从内核空间将数据复制到用户空间功能。主要是出于安全原因,因为我们不想让用户访问内核数据结构和内核空间。所以我们需要一个机制来请求内核给我们提供这些数据。

确实会在页表中添加新的映射。该映射在page-tables所在的 kernel-space中完成。