OSEK
出典: フリー百科事典『ウィキペディア(Wikipedia)』
OSEK(Offene Systeme und deren Schnittstellen fur die Elektronik im Kraftfahrzeug, 英語ではOpen Systems and the Corresponding Interfaces for Automotive Electronics, オーゼック)は、1993年、ドイツの自動車産業において自動車制御を行うECUで用いるプログラムの業界標準作成を目標として設立されたプロジェクト。 また、そのプロジェクトで規定したオペレーティングシステム仕様。
のちに、フランス自動車産業におけるOSEKと同様のプロジェクトであったVDXと協調路線をとり、OSEK/VDXとして発展。
1995年10月 OSEK/VDXの仕様を提示。
2005年現在、車載機器制御用OSの国際標準 ISO 17356シリーズとしてISOが発行している。
目次 |
[編集] 主な機能
[編集] タスク管理機能
OSEKにおけるタスクは、他の多くのオペレーティングシステムにおけるスレッドと等価であり、アプリケーション内におけるプログラムを並列実行する単位である。OSEK/VDX仕様のOS上で動作するアプリケーションは、0個以上のタスクから構成する。タスクには、基本タスクと拡張タスクがあり、拡張タスクは WaitEvent システムコールにより待ち状態に遷移できる点が異なる。
[編集] アプリケーションモード
アプリケーションモードはOSが起動する際にオペレーションモードを選択する機能である。OS起動後はアプリケーションモードを変更することはできない。
[編集] 割り込み処理機能
OSEKにおけるISR(割り込みサービスルーチン)には、OSのサービスを使用しないISR1と、システムコールを呼び出すことが出来るISR2がある。また、割り込みの禁止・許可を制御する機能も有している。
[編集] イベント制御機能
イベントはタスク間の同期を取るための仕組みである。拡張タスクで用意している。
[編集] リソース
OSEKで規定されるリソースとは、タスク若しくはISRの優先度を上げるためのシステムオブジェクトである。 1つのリソースを複数のタスクで共有することで、共有メモリアクセスの排他制御が可能となる。
[編集] アラーム
アラームは指定時間に、設定された動作を起こすための機能である。 アラーム満了時に起こせる動作は、タスク起動、イベント設定、ユーザーコールバックである。
[編集] メッセージ
OSEK OS仕様では規定していないが、OSEK COM仕様でメッセージの対応が可能。 キューイング機能、可変長メッセージ、周期送信などの機能を有する。
[編集] フックルーチン
OSEKにはフックルーチンという概念があり、OS内部処理中に利用者領域で指定したハンドラを呼び出す機能を持つ。 タスクの切り替わり前後や、システムサービスのエラー発生時などに呼び出されるため、動作のトレースやデバッグに利用できるインタフェイスを有する。
[編集] OIL(OSEK Implementation Language)
OILはアプリケーションのコンフィギュレーション記述を行うための専用言語である。OILで記述したアプリケーション設定ファイルをシステムジェネレータ(SG)に通すと、例えばC言語のソースファイルを出力する。OSEKはC言語で記述することを必須としていないため、他の言語のソースファイルを出力するSGがあってもよい。この方式は、μITRON仕様における静的APIおよびコンフィギュレータによるものと同等である。
[編集] コンフォーマンスクラス(適合分類)
OSEKでは、OS機能の理解を容易にするためや、OS機能の部分的な実装を可能とすること等を目的とした、コンフォーマンスクラスと呼ぶ機能のサブセット(部分集合)を用意している。
コンフォーマンスクラスには以下の4種類がある。
- BCC1(基本タスクのみ。各タスクは異なる優先度を持ち、タスクあたりの起動要求と優先度あたりのタスク数に制限あり)
- BCC2(BCC1に加え、1優先度あたりの複数のタスクおよび多重起動要求が可能)
- ECC1(BCC1に加え、拡張タスクが利用可能)
- ECC2(ECC1に加え、1優先度あたりの複数のタスクおよび多重起動要求が可能)