修改和保存文件时内部会发生什么?操作系统是否会分配新的内存块并复制整个数据或仅修改部分后的位数?
答案 0 :(得分:0)
文件以块为单位进行操作。磁盘上的块就像内存中的一个字节。您只能以块为单位进行读写。 512字节曾经是正常的块大小,但现在更常见的是4096。
操作系统会将整个块读入内存;改变任何字节;然后将整个块写入磁盘。
群集是文件分配的单位。它们是块的倍数。磁盘硬件通常不知道集群。较大的簇大小减少了系统分配开销,但对于大量小文件效率低下。您可以在群集中读取和写入单个块。
答案 1 :(得分:-1)
每种方法都有不同的方法,请记住我们有不同的文件系统。例如在ntfs中,当你写一个文件并且它使用例如六个集群时,它就像你的文件系统中那样:
123456
如果您使用1个群集添加新文件,那就像
1234561
所以现在你删除第一个文件:
1
你将使用3个集群编写一个新文件
123 1
现在你想写一个包含7个簇的文件
12312314567
例如,如果你想复制另一个文件夹中的文件,它将被重新写入文件系统中的新簇中,但是如果你想要删除它,你将仅修改INDEX,这就是为什么如此快速切割文件与复制动作
因此,如果您修改文件,大多数情况下的部分或完整将被加载到缓冲区中,然后当您保存更改时,缓冲区将写入硬盘中,替换受感染的集群并写入新的集群。但这取决于不同的软件使用不同的方法。