μITRON 3.0仕様: インプリメント依存部分のチェックシートのご利用に関して 社団法人トロン協会 ITRON専門委員会 1. ITRON仕様における「弱い標準化」 ITRON仕様OSはリアルタイム・組込み制御用のOSであり、たとえばVTRやFAXなど の家電製品の制御などに利用される。こういった機器の制御を行うコンピュータ は、安価に大量生産できることが条件となるため、ぎりぎりの性能やメモリ容量 までコストダウンがはかられる。したがって、メモリ使用量や性能に対する要求 は厳しいものとなり、OS仕様の標準化や仮想化に伴う性能の低下が許されない。 一方、OSを実行するコンピュータのハードウエア環境は一定しない。たとえば、 VTRに内蔵された制御用コンピュータであればテープのセンサーや駆動機構が入 出力装置となるし、FAXに内蔵された制御用コンピュータであればスキャナ、プ リンタ、電話回線の制御装置などが入出力装置となる。VTRを制御する組込みコ ンピュータで動いていたソフトを、そのままFAXを制御する組込みコンピュータ に移植して動かす必要性はほとんどない。 こういった背景から、ITRON仕様では「弱い標準化」を特徴の一つとしており、 プログラムの互換性よりも適応性を重視した仕様設計が行われている。具体的に は、システムコールの機能と名称、パラメータの種類と名称、エラーコードの種 類と名称、エラーコードの値、機能コード番号(システムコールを区別する番号)、 言語Cからのシステムコール呼び出し方法などについてはITRON仕様として標準化 されているが、パラメータのビット数、アセンブラレベルでのシステムコール呼 び出し方法、割込み関係の一部の機能などについてはITRONの仕様書に含まれな い内容、すなわちCPUやインプリメントに依存する仕様となっている。基本的に は、性能向上やチューニングに対して障害となるような仕様の標準化は行わない 方針である。また、機能の過不足については、仕様をレベル分けすることによっ て対応している。たとえばμITRON 3.0仕様の場合、実装されるシステムコール の範囲に関してレベルR(必須)、レベルS(標準)、レベルE(拡張)の3つのレベルが あり、個々のシステムコールに対する一部の機能拡張を表わすレベルとしてレベ ルXがある。このほか、CPUやOSの実装に依存した機能を表わすレベルCがある。 システムに最適なITRON仕様OSを選択するには、これらのレベルや機能が目的の システムに合うかどうかを検討すればよい。 2. チェックシートの導入 ITRON仕様における「弱い標準化」の方針は、ITRON仕様OSの適用対象から考える と必然的なものである。しかし、OSのユーザの立場では、ITRONの仕様書に記載 された内容と個々のITRON仕様OSとの関係を定式的に把握できるのが望ましい。 これを具体化したものが本稿で説明する「μITRON 3.0仕様: インプリメント依 存部分のチェックシート」である。このチェックシートは、ユーザがITRON仕様 OSを選択する際の判断基準として利用したり、異なるITRON仕様OSの間でアプリ ケーションを移植する際の作業項目の目安として利用することができる。 チェックシートには、対象となるITRON仕様OSで実装しているシステムコールの レベル、タスク独立部から発行できるシステムコールの種類、仕様書で選択可能 となっている仕様の実装状況、インプリメント依存の拡張機能、扱える値の範囲 (ビット数)、ハンドラ類の記述方法などに関する設問が含まれている。一方、 CPUそのものに関する設問(CPUのビット数、アーキテクチャなど)や、OSの性能に 関する設問(システムコール実行時間、割込み禁止時間など)については、チェッ クシートには含まれない。実際にアプリケーションを移植する場合にはこれらの 内容も考慮すべきであるが、前者はOSではなくCPUのチェックシートとして作成 すべきであるし、後者はベンチマークテストの範疇に入ると思われるので、 ITRON仕様OSのチェックシートとしては対象外とした。また、μITRON 3.0仕様の 接続機能に関する設問も現バージョンのチェックシートには含まれていないが、 これは将来的には含めていくべきであると考えている。 3. チェックシートの内容 チェックシート全体の分量はファイルで約2400行、約70000文字、103Kバイト、 プリントで約45ページである。設問数は約400である。 チェックシートはPART 0.からPART 6.までの7つのパートに分かれている(チェッ クシート本体の目次参照)。このうちのPART 0.では、回答の対象となったOSの名 称、バージョン、メーカー、マニュアルの名称やバージョン、開発環境の名称や バージョンなどを問う。なお、これ以下の設問で回答が記述式になる場合には、 実際の回答内容を書く代わりに、マニュアルの該当箇所の章番号やページ数を回 答していただくことがある。したがって、チェックシートの対象となるマニュア ルをきちんと特定しておく必要がある。PART 0.でマニュアルの名称やバージョ ンまで回答していただくのは、このためである。 チェックシートのPART 1.は、システムコールや機能の有無に関する設問である。 この部分の回答は、主にユーザがOSを選択する際の判断基準として利用できる。 具体的な設問内容は、発行可能なシステムコール(タスク部,タスク独立部)、シ ステムコールの全体的なサポートレベル(R,S,E)、各[レベルX]の機能の有無、 [レベルC]の機能の有無や仕様、OS特有の制限事項などである。 PART 2.は、インプリメントに依存した独自の拡張機能についての設問である。 具体的な設問内容は、オブジェクトやハンドラのインプリメント依存属性、オブ ジェクト生成時やハンドラ定義時の付加情報、オブジェクトやハンドラの状態参 照時の付加情報、インプリメント依存システムコール(v???_???)の有無や仕様、 インプリメント依存のエラーコード(EV_???)の有無や仕様などである。 PART 3.は、扱える値の範囲についての設問である。具体的な設問内容は、利用 可能なオブジェクトの最大数、ID番号の範囲、各データタイプ(INT,ATRなど)の ビット数、時間管理関係のパラメータのビット数や構造体のメンバ構成、システ ムクロックの単位時間や基準時間などである。 PART 4.は、割込み関連の仕様についての設問である。具体的な設問内容は、 dis_int,ena_int,chg_i??,ref_i??の有無や仕様、多重割込みや割込みの優先度 に関する仕様、割込みハンドラとタイマハンドラとの関係などである。 PART 5.は、プログラミング作法についての設問である。この部分の回答は、主 にアプリケーションの移植作業の目安とするために利用できる。具体的な設問内 容は、アセンブラインタフェースの詳細(システムコールの呼びだし方法、機能 コード、レジスタ類の保存)および言語Cインタフェースの詳細(高級言語対応ル ーチン、言語Cでの割込みハンドラ,タイマハンドラの記述方法)である。 PART 6.は、その他の詳細仕様についての設問である。具体的には、SUSPEND状態 のタスクとレディキューとの関係、メイルボックスのインプリメント方法、可変 長メモリブロックの割り当てアルゴリズム、システムクロック変更時の影響など に関する設問が含まれる。 4. チェックシートのフォーマットと集計方法 チェックシートは、配布や回答の集計を電子的に行うことを考慮して設計されて いる。たとえば、インターネットやFDによってチェックシートを配布したり、電 子メールによって回答を提出していただくことを想定している。また、grep, sort などの各種のテキスト処理ツールを使って、機械的な集計作業を行いやす いように配慮している。このため、チェックシートのフォーマットは以下のよう にしている。 (a) 設問には一貫した番号(10進4桁,以下NNNN)をつけ、Ques-NNNNで設問を、 Answ-NNNNで回答欄を示す。設問番号は必ずしも連続しない。 (b) 選択式の回答の場合は、[a|b|c|...] の1文字を残して他を消すことによっ て回答する。記述式の回答の場合は、(※ ...記述式回答...) などの表記 を本当の回答で置き換えることによって回答する。回答が複雑な場合には、 マニュアルの章番号や参照ページを記入する。 (c) 回答は設問番号とともに1行に収める。1行に収めるのは、集計時にgrep, sortなどのテキスト処理ツールを使うためである。 なお、回答用紙(ファイル)に、回答条件(Cond-XXXX:)、設問(Ques-XXXX:) やその他の説明を残しておくかどうかについては自由である。集計時には、 回答の行われた Answ-NNNN: の行のみを機械的に抜き出して処理を行う。 (d) 各設問に対する回答条件を明記する。たとえば、SUSPENDのネストの有無 (レベルX)を聞く設問では、sus_tskを実装していることが条件となる。こ の場合、sus_tskが発行可能かという別の設問に対して発行可能と回答する ことが、ネストの有無に関する設問の回答条件となる。回答条件はCond- NNNNで示す。 (e) 複合した設問は行わず、別の設問に分ける。たとえば、SUSPENDのネスト機 能の有無(レベルX)とネストの最大段数は別の設問に分ける。 (f) 機械に依存した特殊文字(罫線など)は用いない。 回答を集計する際には、たとえばgrepコマンドによってAnsw-NNNNの行を抜き出 せば、回答欄を分離できる。また、複数のITRON仕様OSに対する回答ファイルに 対してAnsw-NNNNの部分をキーとしてソートすれば、各OSに対する回答を比較で きる。 5. 終わりに チェックシートを活用することにより、「弱い標準化」「広範囲のシステムへの 適用」といったITRON仕様OSの設計方針を活かしつつ、アプリケーションプログ ラムの移植性、互換性にも配慮することができる。さらに、将来的な活用方法と して、たとえばOSの仕様の違いをチェックシートによってデバッガに伝え、いろ いろなITRON仕様OSに対するデバッガを共通化することが考えられる。また、 ITRON仕様OSのテストプログラムを作成した場合には、OSの持つ機能に応じてテ スト項目を選択・修正しなければならないが、それに必要な情報を提供するため にもチェックシートを利用できる。チェックシートの活用により、ITRON仕様OS の導入やアプリケーションの移植が容易になり、ITRONサブプロジェクトの発展 にますます弾みがつくものと考えている。 6. チェックシートの入手および問い合わせ先 【インターネット上でのチェックシートのリリース】 http://tron.um.u-tokyo.ac.jp/TRON/ITRON/checksheet.html から 取得可能 【チェックシートに対するご意見やご質問の送付先】 (郵送、FAXの場合) 〒108 東京都港区三田1-3-39 勝田ビル5F 社団法人トロン協会 ITRON専門委員会 Fax. 03-3454-3224