mmap
/ msync
/を使用する場合munmap
、読み取り/書き込みはアトミックですか? (電源を切ったときにディスクが保留中の書き込みを終了すると仮定します)
1 に答える
2
複数のページまたは複数のディスク セクタを含む操作は、決して正確にアトミックではありません。
2 つの特定のものの間の一貫性を調査する方が役立つ場合があります。
たとえば、同じファイルを両方ともmmap(2)で処理している 2 つのプログラムまたはスレッド間では、それらはすでに一貫しており、これとmsync(2)
は無関係です。すべてmsync
は、カーネルが変更されたページを基礎となるストレージシステムに書き込む原因となります... mmap()を使用している同じシステム上の他のリーダーとライターに関しては、必要ではなく、役に立ちません。
別の機能 (共有ストレージまたは非 mmap I/O) を使用してアクセスを同期する場合は、実セマフォまたはインターロックが必要になります。msync() は役に立たないと思います。さらにサポートを提供するには、同期しようとしているものについて詳しく知る必要があります。
于 2013-02-11T00:25:23.770 に答える