共有メモリ 【shared memory】 シェアードメモリ / 共用メモリ
概要
共有メモリ(shared memory)とは、コンピュータのメインメモリ(RAM)のうち、複数の主体によって共有される領域。実行中の複数のプログラム(プロセス)が共有する領域を指す場合と、複数のプロセッサやプロセッサコアが共有する領域を指す場合がある。プログラム間の共有メモリ
コンピュータ上で並行して実行されている複数のプロセスが等しくアクセス可能なメモリ領域を共有メモリという。プロセス間通信(IPC:Interprocess Communication)に用いられる。
あるプロセスがオペレーティングシステム(OS)から割り当てられた領域を他のプロセスに開放することで実現する。多くのOSにはそのためのAPIなどが用意されている。
同時に複数のプロセスがアクセスすると一貫性が失われる危険があるため、ロック機構など適切な排他制御を行う必要がある。プロセス間で高速に通信することができるが、同じコンピュータ内でしか通信できない制約がある。
プロセッサ間の共有メモリ
コンピュータ内に複数のマイクロプロセッサ(CPU/MPU)やプロセッサコアが内蔵されている場合、どのプロセッサからも等しくアクセス可能なメモリ装置を共有メモリという。
比較的プロセッサ数の少ないシステムで採用される方式で、一般的なソフトウェアをそのまま使用できるが、各プロセッサ内部にあるキャッシュメモリとの一貫性を保つのが難しく、性能向上の制約となりやすい。
システム全体で数百から数万のプロセッサを稼働させるスーパーコンピュータのような大規模環境では、共有メモリの他にプロセッサごと(あるいは何基かのプロセッサを実装したノードごと)に置かれる分散型のメモリが併用されることが多い。
(2020.4.13更新)