基本情報技術者試験「セマフォ」の問題
OSの排他制御で用いるセマフォにおいて、資源を確保しようとするP操作の動作として最も適切なものはどれか。
アセマフォ値を1だけ増やし、待機している他のプロセスがあればその一つを待ち行列から起こして再開させる
イセマフォ値を変えずに現在値を読み取って呼出し元へ返すだけである
ウセマフォ値を1だけ減らし、結果が負になる場合はそのプロセスを待ち状態にする
エセマフォ値を初期値へ戻し待機列を一括で解放する
正解
ウ.セマフォ値を1だけ減らし、結果が負になる場合はそのプロセスを待ち状態にする
P操作(wait)は資源獲得を表し、セマフォ値を1減らす。減算後に値が負になれば利用可能資源がないため、そのプロセスを待ち状態にして待ち行列につなぐので正しい。
?選択肢ごとの解説
ア ×セマフォ値を1増やし待機プロセスを起こすのはV操作(signal)の動作であり、資源の解放側でありP操作とは逆である。
イ ×値を変えずに読み取るだけでは資源の確保も解放も行えず、排他制御として機能しないためセマフォ操作の定義に反する。
ウ ○P操作(wait)は資源獲得を表し、セマフォ値を1減らす。減算後に値が負になれば利用可能資源がないため、そのプロセスを待ち状態にして待ち行列につなぐので正しい。
エ ×初期値へ戻して待機列を一括解放する操作はセマフォの初期化や強制リセットに近く、1件ずつ資源を確保するP操作の動作ではない。
✎くわしく
セマフォは利用可能資源数を表す整数変数で、P操作(減算・必要なら待機)とV操作(加算・必要なら起床)の対で排他と同期を実現する。減算と判定はアトミックに行う必要があり、これを怠ると競合状態を生む。
✓本番での押さえどころ
試験のコツ
Pはオランダ語proberen(試す=獲得を試みる)、Vはverhogen(増やす=解放)に由来する。『P=Pull(取る・減)』と語呂で固定すると間違えにくい。
覚え方
Pは減算で『資源プールから引く』、Vは加算で『資源をValueとして戻す』と数の増減で覚える。
よくある誤り
P操作とV操作を取り違える誤りが最頻出で、『P=減らす=確保』『V=増やす=解放』の対応を逆にしてしまう。
ソフトウェアの他の問題
OS(オペレーティングシステム)が担う最も中心的な役割を説明したものはどれか。実行状態のタスクが、自らの入出力要求の完了を待つために移る状態はどれか。3つのタスクP1・P2・P3が時刻0に同時に到着し、処理時間はそれぞれ8・4・6である。FCFS(到着順)方式でP1→P2→…4つのタスクが時刻0に同時到着し、処理時間はそれぞれ6・2・8・4である。処理時間の短い順に実行するSJF(ノンプリエンプテ…3つのタスクP1・P2・P3が時刻0にこの順で実行可能列に並ぶ。処理時間はP1=5・P2=3・P3=7で、タイムクウォンタム…4つのタスクPA・PB・PC・PDが時刻0に同時到着する。処理時間はPA=6・PB=2・PC=4・PD=8で、優先度はPB・…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0217