pulpul 日本の試験

エンベデッドシステムスペシャリスト 概念書 · 組込み・コンピュータシステム

リアルタイムOSのスケジューリング

リアルタイムOSのスケジューリングは、複数のタスクに CPU を割り当てる順序と時間を決め、各タスクを締切りまでに処理させる仕組みである。実行するタスクを選ぶスケジューラと、選ばれたタスクに CPU を実際に渡すディスパッチャが役割を分担する。周期タスクの締切りを守れるかを、方式ごとの判定式や利用率で確かめることが設計と試験の要点となる。

ディスパッチャとコンテキストの扱い

ディスパッチャは、スケジューラが選んだプロセスの情報を主記憶からCPUに設定し、実行を開始させる。 実行するプロセスを優先順位などに基づいて選ぶのは短期スケジューラの役割であり、ディスパッチャは選択後にCPUの制御を渡す。 タイムクウォンタムの経過をOSに知らせるのはタイマ割込みの働きであり、ディスパッチャの仕事ではない。

リアルタイムOSでは、アプリケーションのタスクはタスクごとに固有のコンテキストを持ち、カーネルは各タスクのコンテキストとは独立した自身のコンテキストで動く。 割込み処理は、割込みごとに実行中のコンテキストを退避したうえで個別のコンテキストで実行される。

実行中のタスクがプリエンプションによってCPUを奪われても、実行を続ける条件が整っていれば、タスクは実行可能状態に戻って次の割当てを待つ。 休止状態は明示的に実行対象から外れた状態、終了状態は処理を終えた状態、待ち状態は入出力などの条件を待つ状態であり、プリエンプションによる一時的なCPUの明け渡しとは区別される。

スケジューリング方式の基本

ラウンドロビン方式は、実行可能なプロセスを待ち行列の順に取り出し、タイムクウォンタムずつ実行する方式である。時間を使い切ってもプロセスが終了しなければ、待ち行列の末尾に戻して次の順番を待たせる。 この方式は優先度によってプロセスを選ぶものではなく、処理時間に比例して時間量を変えるものでもない。

優先度の高いプロセスが到着すると実行中のプロセスを中断する方式は、優先度に基づくプリエンプティブなスケジューリングであり、ラウンドロビンとは選択の基準が異なる。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む