Linux对文件的处理

Linux对文件的处理

我想通过多个进程并行对文件执行更新。这些进程都打开该文件以并行写入。

使用的缩写:

  • f: 文件,
  • p[i]: 过程i
  • b[i]i:进程打开的FD 缓冲区i

问题:

  1. 当打开文件并建立流时,fpath内部是否会转换为索引节点号?我读到 inode 仅在分区中是唯一的。
  2. 当并行打开同一个文件时,linux如何管理写入?
  3. 如果b[1]满了,就会冲水。这是否意味着所有人p[i]都将开始看到文件中的更改?这不会发生。那么缓冲区的内容被刷新到哪里了呢?如果发生 COW,这是否意味着 linux 在磁盘上创建脏页的副本?或者有类似MVCC的东西吗? (我假设不是复制所有页面,而是只重写脏页面,因为否则修改大文件会很麻烦)
  4. 作为实验,我使用vi编辑器打开了一个文件。我使用终端和编辑器删除了文件,向文件添加了一些文本并保存。文件已重新创建。在另一种情况下,当文件未编辑时,当我在编辑器中关闭它时,它不再存在。看来COW正在工作。但由于文件在第二种情况下被删除,COW是否使用文件的内存页面来重新创建文件?如果文件大小为 10GB 并且无法立即装入内存怎么办?

相关内容