主要问题是:可以通过将新数据附加到文件末尾来破坏数据(记住硬盘扇区大小,例如512)?
如果我有1023字节的文件,附加1个字节,并且我已经粉碎(断电,磁盘缓冲区问题等等),该怎么办?
在这种情况下,第二个部门将处于什么状态?
答案 0 :(得分:0)
不可能说。有多层抽象,缓存,甚至简单的电传播延迟都可以解释。
您的代码可能已写出一个字节。但操作系统不会立即写出该字节。命中驱动器是计算机最近可以执行的绝对最慢的操作之一,因此它将缓冲该字节并查看是否有任何其他字节卡在输出缓冲区中。
如果缓存的超时时间内没有发生任何事情,则字节将被发送到驱动器以提交给媒体。但驱动器本身也可能会进行一些缓存等等......需要考虑旋转延迟(字节应该进入的实际扇区必须实际位于要写入的写头之下,这可能是几毫秒)。
换句话说,将一个字节写入磁盘实际上可能需要花费大量时间实际写入磁盘介质。如果在此间隔期间电源故障中断,则数据将丢失。