メモリ保護/プロセスモデル対応リアルタイムOS
概要
eT-Kernel/Extendedは、これまでのμITRONモデルとは全く異なる新しい概念を取り入れた、メモリ保護/プロセスモデル対応のリアルタイムOSです。大規模化するシステム向けに最適です。eT-Kernel/Compact、eT-Kernel/Standardをコアとし、T-Engineフォーラムで規格化された「T-Kernel/Standard Extension」をベースに多くの機能拡張を行いました。MMU (Memory Management Unit) を利用したメモリ保護機能とプロセスモデルを完全サポートしています。
メモリ保護機能
MMUを利用したメモリ保護機能を提供しています。実行中のプロセスが、他のプロセスが管理するメモリ領域やカーネルリソースを誤って破壊してしまうことを事前に検知して予防するため、開発中に不具合を容易に発見できます。また、システム稼動中に万が一プログラムが不正動作した場合でも被害を最小限に抑えることができます。また、ローダブルなドライバやサブシステムを安全に追加ロードできます。
プロセスモデルのサポート
OSとプログラムの関係をより粗結合化し、システム全体を処理単位 (プロセス) に分けて管理/実行できる、UNIXライクな仮想アドレスを用いたプロセス管理機能を提供しています。プロセスごとの開発、デバッグが可能なので、大人数での大規模なシステムに最適です。
eT-Kernel/Extendedの基本機能
eT-Kernel/Extendedは、下記の基本機能を提供しています。
| メモリ管理 | プロセス内のローカルメモリ/共有メモリ/システムメモリそれぞれのメモリ管理機能 |
| プロセス/タスク管理 | シングルユーザ/マルチプロセスのシステムを実現するために必要な各種プロセス/タスク管理機能 |
| プロセス間メッセージ | 任意のプロセス間でメッセージの送信、受信を行うための機能 |
| グローバル名 | プロセス間で共有して使用されるデータを任意の名前により生成する機能、および生成された名前によるデータの参照機能 |
| タスク間同期・通信 | タスク間の同期や通信を行うための機構 (セマフォ/ミューテックス/イベントフラグ/メールボックス/メッセージバッファ/ランデブ) の提供 |
| POSIXファイルシステム | POSIXに準拠したファイル入出力に関連する機能 |
| イベント管理 | 各種デバイスからの事象の通知をイベントとして統一的に取り扱い、管理するための機能 |
| デバイス管理 | T-Kernelのデバイス管理機能によりシステムに登録されたデバイスを操作する機能 |
| 時間管理 | システム時間の取得/設定、およびカレンダー日付時刻との変換機能 |
| システム管理 | バージョン情報の取得、およびシステムプログラムのロード/アンロード機能 |
| 共有ライブラリ | 複数のプロセスから共有可能なプログラム (ライブラリ) の管理機能 |
eT-Kernel/Extendedを使って開発できるプログラムの種類
eT-Kernel/Extendedでは、上位アプリケーションの構築に適したプロセスと、ローダブルなドライバやミドルウェアを含むカーネルアプリケーションの構築に適したシステムプログラムの仕組みを提供しています。この仕組みを使えば、システム全体をモジュール化、レイヤ化して設計・開発することができるので、大人数で開発する大規模なシステム向けに最適です。
また、プロセスから利用できる共有ライブラリとDLLの仕組みを提供しています。有効に利用することで柔軟なシステムの構成をとることができ、メモリスペースを削減することができます。
プロセス
上位アプリケーションの構築に適した、プロセスの仕組みを提供しています。eT-Kernel/Extendedでは、2つのタイプのプロセスがあります。
-
ユーザプロセス
CPUはユーザモードで動作します。また、独自のアドレス空間で動作します。カーネルメモリやI/Oエリアへのアクセスはできません。 -
システムプロセス
CPUはシステムモードで動作します。また、独自のアドレス空間で動作します。カーネルメモリやI/Oエリアへのアクセスもできます。
| プロセスとは |
|---|
|
プロセスとは、複数のプログラムがイベントの発生によって切り替えられるマルチプログラミング環境において、お互いに相互干渉しないように制御されるプログラムの処理単位です。 プロセスには固有のアドレス空間やメモリ、実行時間やプログラムの実行環境など、固有の資源が割り当てられます。 プロセスは、1個から複数個のタスクで構成されます。タスクとはプロセス内の処理単位のことを指し、スレッドと呼ばれることもあります。タスクは所属するプロセスの資源を共有し、お互いに自由にアクセスすることができます。たとえば、プロセス内のある一つの変数に、複数のタスクが自由にアクセスできます。当然ながらほかのプロセスに所属する資源にアクセスすることはできません。 |
システムプログラム
システムプログラムは、T-Kernelと同じアドレス空間で動作するカーネルアプリケーションのことを指します。システムプログラムには、デバイスドライバ、サブシステム、その他のカーネルアプリケーションなどが含まれます。システムプログラムは、T-Kernelと静的にリンクすることもできますが、別リンクとし、システムで動的にロードすることもできます。これにより、ドライバやシステムライブラリのアップデートなどが容易にできるほか、開発効率の向上にも役に立ちます。
共有ライブラリ
共有ライブラリは、複数のプロセスから利用できるライブラリです。通常のライブラリを使う場合、プログラムのビルド時にライブラリを利用する全てのプロセスイメージと静的にリンクされますが、共有ライブラリを使うと複数のプロセスが一つのライブラリイメージを共有して使うことができるため、メモリ消費を削減することができます。各プロセスが利用するすべての共有ライブラリは、アプリケーションが実行される前に、プロセス内のローカルメモリにロードされます。
DLL (Dynamic Link Library)
DLLは、プロセス実行中にロードできるライブラリです。共有ライブラリと違ってアプリケーション実行前にロードされず、必要になった時にプロセスからAPIを発行することで初めてロードされ、プロセスから利用することができます。プラグインモジュールなどに最適です。

eT-Kernel/Compact上で構築したソフトウェア資産の再利用
μITRONと同様のモデルをとるeT-Kernel/Compact、eT-Kernel/Standard上で構築した、デバイスドライバやサブシステム化されたミドルウェアなどをカーネルアプリケーションとして、eT-Kernel/Extended上でもそのまま利用することができます。
開発環境にすべてのプログラムをデバッグできるeBinderを用意
eT-Kernel/Extended上に構築する、ユーザプロセス/システムプロセス、システムプログラム、共有ライブラリ、DLLのすべてを、eBinderを使って開発できます。プロセス単位のデバッグだけでなく、プロセス内の個々のタスクもデバッグできます。また、デバイスドライバのデバッグも可能です。PrKERNELv4から、eT-Kernel/Compact、eT-Kernel/Standard、eT-Kernel/Extendedまで、すべてeBinderを使って開発できるため、一度習得した開発ツール利用のノウハウを使って、効率的に開発を進めることができます。
eT-Kernel/Extended独自の機能
eT-Kernel/Extendedは、T-Kernel Standard Extensionが提供するすべての機能を提供していますが、これらに加え、下記のeT-Kernel/Extended独自の機能を提供しています。
例外マネージャ機能
CPU例外の発生を検知し、ユーザアプリケーションにイベントを通知する機能です。その際、CPU例外発生時の重要なシステム情報 (CPUのレジスタセット、MMU、コプロセッサなどのCPUの内部情報、CPU例外をおこしたタスクID、タスク名などのカーネルの内部情報) を取得し、シリアルコンソールに表示します。このシステム情報は、C言語インタフェースのAPIを使って取得することもできます。例外マネージャ機能を活用することで、ユーザ自身でCPU例外発生時の処理プログラムを組み込んだり、障害解析のためのログ機構を組み込んだりすることができます。
拡張コマンドの追加が可能なターゲットシェル
ターゲットシェルは、UNIXのシェルに似た機能を提供する、組込みシステム向けのコマンドライブラリです。システム内の各種資源を操作できる、OSのシステムコール相当の各種コマンドを用意しています。このほか、ユーザ独自のコマンドを追加することができます。ターゲットシェルは最終システムにも組み込むことができるので、最終システムのメンテナンス用や検査用などのコマンドを実装するのに役に立ちます。また、ひとつひとつのコマンド呼び出しだけでなく、一連のコマンドをスクリプトにすることもできます。
コマンドライブラリは、アプリケーションから呼び出すことができるほか、通信ポートを経由して、ユーザがシステムの外部から呼び出すこともできます。通信ポートには、シリアルのほか、eBinderのデバッグポートも利用できます。eBinderのデバッグポートを利用するときには、VTTYがコンソールとして使えます。ターゲットシステム用のコンソールドライバがまだ完成していない場合や、ターゲットシステムにデバッグ用のシリアルを確保できない場合に、eBinderのデバッグポートを経由したVTTYの利用は便利です。
高速ブート機能
2度目以降のシステム起動時に、高速にブートできる機能です。システムの構成によっては、通常の10倍以上の高速化も実現可能です。この機能は、システムのリセット時にも、RAMの内容が保持されるシステムにおいて利用できます。eT-Kernel/Extendedでは、メモリの一部に、一度ロードしたプログラム (プロセス、システムプログラム、DLLなど) や起動時に読み込むコンフィギュレーションファイルの、各種情報やアドレスを管理するテーブルを持っています。このテーブルからメモリに存在するファイルを検索し、メモリからファイルを読み込むことで、RAMに比べてアクセスに時間がかかるストレージメディアからのファイルの読み込みを省略し、高速なブートを実現しています。
POSIXファイルシステムAPIをサポートした論理ファイルシステム
POSIXファイルシステムAPIをサポートした論理ファイルシステム (LFS) を提供しています。スレッドセーフなCライブラリとも統合済みです。プロセスからでも、システムプログラムを含むカーネルアプリケーションからでも、どちらからも呼び出すことができます。
T-Kernel/SEでもPOSIXのファイルサービスAPIを提供していますが、eT-Kernel/Extendedでは、このPOSIXのファイルシステムをさらに拡張して提供しており、スレッドセーフな標準Cライブラリと統合し、ほぼすべてのPOSIXファイルサービスをカバーしています。このPOSIXインタフェースを介して利用できる標準のファイルシステムとして、FATファイルシステム PrFILE2をインテグレートしています。
なお、POSIXに関しては、ファイルシステムAPI以外に、pthreadライブラリのサポートを予定しています。
POSIXのファイルマッピングをサポート
mmap()を使用したファイルのメモリマッピングをサポートしています。プロセス間の共有メモリとしても利用できます。
タスクのスタックやシステムプログラムのデータセクションの保護機能
各タスクのスタックやシステムプログラム内の.data/.bssセクションを保護するために、ポインタのオーバーラン/アンダーランを防止する機能を提供しています。スタックやデータセクションのオーバーフロー/アンダーフローが起きると、CPU例外を発生させ、他のメモリエリアの破壊を防止します。
動作環境
| 項目 | 概要 |
|---|---|
| CPU |
eT-Kernel/Extendedは以下のCPUで動作実績があります。
|
採用事例
| カーナビ | |
|---|---|
| 株式会社デンソー | 次世代カーナビゲーションシステム |

