平成24年度 春期 午前Ⅱ 問7
オペレーティングシステム
待ち状態に遷移するもの
FIFOで処理されるメールボックスに関する操作で,タスクが待ち状態に遷移するものはどれか。
- ア受信待ちをしているタスクが存在するメールボックスに対して受信要求をしたとき
- イ受信待ちをしているタスクが存在するメールボックスに対して送信要求をしたとき
- ウメッセージが存在するメールボックスに対して受信要求をしたとき
- エメッセージが存在するメールボックスに対して送信要求をしたとき
答えと解説を見る
✓ これが正解ア受信待ちをしているタスクが存在するメールボックスに対して受信要求をしたとき
解説
受信待ちタスクがいる箱は空なので、受信要求した側も待ちます。
見分ける軸は、メールボックスにメッセージがあるか、受信を待つタスクがあるかの二つの状態です。受信待ちのタスクが存在するということは、メールボックスにメッセージが一つもないということです。そこへさらに受信要求をしたタスクも、受け取るメッセージがないので待ち状態に移り、FIFOの順で先に待っていたタスクの後ろに並びます。一方、メッセージがある状態での受信や、受信待ちのタスクがいる状態での送信では、メッセージがすぐ受け渡されるので、要求したタスクは待ちません。受け取るものがないときに受信すると待つ、と押さえましょう。
ほかの選択肢はなぜ違うのか
- イ受信待ちをしているタスクが存在するメール…:受信待ちのタスクがあるメールボックスに送信すると、そのメッセージは待っていたタスクへすぐに渡され、そのタスクの待ちが解かれます。送信したタスク自身は待つ必要がないので、待ち状態には移りません。
- ウメッセージが存在するメールボックスに対し…:メッセージが入っているなら、受信要求をしたタスクは先に届いた順で一番古いメッセージをその場で受け取って処理を続けます。手に入るものがある以上、待ちに入る理由はありません。
- エメッセージが存在するメールボックスに対し…:メッセージが存在するメールボックスに送信すると、新しいメッセージはFIFOの末尾に追加されます。一般的なメールボックスでは送信側はメッセージを置くだけで処理を続けるので、待ち状態には移りません。
出典:平成24年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)