優先度継承とは?ゆうせんどけいしょう
優先度継承とは、排他資源を握っている側の優先度を、その資源を待っている最上位タスクの水準まで一時的に引き上げ、解放と同時に元へ戻すプロトコル。無関係な中優先度タスクの割込みで待ちが延び続ける事態を防ぎ、上位タスクの待ち時間を資源保持区間の長さだけに閉じ込められる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
排他制御を入れる以上、上位のタスクが下位のタスクの持つ資源を待つ場面は必ず生じる。その待ち自体は避けようがないが、待っている間に資源と無関係な中優先度タスクが下位側を追い越して走り続けると、待ち時間の上限が計算できなくなる。最悪応答時間を数値で示して安全性を根拠づける設計では、上限が求まらないことがそのまま破綻になるため、待ちを有界にする仕組みが要る。
具体例
TOPPERS/ASPやFreeRTOSのミューテックスはこの機構を備えており、同じ排他でも計数セマフォではなくミューテックスを選ぶ理由がここにある。POSIX準拠の環境では、pthread_mutexattr_setprotocolにPTHREAD_PRIO_INHERITを指定して有効化する。
試験での引っ掛け
得られるのは待ち時間の有界化であって、優先度逆転という現象そのものが消えるわけではない。資源に定めた上限優先度へ無条件に引き上げる優先度上限(プライオリティシーリング)とは方式が別で、どちらを問われているかを取り違えやすい。また効くのは所有者を持つミューテックスに限られ、所有者の概念がない計数セマフォで代用すると継承は働かない。
関連用語
出た過去問
出典:平成30年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問10(IPA)解説で登場
優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSにおいて、タスクの優先度逆転が発生する可能性があるのはどれか。
正解:排他制御
要点:優先度逆転は排他制御による資源待ちで発生する
優先度逆転は、低優先度タスクが共有資源のロック(排他制御)を保持したまま中優先度タスクにプリエンプトされ、その資源を待つ高優先度タスクが長時間ブロックされる現象である。つまり資源の排他制御がある場面でのみ起こる。対策としては優先度継承や優先度上限(プライオリティシーリング)プロトコルが使われる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。