【发布时间】:2015-06-30 03:05:19
【问题描述】:
当文件被修改和保存时,内部会发生什么?操作系统会分配一个新的内存块并复制整个数据还是只复制修改部分之后的位?
【问题讨论】:
标签: file operating-system filesystems
当文件被修改和保存时,内部会发生什么?操作系统会分配一个新的内存块并复制整个数据还是只复制修改部分之后的位?
【问题讨论】:
标签: file operating-system filesystems
文件以块的形式进行操作。磁盘上的块就像内存中的一个字节。您只能以块为单位进行读写。 512 字节曾经是正常的块大小,但现在更常见的是 4096。
操作系统会将整个块读入内存;更改任何字节;然后将整个块写入磁盘。
集群是文件分配的单位。它们是块的倍数。磁盘硬件通常不知道集群。较大的集群大小会减少系统分配开销,但对于大量小文件来说效率低下。您可以在集群中读取和写入各个块。
【讨论】:
每种方法都有不同的方法,请记住我们有不同的文件系统。例如,在 ntfs 中,当您编写文件并使用例如六个集群时,它将与您的文件系统中的情况类似:
123456
如果你使用 1 个集群添加一个新文件,它会是这样的
1234561
所以现在你删除第一个文件:
1
你将使用 3 个集群编写一个新文件
123 1
现在你想写一个包含 7 个集群的文件
12312314567
例如,如果您想将文件复制到另一个文件夹中,它将被重新写入文件系统中的新集群中,但是如果您想剪切它,您将只修改 INDEX,这就是为什么剪切文件与复制操作如此之快的原因.
因此,如果您修改文件,大多数情况下的一部分或完整文件将加载到缓冲区中,然后当您保存更改时,该缓冲区将写入硬盘,替换受影响的集群并写入新的集群。但这取决于不同的软件使用不同的方法。
【讨论】: