I-27-4. リアルタイムシステムの設計と留意点

リアルタイムシステムの設計に必要な要素を解説する。具体的には、モジュール分割、処理分割による最適化、割り込み対応、処理時間・応答時間の見積り、処理待ちキュー設計、デバイスに対する高速応答処理の実装などについて触れる。

【学習の要点】

* リアルタイムシステムの設計手順としては、全体のシステムを複数のモジュールに分割した上で、個々のモジュールに対しタスクの分割をし、その上で共有資源(ファイル、セマフォ、など)の設計を行う。

* タスク分割の指針としては、システム全体で時間的に最も緊急度の高い処理(タイムクリティカル処理)に注目する。タイムクリティカルな処理を中心にタスク分割を進めていく。

図I-27-4. 設計手順の概略

 

【解説】

1) リアルタイムシステム設計

* 一般的なリアルタイムシステムの設計では、システムを実現する機能をタスクまで分割ていく。

- はじめに全体のシステムを複数のモジュールに分割する。それぞれのモジュールは機能に対応して分割される。

- 個々のモジュールの中身をタスクへと分割する。

- 共有リソース配分(ファイル、セマフォ、など)の設計を行う。

* タスク設計に関して絶対的な理論は存在しない。

* リアルタイム性を考慮する場合、割り込みハンドラなどを利用してタイムクリティカルな処理を中心にタスクの優先度を設定していく。

* タスクを起動するイベントは入出力のイベント、周期的なクロックイベント、他のタスクの処理によるイベントがある。こうした起動の要因ごとにタスクを分割することも指針として利用される。

2) デバイスプログラミング

* 割り込みハンドラの処理は、カーネルの設計によって異なる。割り込みが無い場合のみ高い性能を出せるカーネルや、割り込みがあっても極端に性能が落ちないカーネルなど様々である。

* また、カーネルインタフェースの設計によっては、割り込みハンドラからカーネルに対するシステムコールに制限をかける場合もある。

* デバイスドライバは入出力機能を実行する機能をタスクから独立する形で実装したソフトウェアである。

- 組み込み開発においてデバイスドライバを作成する機会はエンタプライズ系に比べて一般に多くなる。

- デバイスドライバはアプリケーションインターフェイスと割り込みハンドラのコンテキストから構成される。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。