shmget() と shmat() を使用したメモリ共有

shmget() と shmat() を使用したメモリ共有

shmget()共有メモリを使用して作成してプロセスに接続できますshmat()。 Ubuntuオペレーティングシステムで共有メモリを破壊して分離しないとどうなりますか?私が理解したように、システムが再起動されるまで物理メモリに存在し続けますが、なぜですか?つまり、複数の共有メモリブロックを作成して多くの共有メモリブロックに物理メモリをロードできますが、これにより物理メモリが非効率的に埋められます。 ? ?

答え1

実装の観点からは、Linuxが実装する方法であるRAMディスク内部のファイルシステムと大きく変わりません。

プログラムを終了する前に生成されたファイルを削除しないと、そのファイルは存在し続け、リソースを消費します。

SystemV SHMはほとんど使用されません。これを行う唯一の理由は、マッピングが匿名メモリによってサポートされ、変更時にディスク書き込みを生成せず、移植可能な方法で実行されることを保証するためです。

関連情報