2011-06-27 7 views
1

私は、共有メモリに取り組んし、この質問は、私の心に来たので、専門家から尋ねると考えた:メモリを共有するプロセスの1つが強制終了されると、共有メモリはどうなりますか?

  1. メモリを共有するプロセスのいずれかが殺されている場合、共有メモリにどうなりますか?私たちが普通殺すよりも強制殺しをするとどうなりますか?

  2. 私たちが共有メモリに使用するメカニズムに依存していますか?

私はWindowsで作業しています。

+1

OS *は、プロセスがどのように終了するかにかかわらず、制御するすべてのリソース(ハンドル、ソケット、shm、メモリなど)*をクリーンアップする必要があります。 OS外の技術では、このような保護がない場合があります。 –

答えて

1

他のプロセスの他の少なくとも1つのスレッドがファイルマッピングのオープンハンドルを持っていれば、共有メモリは元のままであると思います。

+0

これは、別のプロセスが他のプロセスの状態に関係なく共有メモリブロックを使用できることを意味しますか?言い換えれば、プロセスは共有メモリブロックにアクセスする際に相互依存性を持たないでしょうか? – bayCoder

+1

共有メモリは同時実行制御を課しません。安全なアクセスを確保するのはプロセス/スレッドの責任です。多くの場合、このためにミューテックスオブジェクトを使用します。ミューテックスを保持しているプロセスが壊れた場合、ミューテックスは他の人によって報告されたように放棄された状態になります。 – seand

関連する問題