操作系统如何存储用户编辑过的文件?

How operating system store file that was edited by user?

我知道文件系统使用簇(n x 扇区 (512 B) 通常大小为 4KB)来存储文件。如果我有大小为 5 KB 的文件,那么它使用两个簇来存储,剩余的 space 称为 slack space。我的问题与用户从磁盘读取文件、修改(添加几个字符)并再次保存该文件的情况有关。会发生什么,将从开始读取文件的位置 OS(覆盖)写入文件,或者文件将完全写入新簇,文件起始簇地址将被擦除并替换为新簇地址。

新部分:

我刚刚在一本书中读到 "Information technologie:An Introduction for Today’s Digital World" 如果文件使用 2 个块(簇)并且第二个文件在第一个文件之后使用 4 个连续的块。第一个文件被编辑和修改,他的文件大小增加到总共 3 个块。该文件将在第二个文件之后写入,并且之前占用的 2 个块是空闲的。但是仍然不知道如果我例如将文件增加一个字符并且文件仍然小于 2 个块的总数会发生什么。将此数据添加到现有文件中,添加到现有的前两个块,还是存储在新的磁盘物理位置(新的 2 个块)?

当用户存储文件时,它会在磁盘上占用一些 space(簇 = 合并多个扇区 = 4 KB,因为扇区通常为 512 字节)。如果文件占用 3KB,则 1KB 在此集群中未使用。现在,如果我增加小文件并向该文件添加一些数据,将会发生什么。现在回答取决于用户用来修改文件的过程。
1. 如果我手动将数据添加到文件(使用 echo "some text" >> 文件名),此数据将在现有集群中添加此数据,因为有 1KB 的 space 可用。如果文件站点增加,它将占用另一个空闲扇区(文件使用 "extents" 来解决所有这些扇区)
2. 如果我使用文本编辑器,它会将文件复制到光盘上的其他位置(因为多用户和两个用户同时访问同一文件的情况)。以前的位置将是 "free"(扇区中的内容保留但文件系统没有引用它)并替换为磁盘上的新位置。

由于大多数用户使用某些编辑器来编辑文件,因此情况 2 是最常见的。