OSのスケジューリングと割込み
OSのスケジューリングとは、実行可能なタスクやジョブに対してCPUを割り当てる順序と時間を決める機能である。割込みは、入出力の完了やタイマの満了などの事象をCPUに知らせ、実行中の処理を中断して対応する処理へ移らせる仕組みである。両者はいずれもCPUを複数の処理で使い分けるための仕組みであり、その違いを理解することが試験では重要になる。
タスクの状態とプリエンプション
タスクは、実行中、実行可能、待ち、休止、終了といった状態を遷移する。プリエンプションとは、実行中のタスクからCPUを強制的に取り上げ、別のタスクにCPUを割り当てる操作のことである。プリエンプションによって中断されたタスクは、実行を続ける条件が整っていれば実行可能状態に戻り、次のCPU割当てを待つ。
この遷移は、タスクが処理を完了して終了する場合や、入出力やイベントの完了を待って待ち状態に入る場合とは性質が異なる。プリエンプションはCPUの割当てを切り替える操作であり、タスクの終了や待ちを意味するものではない。この区別は、リアルタイムOSの状態遷移を問う問題の基本となる。
到着順実行とターンアラウンドタイム
多重度が1であるシステムでは、同時に実行されるジョブは一つだけであり、到着順にジョブが一つずつ実行される。あるジョブの開始は、直前のジョブの終了時刻以降になり、待ち時間が加わる点が計算の出発点となる。
ターンアラウンドタイムは、ジョブが到着してから実行を終了するまでの時間であり、終了時刻から到着時刻を引いて求める。終了時刻そのものを答えとすると、到着時刻より前の時間を含めてしまうため誤りになる。処理時間が同じでも、待ち時間の長さによってターンアラウンドタイムは大きく変わる。
固定優先度プリエンプティブ方式の応答時間
周期的に起動されるリアルタイムタスクでは、周期内に処理を完了できるかが重要になる。固定優先度のプリエンプティブ方式では、高優先度のタスクによる妨害を含めた最悪応答時間を反復計算で求め、その値が周期以内に収まるかを確かめる。応答時間は、自タスクの実行時間に、高優先度タスクが割り込む回数分の実行時間を加えた値として求まる。
この節の続き
- 割込み発生時の処理の手順
- 実務の場面での応用
- 試験で問われやすい区別
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む