【问题标题】:How operating system store file that was edited by user?操作系统如何存储用户编辑的文件?
【发布时间】:2020-09-27 10:47:58
【问题描述】:

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

新部分:

我刚刚在《信息技术:当今数字世界的介绍》一书中读到,如果文件使用 2 个块(集群),第二个文件在第一个文件之后使用 4 个连续块。第一个文件被编辑和修改,他的文件大小增加到总共3个块。该文件将在第二个文件之后写入,之前占用的 2 个块空闲。但是仍然不知道如果我例如增加一个字符的文件并且文件仍然小于总共 2 个块会发生什么。此数据是否会添加到现有文件中、现有的前两个块中,或者将存储在新的磁盘物理位置(新的 2 个块)?

【问题讨论】:

    标签: file io operating-system filesystems


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 2012-05-23
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多