为什么我们需要在调用poll / select时将数据从用户空间复制到内核空间,如果在内核模式下CPU可以访问用户空间内存?
引用Linux编程接口:
在用户模式下运行时,CPU只能访问标记为用户空间的内存;尝试访问内核空间中的内存会导致硬件异常。在内核模式下运行时,CPU可以访问用户和内核内存空间。
答案 0 :(得分:3)
据我所知,这样做是为了避免诸如此类的并发症:
有一些进步,例如splice在某些情况下有帮助(尽可能避免复制)
这是一篇文章,讨论如何在文件读/写期间执行零拷贝操作:Zero Copy I: User-Mode Perspective