メインコンテンツへ
ソフトウェアOS実践

ミューテックス(Mutex)とセマフォ(Semaphore)の違いとして最も正しいものはどれか。

ア.ミューテックスはロックしたスレッドのみがアンロックできる相互排除ロックで、セマフォは複数リソースの同時アクセス数を制御できるカウンタである正解
イ.ミューテックスは複数スレッドが同時にロックできるが、セマフォは1スレッドのみがロックできる
ウ.ミューテックスはOSレベルのみで使用でき、セマフォはユーザ空間でしか使えない
エ.ミューテックスとセマフォは完全に同等であり、どちらも同じ用途に使用できる

解説

ミューテックスは「マスターキー方式のトイレ」。鍵をかけた人だけが開けられる(所有権あり)。セマフォは「駐車場の空き台数カウンター」。満車(0)になると入れないが、出た分だけまた入れる。駐車場は「誰でも空いた枠に入れる」から、ミューテックスより柔軟に複数アクセスを制御できる!

なぜ ア が正解か

ミューテックスの特徴:①バイナリ(0か1)②所有権あり:ロックしたスレッドだけがアンロック可能③相互排除(Critical Section保護)に使う。セマフォの特徴:①カウンタ(0以上の整数)②所有権なし:異なるスレッドがsignal(V操作)可能③カウンタ=n→n個の同時アクセスを許可(バイナリセマフォ=ミューテックスに似るが所有権がない)。DBコネクションプール管理などにセマフォが向く。

なぜ イ は間違いか

逆。ミューテックスは1スレッドのみが保持(相互排除)。セマフォはカウンタ値まで複数スレッドが同時に通過できる。

なぜ ウ は間違いか

ミューテックスもセマフォも、OSレベル(カーネル空間)でもユーザ空間でも実装・使用できる。このような制限は存在しない。

なぜ エ は間違いか

同等ではない。所有権、カウンタの有無、デッドロック特性(ミューテックスは所有スレッドがクラッシュするとデッドロック危険)など重要な違いがある。用途も異なる。

出典: AI生成問題(学習用)