大阪電気通信大学

ARM REMONにおける タスクの優先度継承セマフォの提案

概要

現在、日常でよく使用されている家電機器から人命にかかわる医療機器にまで組み込みシステムは使用されている。組み込みシステムでは、リアルタイム性を保証するためにリアルタイム OS が利用されることが一般的である。しかしながら、リアルタイム OS は自身の割り込みやリアルタイム OS のオーバーヘッドによってリアルタイム性を阻害する場合がある。そこでこの問題を解決するために我々は組み込みリアルタイム簡易モニタ REMONを提案した。現状の REMON では、セマフォによる排他制御を行っている。しかしながら、セマフォによる排他制御では優先度逆転問題が生じる恐れがある。セマフォを獲得している低優先度タスクによって高優先度タスクがセマフォ待ち状態に遷移する。この状態で中優先度タスクが処理を開始すると、中優先度タスクは低優先度タスクを実行可能状態へ遷移するため、低優先度タスクのセマフォ解放を待つ高優先度タスクも中優先度タスクの処理が完了するまで上限なく待たされることになる。これを優先度逆転問題と呼ぶ。そこで、本研究では ARM REMON における優先度継承セマフォの提案を行い、優先度逆転問題の解消を図る。

研究背景

現在、日常でよく使用されている家電機器から人命にかかわる医療機器にまで組み込みシステムは使用されている。組み込みシステムでは、リアルタイム性を保証するためにリアルタイム OS が利用されることが一般的である。しかしながら、リアルタイム OS は自身の割り込みやリアルタイム OS のオーバーヘッドによってリアルタイム性を阻害する場合がある。そこでこの問題を解決するために我々は組み込みリアルタイム簡易モニタ REMONを提案した。現状の REMON では、セマフォによる排他制御を行っている。しかしながら、セマフォによる排他制御では優先度逆転問題が生じる恐れがある。優先度逆転問題では、セマフォを獲得している低優先度タスクによって高優先度タスクがセマフォ待ち状態に遷移する。この状態で中優先度タスクが処理を開始すると、中優先度タスクは低優先度タスクを実行可能状態へ遷移するため、低優先度タスクのセマフォ解放を待つ高優先度タスクも中優先度タスクの処理が完了するまで上限なく待たされる問題がある。

研究目的

本研究では、REMON におけるタスクの優先度継承セマフォの機能を追加し、優先度逆転問題に対して提案した手法が有効か検証する。優先度逆転問題の解決策として、優先度継承優先度継承配列を作成した。優先度配列をもとに ISR を起動する形式し、優先度が逆転した際には、優先度を継承することで問題解消を図る。

研究内容

初期状態は停止状態から始まる。この状態の場合に割り込みが発生すると実行可能状態に遷移する。実行可能状態の中で最高優先度の割り込み処理が実行状態に遷移する。セマフォを獲得できない場合は待ち状態に遷移する。

セマフォを獲得している低優先度タスクにより、高優先度タスクがセマフォ待ち状態に遷移する。そして、この状態で中優先度タスクが処理を開始すると、中優先度タスクは低優先度タスクを実行可能状態へ遷移するため、低優先度タスクのセマフォ解放を待つ高優先度タスクも中優先度タスクの処理が完了するまで待ち状態に遷移してしまう。この時、中優先度タスクによる待ちがいつ終わるか不明瞭であるため深刻な状態を引き起こしてしまう恐れがあることが優先度逆転問題である。

本研究のそれぞれの場面のタスク優先度の変化を図に示す。図 11 に 3 つのタスクの優先度の初期値を示す。図 12に低優先度のタスクがセマフォを取得した後に高優先度のタスクがセマフォ開放待ちに遷移した際の優先度継承の様子を示す。図 13に低優先度タスクがセマフォを開放した際の優先度がもとに戻る様子を示す。これらの図では、セマフォを使用する高優先度、セマフォを使用しない中優先度タスク、セマフォを使用する低優先度タスクの現在の優先度をそれぞれ pri[0].curr_pri、pri[1].curr_pri、pri[2].curr_pri で表している。また、セマフォを使用する高優先度、セマフォを使用しない中優先度タスク、セマフォを使用する低優先度タスクの現在の優先度をそれぞれ pri[0].orig_pri、pri[1].orig_pri、pri[2].orig_pri で表している。

考察

検証の結果より優先度継承の機能を追加し、動作を検証を確認することができた。これにより優先度逆転問題に対しての解消することができた。しかしながら、本研究で提案した優先度継承機能では同一処理内での複数のセマフォ獲得時のデッドロックに対応できていない。また、優先度上限プロトコルを追加することで更なる優先度逆転問題に対して問題の改善につながると考えている

作者プロフィール

HT18A013 内海雄太

今回、研究した内容は南角先生が提案したREMONに優先度逆転問題を解消するための優先度継承機能を追加したものです

 

コメント