利用可能なCPU時間の保証

INTEGRITYの標準スケジューラでは、利用できるCPU時間がタスクとアドレス空間の両方に対して保証されます。重要なタスクやアドレス空間に(前もって割り当てた)必要なだけのCPU時間を、他のタスクやアドレス空間の状況に関わらず、常に提供することができます。

例として、同じ優先度のタスクAとBが存在するシステムで、タスクBがサブタスクB1とB2を生成する場合を考えてみましょう。

CPU時間比率 ※画像クリックで拡大図を表示

INTEGRITYでは、タスクAとBに対して使用CPU時間比率(INTEGRITYでは『重み(weight)』と呼びます)を設定し、それを保証することができます。ここではそれぞれ50%のCPU時間が前もって設定されているものとします。

Bから生成される2つのタスクB1とB2に対しても同比率のCPU時間が設定されている場合、Bに割り当てられた50%のCPU時間が分割され、3つのタスクB、B1、B2に等しく割り当てられます。

このようなタスクBでの動作が、タスクAのCPU時間に影響を与えることは一切ありません。つまり、他のタスクの状態に関わらず、タスクAのCPU時間リソースは保証されています。

こうした場合、他のRTOSでは、4つのタスクA、B、B1、B2のCPU使用時間を等しくせざるを得ないでしょう。

そうすると、設計段階で50%のCPU時間を見込んでいたタスクAに25%のCPU時間しか割り当てられないことになります。

この機能により、他のRTOSで見られる『Denial of Service(DoS)』による問題を防止することができます。また、不適切なシステム設計やバグなどがあっても、重要なシステム要素の信頼性が維持できます。