sync()如何工作?

我检查了man 2 sync

它显示syncsyncfs

  void sync(void); void syncfs(int fd); 

syncfs很容易理解。 给出一个fd,并将该fd的数据完全写入底层文件系统

什么是sync

 sync() causes all buffered modifications to file metadata and data to be written to the underlying file systems. 

是否系统中的所有缓冲区都写入了fs? 还是所有由这个进程打开的文件都写入了fs? 我不太明白"buffered modifications to file metadata"

无论何时发出writesend ,写入文件支持的映射或类似的东西,内核都不会强制将数据直接转储到持久性存储,底层网络堆栈等等。这种缓冲是出于性能原因而完成的。

sync指示内核做到这一点。 清空所有缓冲区。