Who*_*ami 4 c linux linux-device-driver linux-kernel
我理解mmap的用法.考虑对文件进行简单的读/写操作,涉及打开文件和分配缓冲区,读取[需要上下文切换],然后读取缓冲区中用户可用的数据,缓冲区中的更改将不会反映出来除非明确写出,否则进入文件.
相反,如果我们使用mmap,直接写入缓冲区只是写入文件.
问题:
1)文件在硬盘中,mmaped进入进程,每次我写入mmaped内存,是否直接写入文件?.在这种情况下,它不需要任何上下文切换,因为,更改直接完成到文件本身.如果mmap比遗留文件访问更快,我们在哪里看到节省时间?
请解释一下.如果我错了也纠正我.
该文件的更新不会立即显示在磁盘中,但在呼叫之后unmap或之后都可见msync.因此,在更新期间没有系统调用,并且不涉及内核.但是,由于文件是根据需要逐页阅读,因此当您跨越页面边界时,操作系统可能需要读入文件的一部分.内存映射最明显的优点是它消除了用户空间数据副本的内核空间.系统调用也不需要寻找文件中的特定位置.