12

unlinkfsync、およびrenameは、定義上アトミックであるものだけですか?

編集:アトミックとは、操作が成功して効果があるか、失敗して効果がないことを意味します。操作が失敗して効果があってはなりません。

明らかにカーネルがパニックに陥った場合、プログラムは操作の失敗のエラーを処理できませんが、この場合は失敗したことを考慮する必要があります

4

2 に答える 2

1

fsync(2)アトミックかどうかはわかりません。ファイルのバッファ キャッシュに 100 メガバイトのダーティがある場合、そのデータを書き出すのに数秒かかり、ディスクへの転送中にカーネルがクラッシュする可能性があります。おそらく、搭載されている DMA エンジンは 4 メガバイトの書き込みしか処理できません。おそらく DMA サポートがなく、CPU は 512 バイト ブロックを介してすべての書き込みをスケジュールする必要があります。

「アトミック」とはどういう意味ですか?

mkdirディレクトリがディスク上に存在し、親ディレクトリにリンクされているか、ディレクトリのデータ構造がまだ親ディレクトリにリンクされていないため、アクセスできません --> 存在しません。

同じことがにも当てはまります: 途中で完了しmount(2)たものを見つけるのは難しく、それが失敗した場合、マウント全体が失敗します: ファイルシステムがマウントされているか、マウントされていないかのいずれかです。mount(2)

umount(2)面白いです、それは怠惰に行うことができますが、一度アンマウントすると、open(2)orcreat(2)呼び出しには使用できません。

では、「アトミック」とはどういう意味ですか? :)

于 2011-03-08T12:08:19.383 に答える