エンベデッドシステムスペシャリスト 2011年 午前2 問08
問題文
タスクが発行するシステムコールと発行後の状態遷移先との組合せとして、起こり得るものはどれか。

選択肢
ア:
イ:
ウ:(正解)
エ:
🔒 解説は解答すると表示されます
システムコール後のタスク状態遷移【午前2解説】
正解の理由
ウの「メールボックスへの送信」では、送信先のメールボックスに空きがあれば、送信したタスクは処理を完了できます。その後、送信先で待っていたタスクが実行可能状態になり、優先度などの条件によっては送信元のタスクが実行状態から実行可能状態へ移ることがあります。
したがって、「メールボックスへの送信」の発行後に、発行したタスクが「実行可能状態」へ移る組合せは起こり得ます。
解法ステップ
- システムコールが、タスクを待ち状態にする処理かどうかを確認します。
- イベントや資源が得られるまで待つ処理では、条件が満たされるまでタスクは待ち状態になります。
- メールボックスへの送信のように、待たずに完了できる処理では、タスクは実行を続けられます。
- 送信によって別のタスクが実行可能になり、スケジューリングが行われれば、送信元タスクが実行可能状態へ移る場合があります。
選択肢別の誤答解説
-
ア:イベントフラグ待ち → 実行可能状態
イベントフラグ待ちは、指定した条件が満たされるまでタスクを待ち状態にする処理です。待ちが発生する場合の遷移先は実行可能状態ではありません。 -
イ:セマフォのP操作 → 実行可能状態
P操作は、セマフォ資源を取得する処理です。資源が不足して取得できない場合、タスクは待ち状態になります。「待ち」が必要な状況での遷移先は実行可能状態ではありません。 -
ウ:メールボックスへの送信 → 実行可能状態
送信処理が完了した後、送信先で待っていたタスクが実行可能になると、優先度などに応じて送信元タスクが実行可能状態へ移ることがあります。このため、起こり得る組合せです。 -
エ:メモリ返却 → 待ち状態
メモリを返却する処理は、通常、タスクを待ち状態にする処理ではありません。メモリ返却後に待ちが発生するとは限らないため、この組合せは適切ではありません。
よくある誤解
-
実行可能状態と待ち状態を混同すること
実行可能状態は、CPUが割り当てられれば実行できる状態です。待ち状態は、イベントや資源などの条件が満たされるまで実行できない状態です。 -
システムコールを発行したタスクだけに注目すること
メールボックスへの送信では、受信側で待っていた別のタスクが実行可能になることがあります。その結果、スケジューリングによって送信側の状態も変化し得ます。 -
P操作は必ず待ち状態になると思い込むこと
P操作は資源を取得できなければ待ちますが、資源があれば取得できます。システムコールの性質と、そのときの資源の状況を分けて考えることが大切です。
補足コラム
タスクの主な状態は、実行状態、実行可能状態、待ち状態です。実行可能状態のタスクは実行する条件が整っていますが、CPUを使用中とは限りません。優先度の高いタスクが実行可能になるなどしてスケジューラが切り替えると、実行中だったタスクが実行可能状態へ戻ることがあります。
FAQ
Q. メールボックスへの送信を行うと、送信元タスクは必ず実行可能状態になりますか。
A. 必ずではありません。送信後もそのタスクが実行を続ける場合があります。別のタスクが実行可能になり、スケジューラが実行を切り替える状況では、送信元タスクが実行可能状態へ移ることがあります。
A. 必ずではありません。送信後もそのタスクが実行を続ける場合があります。別のタスクが実行可能になり、スケジューラが実行を切り替える状況では、送信元タスクが実行可能状態へ移ることがあります。
Q. 待ち状態から実行可能状態へ移るのは、どのようなときですか。
A. 待っていたイベントが発生したときや、必要な資源が利用可能になったときです。その後、CPUが割り当てられると実行状態になります。
A. 待っていたイベントが発生したときや、必要な資源が利用可能になったときです。その後、CPUが割り当てられると実行状態になります。
関連キーワード: タスク状態、実行可能状態、待ち状態、システムコール、メールボックス、セマフォ

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

