text: 情報処理において共有メモリ（きょうゆうメモリ）とは、複数のプログラムが同時並行的にアクセスするメモリである。概要  複数のプログラム間の通信手段として使う場合と、単に複製を用意する冗長さを防ぐ目的の場合などがある。共有メモリはプログラム間でデータをやりとりする効率的手段である。文脈によって、それらプログラムが単一のプロセッサ上で動作する場合と複数の異なるプロセッサ群上で動作する場合がある。単一のプログラムの内部でメモリを使って通信する場合もあり、例えばマルチスレッドが典型的だが、仮想空間をもともと共有している場合は「共有メモリ」とは呼ばない。ハードウェアによる共有メモリ  コンピュータのハードウェアによる共有メモリは、マルチプロセッサシステムにおける複数のCPUがアクセスできるRAMの（通常）大きなブロックを意味する。共有メモリシステムでは、全プロセッサがデータを共有しているためプログラミングが比較的容易で、同じメモリ位置へのアクセスによって高速なプロセッサ間通信が可能である。問題は、CPUはなるべく高速なメモリアクセスを必要とするため、それぞれにキャッシュメモリを持っていることが多い点である。そのため、以下の2つの問題が生じる。CPU-メモリ間がボトルネックになりやすい。共有メモリ型コンピュータはあまりプロセッサ数を増やせない（CPUを増やしてもCPU数に比例して性能が強化されなくなる）。多くの場合、10個かそれ以下のプロセッサ数である。キャッシュコヒーレンシ問題。あるキャッシュ上であるメモリ位置の情報が更新され、それを他のプロセッサが必要とする場合、その更新を他のプロセッサにも反映させなければならない。さもないとそれぞれのプロセッサが一貫していないデータを使って動作することになる。そのためのプロトコルをコヒーレンシプロトコルと呼び、それがうまく機能すれば複数のプロセッサが高速に共有メモリ（上の情報）にアクセスできるようになる。しかし一方で、コヒーレンシプロトコルがオーバーヘッドとなり、性能のボトルネックになることもある。ボトルネック問題を和らげる技術として、クロスバースイッチ、、HyperTransport、CPUバスの分離（フロントサイドバスとバックサイドバス、等）などがある。共有メモリ以外の方式としてや分散共有メモリがあるが、どちらにも似たような問題がある。また、NUMAも参照。GPU内の共有メモリ