エンベデッドシステムスペシャリスト 2019年 午前2 問07
問題文
RTOSを用いたシステムにおいて、優先度逆転の原因となるものはどれか。
選択肢
ア:優先度の高いタスクAが優先度の低いタスクBの実行に必要なリソースを占有しているが、タスクBはタスクAに必要なリソースを占有していない。
イ:優先度の低いタスクBが優先度の高いタスクAの実行に必要なリソースを占有しているが、タスクAはタスクBに必要なリソースを占有していない。(正解)
ウ:優先度の低いタスクBと優先度の高いタスクAが、互いに他タスクが必要なリソースを占有し合いデッドロックとなっている。
エ:優先度の低いタスクBのクリティカルセクション実行中は、他の処理に対して割込み禁止の排他制御を行う。
🔒 解説は解答すると表示されます
優先度逆転の発生条件【午前2解説】
正解の理由
優先度逆転とは、優先度の高いタスクが、優先度の低いタスクの処理完了を待たされる現象です。
イでは、優先度の低いタスクBが、優先度の高いタスクAの実行に必要なリソースを占有しています。そのため、Aはリソースが解放されるまで実行できず、Bの処理完了を待つことになります。これが優先度逆転の原因です。
解法ステップ
- 優先度逆転は、優先度の高いタスクが低いタスクに処理を妨げられる状況だと確認します。
- 高優先度タスクAが必要とするリソースを、低優先度タスクBが占有している選択肢を探します。
- その条件に当てはまるイを選びます。
選択肢別の誤答解説
- ア:優先度の高いタスクAが、優先度の低いタスクBに必要なリソースを占有しています。Bが待たされる状況であり、高優先度のAが低優先度のBに妨げられる優先度逆転とは逆です。
- イ:低優先度のBが、高優先度のAに必要なリソースを占有しています。AがBの処理完了を待つため、優先度逆転が起きます。
- ウ:互いに相手の必要なリソースを占有している状態は、デッドロックを説明しています。優先度逆転とは別の問題です。
- エ:割込み禁止によって割込み処理が遅れる可能性はありますが、ここではタスク間のリソース占有による優先度逆転を説明していません。
よくある誤解
- 高優先度タスクが低優先度タスクを待つだけで、常に優先度逆転になるわけではありません。 低優先度タスクが高優先度タスクの必要なリソースを占有していることがポイントです。
- 優先度逆転とデッドロックは別の現象です。 優先度逆転はタスクが待たされる現象で、デッドロックは複数のタスクが互いに待ち続けて処理が進まなくなる状態です。
- 優先度逆転は、優先度の低いタスクが意図的に高優先度タスクより優先されることではありません。 リソースの占有によって、結果的に高優先度タスクの実行が妨げられます。
補足コラム
優先度逆転を抑える方法として、優先度継承があります。高優先度タスクが待っているリソースを占有しているタスクの優先度を、一時的に引き上げる方式です。これにより、低優先度タスクが処理を早く終えてリソースを解放しやすくなります。
FAQ
Q. 低優先度タスクBがリソースを解放すれば、優先度逆転は解消しますか?
A. はい。Bがリソースを解放すれば、待っていたAが実行できるようになります。ただし、Bの処理が別のタスクに妨げられて長引くと、Aの待ち時間も長くなる可能性があります。
A. はい。Bがリソースを解放すれば、待っていたAが実行できるようになります。ただし、Bの処理が別のタスクに妨げられて長引くと、Aの待ち時間も長くなる可能性があります。
関連キーワード: 優先度逆転、RTOS、タスク、リソース、クリティカルセクション、優先度継承、デッドロック

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

