平成21年度 秋期 午前 問19
ソフトウェア
実行状態に関する問題
リアルタイム OS のマルチタスク管理機能において,タスク A が実行状態から実行可能状態へ遷移するのはどの場合か。
- アタスク A が入出力要求のシステムコールを発行した。
- イタスク A が優先度の低いタスク B に対して,メッセージ送信を行った。
- ウタスク A より優先度の高いタスク B が実行状態となった。
- エタスク A より優先度の高いタスク B が待ち状態となった。
答えと解説を見る
✓ これが正解ウタスク A より優先度の高いタスク B が実行状態となった。
解説
優先度の高いタスクに割り込まれ、順番待ちへ戻ります。
まず二つの状態の違いを押さえます。実行状態は、そのタスクが実際に処理装置を使っている状態です。実行可能状態は、走る準備はすっかり整っているのに、処理装置が空くのを待って順番に並んでいる状態を指します。この二つの間の移り方を考えると、実行状態から実行可能状態へ落ちるのは、処理装置を取り上げられたときだけだと分かります。優先度に基づいて割り付ける方式では、より優先度の高いタスクが走れるようになった瞬間に、いま動いているタスクは処理装置を明け渡します。ここで大事なのは、明け渡した側が何かの到着を待っているわけではない、という点です。準備は整ったままなので、待ち状態ではなく、順番待ちの列である実行可能状態へ移ります。自分の都合で降りるのか、外から押しのけられるのかで、行き先が変わると覚えておくとよいでしょう。
ほかの選択肢はなぜ違うのか
- アタスク A が入出力要求のシステムコール…:入出力要求のシステムコールを発行した場合です。結果が返ってくるまで先へ進めないので、順番待ちの列に並ぶのではなく、事象の到着を待つ状態のほうへ移ります。
- イタスク A が優先度の低いタスク B に…:優先度の低いタスクへメッセージ送信を行った場合です。送った側は処理装置を明け渡す理由がないので、そのまま走り続けます。状態が動くのは、受け取って走れるようになった相手の側です。
- エタスク A より優先度の高いタスク B …:優先度の高いタスクが待ち状態となった場合です。じゃまをしていた相手が退くので、むしろ自分に順番が回ってくる向きの出来事であり、処理装置を手放す側の動きにはなりません。
出典:平成21年度 秋期 応用情報技術者試験 午前 問19
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)