たとえば、既存のファイルがあるとします<File>
。このファイルは更新のために C プログラムによって開かれています ( r+b
)。の端ではなく、fseek
内のポイントに移動するために使用します。<File>
を使用してデータの書き込みを開始しfwrite/fputc
ます。以前に存在していたデータは削除されないことに注意してください<File>
...
システムはこれらの書き込みをどのように処理しますか? ファイル全体を Disk 内の別の位置に書き換えて、新しいデータを含めますか? ファイルを断片化し、新しいデータのみを別の位置に書き込みますか(途中に空き領域があることを覚えておいてください)? 変更された部分だけを実際に上書きしますか?
質問には十分な理由があります。最初のケースでは、ファイルを継続的に更新すると、システムが遅くなる可能性があります。2 番目のケースでは、高速になる可能性がありますが、多くのファイルに対して実行すると、ファイル システムが台無しになります。3 番目のケース、特にソリッド ステート ディスクを使用している場合、ファイルの同じ場所を何度も更新すると、ディスクのその部分が役に立たなくなる可能性があります。
実は、私の質問はここからです。ディスク セクターを過剰使用から守るために、ソリッド ステート ディスクは、さまざまな手法を使用してデータを使用頻度の低いセクターに移動することを読みました。stdio
しかし、関数はそのような状況をどのように正確に処理するのでしょうか?
お時間をいただきありがとうございます。:D