平成27年度 春期 午前Ⅱ 問7
オペレーティングシステム
リアルタイムOSに関する問題
優先度に基づくスケジューリングを行うリアルタイムOSを用いたシステムで,タスクの状態遷移を計測したところ,図の結果を得た。タスクが待ち,実行可能,実行の三つの状態をもつとき,(A),(B),(C)に当てはまるタスクの状態の組合せとして,適切なものはどれか。
タスクの状態遷移の計測結果:
| タスク | 区間1 | 区間2 | 区間3 |
|---|---|---|---|
| タスク1(優先度 高) | 実行 | (A) | (A) |
| タスク2(優先度 中) | 実行可能 | 実行 | (B) |
| タスク3(優先度 低) | 実行可能 | 実行可能 | (C) |
区間1〜3は原典に無い名(点線で区切った時間を左から順に呼んだ)。原典ではタスク1の(A)は区間2〜3にまたがる1つの枠,タスク3の実行可能は区間1〜2にまたがる1つの枠。
選択肢は原典では(A)・(B)・(C)の表。
- ア(A):実行可能 / (B):実行 / (C):待ち
- イ(A):実行可能 / (B):待ち / (C):実行
- ウ(A):待ち / (B):実行可能 / (C):実行
- エ(A):待ち / (B):待ち / (C):実行
答えと解説を見る
✓ これが正解エ(A):待ち / (B):待ち / (C):実行
解説
高い優先度のタスクが待ちでない限り、低いタスクは実行されません。
優先度に基づくスケジューリングでは、実行可能状態のタスクのうち最も優先度の高いものが実行状態になります。この規則を、時間軸を三つに区切った区間ごとに当てはめます。2番目の区間では優先度が中のタスク2が実行しています。もしタスク1が実行可能なら、優先度の高いタスク1が実行されるはずなので、(A)は待ちです。3番目の区間でもタスク1は待ちのままです。ここで(C)が実行で(B)が実行可能だとすると、優先度の高いタスク2を差し置いて低いタスク3が動くことになり、規則に反します。よって(B)は待ち、(C)は実行です。実行中のタスクより優先度の高いタスクは全て待ち状態にある、と確かめるのが解き方です。
ほかの選択肢はなぜ違うのか
- ア(A):実行可能 / (B):実行 / …:タスク1を実行可能としたまま、優先度が中のタスク2を実行させる組合せです。優先度の高いタスク1が実行可能であれば先にそちらが実行されるので、2番目の区間でタスク2が実行している図と食い違います。
- イ(A):実行可能 / (B):待ち / …:タスク1を実行可能として、優先度の低いタスク3を実行させています。実行可能な高い優先度のタスクを残したまま低いタスクが動くことはなく、2番目の区間でタスク2が実行している図とも合いません。
- ウ(A):待ち / (B):実行可能 / …:タスク1を待ちとした点は合っていますが、タスク2を実行可能のまま、タスク3を実行させています。優先度が中のタスク2が実行可能なら、低いタスク3より先にタスク2が実行されるはずです。
出典:平成27年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)