我从mmap() 内部了解到,mmap 读取的工作原理是 - 导致页面错误 - 将文件数据从磁盘复制到内部内核缓冲区 - 将内核缓冲区映射到用户空间
我的问题是:
谢谢,很抱歉,如果这些问题非常基本,但我没有找到明确的答案。
无论如何,我不是内核黑客,但这是我收集到的:
mmap()是调出到磁盘很简单;不需要分配交换空间。memcpy(),不是write()),则不。整个要点mmap()是将用户态虚拟地址空间映射到物理内存,以允许读取和写入而无需诉诸系统调用。与磁盘的同步将由内核直接执行,无需额外复制到内核缓冲区。