サイズが5 MBのファイルがあるとします。私はCの書き込みモードでそれを開き、ちょうど5MBの迷惑データでそれを埋めます。以前に使用されていたディスクセクタと同じディスクセクタが上書きされるのですか、OSは新しいデータセクタを選択しますか?ファイルを上書きするときに書き込まれるセクタは?
1
A
答えて
4
ファイルシステムによって異なります。
古典的には、答えは「はい、同じセクターが新しいデータで上書きされる」でしょう。
ジャーナルファイルシステムでは、答えが異なる場合があります。フラッシュドライブシステムでは、その答えはほぼ確実に「ノー」になります。現在の書かれたセクターを消耗させないために、新しいセクターが書かれます。
3
ファイルシステムは、それが望むすべてのことを行うことができます。しかし、どんな実際のファイルシステムでも、同じセクターにデータを書き戻します。
イメージもしそうでなければ。あなたがファイルに書き込むたびに、ファイルシステムは新しい空きセクタを見つけ、そのセクタに書き込んだり、新しいセクタを指すようにファイルのファイルシステムメタデータを更新する必要があります。これはまた、恐ろしいファイルの断片化を引き起こします。なぜなら、隣接する5MBファイルの中央に単一のセクタを書き込むと、断片化するためです。同じセクターに書き戻すほうがはるかに簡単です。
それはフラッシュのウェアレベリングをサポートするように設計されたので、私は考えることができる唯一の例外はJFFS2です。
これで、ファイルシステムは同じセクタに書き込みますが、ディスクハードウェアは必要な場所に書き込むことができます。実際には、SSD /フラッシュドライブでは、wear levelingを処理するためのハードウェアは、ほぼ別のセクタにデータを書き込むことが保証されています。しかし、それはOS /ファイルシステムに対して透過的です。 (ハードドライブでも可能です(sector sparing)
関連する問題
- 1. ファイルに書き込むときに上書きされる既存のファイルの内容を避ける
- 2. csvファイルに書き込むとexcelで間違って書き込まれる
- 3. ファイルを上書きしてファイルを上書きする
- 4. Bashスクリプトは上書きせずに書き込みますか?
- 5. ファイルに書き込むことはできませんが、テキストに書き込むことができます
- 6. UNIXファイルの書き込みと書き込み以外の書き込み
- 7. サーバー上のXMLファイルに書き込む
- 8. ファイルに書き込むときのファイルセグメンテーション
- 9. ファイルに書き込むときのUnicodeEncodeError
- 10. PERL:入力ファイルに書き込む(元のファイルを上書きしないで)
- 11. 書き込みキャッシュポリシーに書き込み/フェッチを書き込む
- 12. エラー:XMLファイルを書き込むとき
- 13. ファイルへの書き込みと書き込み
- 14. テキストのファイルへの書き込みと書き込みR
- 15. Python:ファイルへの書き込みと書き込みエラー
- 16. シリアライゼーションとファイル書き込み
- 17. スレッドとファイル書き込み
- 18. 前のデータを上書きせずにファイルにXMLを書き込む
- 19. ファイルに書き込まれたsyslog()メッセージ
- 20. オブジェクトをファイルに書き込むときにアプリケーションがクラッシュする
- 21. openpyxlで古いコンテンツを上書きせずにExcelファイルに書き込む
- 22. Formatterでファイルに書き込むことはできますか?
- 23. Mifare Classic 1kのセクタを上書きされたパーミッションビットで復旧します
- 24. データを上書きせずにfirebaseに書き込む。 Swift
- 25. 上書きせずにExcelにデータを書き込む方法
- 26. ファイルに書き込むときにターミネータを除外します
- 27. Uglifyjsはファイルを上書きします
- 28. Javaプログラムは書き込まれた後にファイル書き込みを使用できません
- 29. C#:.Configプログラムフォルダにファイルを書き込んで問題を書き込みます。
- 30. Fortranで上書きせずに既存のファイルに書き込む
必ずしもそうである必要はありません。なぜそれは重要ですか?これは純粋に理論上の質問ですか、あるいはあなたが解決しようとしている問題がありますか?ファイルシステムは、抽象化を意図しています。 –