Linux 当内存映射数据可以';是否异步刷新到磁盘?

Linux 当内存映射数据可以';是否异步刷新到磁盘?,linux,memory-mapped-files,Linux,Memory Mapped Files,我有一个程序可以将可写文件映射到内存中。由于此文件是通过ftruncate扩展到其最大大小的,因此它开始时是空的和稀疏的。因此,如果磁盘已满,并且操作系统无法实现该文件并覆盖访问的内存范围,那么通过内存对其进行写入可能会导致SIGBUS。很烦人,但是 如果成功扩展文件、映射块并完成内存写入,进程会发生什么情况但是I/O错误阻止操作系统将页面异步刷新到磁盘?您考虑过自己测试吗?我认为您可以使用设备映射器构建一些可以可靠地产生IO错误的东西。考虑到这一点,是的,但我不知道如何模拟这种错误。serve

我有一个程序可以将可写文件映射到内存中。由于此文件是通过
ftruncate
扩展到其最大大小的,因此它开始时是空的和稀疏的。因此,如果磁盘已满,并且操作系统无法实现该文件并覆盖访问的内存范围,那么通过内存对其进行写入可能会导致SIGBUS。很烦人,但是


如果成功扩展文件、映射块并完成内存写入,进程会发生什么情况但是I/O错误阻止操作系统将页面异步刷新到磁盘?

您考虑过自己测试吗?我认为您可以使用设备映射器构建一些可以可靠地产生IO错误的东西。考虑到这一点,是的,但我不知道如何模拟这种错误。serverfault上有一个示例: