IO書き込みはプロセスよりも長く続くことができますか?

IO書き込みはプロセスよりも長く続くことができますか?

私が知っている限り、プロセスがファイルに書き込むと、システムコールが開始されます。必要な情報のうち、書き込むデータが埋め込まれたユーザ空間のバッファへのポインタが必要です。

プロセスが2つのスレッドを生成するシナリオを考えてみましょう。 1つのスレッドは、10MBを書き込むためにシステムコールを実行します。オペレーティングシステムがIO要求を処理している間、他のスレッドは誤ったメモリアクセスを実行し、分割エラーを引き起こします。この場合、書き込み要求はどうなりますか?特に、プロセスメモリが解放される前に書き込み操作が発生しないか完了しないことを保証できますか? ioリクエストがたったの64ビット整数の場合、答えは変わりますか?

ベストアンサー1

現在のファイルシステムでの作業は中断できません(ネットワークファイルシステムを除く)。

バラよりTASK_KILLABLE[LWN.net、2008]。

既存のブロックベースのファイルシステムを使用すると、保証が満たされると予測できます。TASK_KILLABLEネットワークファイルシステムの外部では広く採用されていないと思います。しかし、私はこれがいつも正当な理由なくそうだと仮定したくありません。

アプリケーションがネットワークファイルシステムで実行できる場合、強力な保証があると言うのは難しいです。 (通常、例えばメモNFS3 は POSIX ファイルシステムのすべての期待に従わない。)。

ストレージ技術は進化し続けています。たとえば、ファイルシステムが Linux ブロック階層のアーキテクチャに基づいて特定の方法で動作すると仮定すると、将来のアプリケーションが Linux で実行されると驚くことがあります。バイトアドレス指定可能メモリベースのファイルシステム

おすすめ記事