たとえば、マルチスレッド プログラムでは、グローバル変数、揮発性変数、extern 変数は、一度に複数のスレッドからアクセスできるため、クリティカル セクションに入る可能性があります。また、shmget() は共有メモリを割り当てます。ユーザー空間とカーネル空間の両方で、他のすべてのメモリ タイプがクリティカル セクションになる可能性があることを知りたいです。
3 に答える
これらのリンクをチェックして、実際のシステムで動作している共有メモリ領域とクリティカルセクションについてよく理解してください。
bcook.cs.georgiasouthern.edu/cs523/critical.htm
blogs.msdn.com/b/larryosterman/archive/2005/08/24/455741.aspx
ibm.com/developerworks/linux/library/l-linux-synchronization/index.html
共有メモリは通常、クリティカル セクションに含まれます。理由は、共有メモリが複数のスレッドから同時にアクセスできるためです。一度に 1 つのスレッドだけが特定の共有メモリにアクセスできるようにするために、クリティカル セクションが使用されます。
共有メモリがさらに分類されるかどうかはわかりません。
異なる概念について話している場合、共有メモリは異なる場合があります。つまり、共通のデータ、たとえばキューを使用する 2 つのプロセスでは、変更/追加/削除時に重要なセクションを「処理する」必要があります。スレッドに関しては、スタックとコード セグメントを除くすべてが共有されるため、理論的には、メイン プロセスによって到達される各データは、それらのスレッド間の共有メモリです。