12/05/22 10:53:33.83 1cxhPa0y
>>682
今時のファイルシステムは、ファイルの内容を書き換える場合に、
データブロックをそのまま使って中身だけ書き換えるなんてことはしない。
理由はトランザクション処理におけるクリティカルセクションが長くなるから。
1. 古いデータだけしかない状態
2. 新しいデータを空いているブロックに書き込む
3. 古いデータも新しいデータも共存していて、ただしメタ情報は古いデータを指している状態
4. 新しいデータを指すようににメタ情報を書き換える
(メタ情報はすごく小さいのでクリティカルセクションを小さく出来る)
3(または2)の段階でクラッシュしても、古い状態は完全に残っている。
実際にはさらにインテントリストを使って、再起動後に更新をリプレーする工夫がある。
データベースのトランザクション処理を勉強すると良い。