プロセスが2つの整数(64ビット/ 8バイト)のサイズの共有メモリを作成したとしましょう。共有メモリに基づくアトミック変数は、プロセス間コンテキストでどのように機能しますか?
共有メモリは、プロセスのスレッドだけでなく、その共有メモリにアクセスできるシステム上の他のプロセスでも使用できます。
おそらく、最初のプロセスの共有メモリは仮想アドレス空間を介してアドレスされるため、1の整数に対してアトミック演算(cmp交換)が実行されると、最初に処理されたコンテキストの仮想アドレスが使用されます。
同時に別のプロセスが最初の整数で何らかのアトミック操作を実行している場合は、独自の仮想アドレス空間も使用します。
どのようなシステムが実際に実際の物理アドレスに変換し、非常に一般的なPOVからこの状況でCPUがどのようにアトミック性の保証を提供しますか?
CPUが保証を提供しない可能性があるため、ターゲットOSを質問に追加するように編集することをお勧めします。 – user4581301
@ user4581301は、プロセッサに実装されたアトミック操作ではありませんか? OSはどう変わるのですか? –
**あなた自身の質問を好きではない** –