轮询/选择从用户空间复制到内核空间

时间:2016-08-31 18:00:14

标签: linux kernel linux-kernel select

为什么我们需要在调用poll / select时将数据从用户空间复制到内核空间,如果在内核模式下CPU可以访问用户空间内存?

引用Linux编程接口:

  

在用户模式下运行时,CPU只能访问标记为用户空间的内存;尝试访问内核空间中的内存会导致硬件异常。在内核模式下运行时,CPU可以访问用户和内核内存空间。

1 个答案:

答案 0 :(得分:3)

据我所知,这样做是为了避免诸如此类的并发症:

  1. 安全性(多线程)
  2. 用户空间可以随时换出
  3. 有一些进步,例如splice在某些情况下有帮助(尽可能避免复制)

    这是一篇文章,讨论如何在文件读/写期间执行零拷贝操作:Zero Copy I: User-Mode Perspective