(57)【要約】本発明は、システムレイヤ呼び出し型の命令によってアクセスが保護されている特権実行モードを有する中央コンピューティング・ユニットに接続された時間同期式アーキテクチャ型管理システムを用いて実施される方法に関する。当該アプリケーションタスクからレイヤシステムへの許可されたシステムレイヤ呼び出しだけが、関連したタスクを制御するグラフ内のノードの変更を考慮する。レイヤシステムが、呼び出しはアプリケーションの定数テーブルに記述されている制御グラフ実行パスに関して正当である、ということを検証したとき、レイヤシステムによって当該ノードで実行されるべき全動作は、レイヤシステムに関連したアプリケーションの定数テーブルによって予め決められる。当該アプリケーションのタスクのリストの予備的な順序付けは、マイクロカーネルにおける実時間実行の前に行われる。マイクロカーネルは、実時間実行中にレイヤシステムによって呼び出されたとき、タスクの新しい時間特性、即ち、レイヤシステムによって計算された最先の開始時間ｄ（ｉ）及び最後の終了時間ｆ（ｉ）に基づいて順序付けられた形式でタスクのリストを更新する。
2004535607.tif 000002
【特許請求の範囲】
【請求項１】
調節可能な時間量が経過したときに割り込み信号ｓｈを発行する少なくとも第１のクロック（１４）と、
少なくとも上記クロック割り込み信号ｓｈを受ける能力を備えている少なくとも一つのプロセッサを含むＣＰＵ（１０）と、
主メモリ（１２，１３）と、
制御システムの入出力を管理する周辺機器（１，・・・，Ｎ）を制御するコントローラの組（１１，・・・，１Ｎ）と、
を有する制御システムにおいて、
制御・コマンド型のマルチタスクアプリケーションの実時間実行を決定論的に行うセキュリティ方法であって、
手順（ａ）において、所定のアプリケーションのタスク毎に、システムレイヤ呼び出しを要求するタスクの各時間同期ポイントから許可された遷移状態（チェインニング）の全てを記憶し、上記遷移状態は、当該タスクによってなされたシステムレイヤ呼び出しの実行を監視する制御グラフによって表現され、各制御グラフは、制御システムのシステムレイヤ呼び出しに各々が対応しているノードの組により構成され、
手順（ｂ）において、各タスクの制御グラフのノード毎に、システムレイヤ呼び出しの性質及び呼び出しパラメータを記憶し、呼び出しパラメータには、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）を更新することができる時間パラメータが含まれ、
手順（ｃ）において、タスク毎に、関連したグラフに初期ノード（ノード０）を記憶し、
手順（ｄ）において、所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、タスク毎に、初期ノード（ノード０）及び当該タスクの初期状態を表現する初期時点を初期化し、
手順（ｅ）において、所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、アトミック・マイクロカーネル内のタスクのリストを予め順序付けることにより、各タスクの開始順序を初期化し、
手順（ｆ）において、時間トリガーモードにおける上記アプリケーションの実行を開始するアプリケーションの第１の時点に、マイクロカーネル呼び出しを構成するクロック割り込み信号ｓｈを発行するため第１のクロック（１４）をセットし、
手順（ｇ）において、第１のクロック（１４）がセットされた後の通常動作中に、マイクロカーネル呼び出し毎にマイクロカーネルによって第１のクロック（１４）をリセットさせ、システムレイヤ若しくは割り込み信号ｓｈの処理によるマイクロカーネル呼び出し中に、マイクロカーネルに、タスクの時間特性、即ち、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）に応じて順序付けられたタスクのリストを更新させ、リストを更新した後に、マイクロカーネルに、タスクを開始する必要がある直近の未来の時点を計算させ、上記タスクを開始し、マイクロカーネルから出るための上記直近の未来の時点に基づいて第１のクロック（１４）をマイクロカーネルによってセットさせ、
手順（ｈ）において、タスクを実行している間に、上記タスクの制御グラフのノードに達した時に限りシステムレイヤ呼び出しを行ない、引数としてノードの数を渡し、システムレイヤのエントリーへ進み、実行中の制御グラフに応じて、先行のシステムレイヤに対応するノードからの遷移状態が許可されているかどうかを検証するためのチェックを行ない、上記遷移状態が許可されていない場合にシステムレイヤ内で異常処理を開始し、上記遷移状態が許可されている場合には実行を継続し、システムレイヤからのマイクロカーネル呼び出しを使用して、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）を含む実行されているタスクの時間パラメータを更新し、上記タスクがその制御グラフのノードに達するまで現在のタスクの通常実行を継続する、
方法。
【請求項２】
アドレス指定アクセス権を制御するメモリ保護ユニット（１６）を更に具備した制御システムに適用され、メモリ保護ユニット（１６）は、アドレス指定可能なメモリ空間へアクセスするため、排他的に、許可されたアドレス指定を表すアクセスを与える有効アドレスａｖを発行するか、又は、例外信号ｓｅをＣＰＵへ発行することにより、ＣＰＵ（１０）によって供給された要求アドレスａｄと、プロセッサの実行コンテキストの権利（Ｃ）に応答し、
手順（ｉ）において、準備段階中に、所与のアプリケーションに対し、マイクロカーネル及び各アプリケーションタスクのための各メモリセグメントへのアクセス権を記憶し、システムレイヤにおける各タスクの拡張のため、命令がタスクを構成するアプリケーションに固有のコード内にあるか、又は、命令がシステムレイヤにおけるタスクの拡張を構築するシステムレイヤの汎用コード内にあるかに応じて、第１の実行コンテキストと第２の実行コンテキストを構築し、
手順（ｊ）において、所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、マイクロカーネルコンテキストと、システムレイヤ内の各タスクとそのタスクの拡張部分に関する第１及び第２の実行コンテキストと、を初期化し、
手順（ｋ）において、タスクの実行中に、タスクの実行コンテキストからシステムレイヤにおけるタスクの拡張部分の実行コンテキストへ移ることを可能にさせる特権実行モードへ移るための命令を使用して、システムレイヤ呼び出しを行ない、先行のシステム呼び出しに対応したノードからの遷移状態が許可されていることを検証した後、かつ、システムレイヤからのマイクロカーネル呼び出しを使用してタスクのパラメータを更新した後に、システムレイヤの拡張部分の実行コンテキストからタスクの実行コンテキストへ実行を移すことができる非特権モードへ戻るための命令を用いてタスクのコードへ戻る、
ことを特徴とする請求項１記載の方法。
【請求項３】
各アプリケーションタスクの実行コンテキストは、二つ一組になって分離していることを特徴とする請求項２記載の方法。
【請求項４】
アプリケーションタスクのコンテキストの実行部分のシステムレイヤへの拡張部分は、アプリケーションコードにおけるタスクの実行コンテキストから書き込みアクセスができないことを特徴とする請求項２又は３記載の方法。
【請求項５】
タスクの制御グラフのコーディングは、アプリケーションのタスクの実行を制御するメカニズムと上記タスク自体の実行の両方に生じる共通の原因による故障を阻止することを特徴とする請求項１乃至４のうち何れか一項記載の方法。
【請求項６】
手順（ｌ）において、予備段階中に、所与のアプリケーション毎に、かつ、上記タスクにおける許可された遷移状態の全てに対して、タスクの制御グラフ内で一方のノードから別のノードへ移るために要する最大実行時間の上界を構成する時間割当量を記憶し、各時間割当量は、タスクに固有の命令を実行する際に経過した時間と、タスクの実行におけるシステムレイヤの汎用コードの実行の際に経過した時間の両方の時間を対象とし、
手順（ｍ）において、第１のクロック（１４）がセットされた後、時間割り込み信号ｓｈによって始動されたマイクロカーネル呼び出しのイベントにおいて、第１のクロック（１４）をリセットさせ、マイクロカーネル呼び出しを始動した時間割り込み信号ｓｈが時間割当量を侵害しようとする状態と関連しているかどうかを検証するためにチェックを行ない、関連している場合に、マイクロカーネルに異常処理を実行させ、時間割り当て信号ｓｈが時間割当量を侵害しようとする状態と関連していない場合、マイクロカーネルにタスクリストを更新させ、タスクリストの更新後に、タスクが始動させられるべき直近の未来の時点と、マイクロカーネルを実行する際に実行中であるタスクに割り当てられた時間割当量が満了する未来の時点と、を計算させ、この時間はリストを更新する間に決定され、マイクロカーネルに第１のクロック（１４）を上記未来の時点の中の近い時点にセットさせ、これにより、タスクが始動されるか、又は、異常動作による時間割当量を侵害しようとする状態が検出され、第１のクロック（１４）をセットした後、マイクロカーネルから離れる、
ことを特徴とする請求項１乃至５のうち何れか一項記載の方法。
【請求項７】
第２のクロック（１５）が制御システムに組み込まれ、
マイクロカーネルは、時間信号を比較することにより第１のクロック（１４）によってトリガーされた時間の流れを監視するため、第２のクロック（１５）へアクセスするようにさせられる、
ことを特徴とする請求項１乃至６のうち何れか一項記載の方法。
【請求項８】
制御・コマンド型の通信マルチタスクアプリケーションの実時間実行を決定論的にさせるために適合し、
手順（ｎ）において、予備段階中に、所与のアプリケーションのタスク毎に、そのタスクの時間同期用のポイントの許可された遷移状態の全てを記憶し、アプリケーションの他のタスクとの通信のため、システムレイヤ呼び出しを要求し、これらの許可された遷移状態は、当該タスクによって行われたシステムレイヤ呼び出しの実行用の制御グラフにより表現され、各グラフはノードの集合により構成され、各ノードはシステムレイヤ呼び出しに対応し、
手順（ｏ）において、タスク間でデータを交換するため必要とされる各バッファゾーンを記憶し、バッファゾーンのサイズと、バッファゾーンに収容される要素のサイズと、ロケーション若しくはベースアドレスと、通信を確認するため必要とされる情報転送を可能にするバッファゾーン間の関係と、を指定し、
手順（ｐ）において、バッファゾーン毎に、その要素の初期値を記憶し、
手順（ｑ）において、所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、メモリに先に格納されていた値を用いてバッファゾーンの要素の値を初期化し、
手順（ｒ）において、タスクの実行中に、タスク制御グラフのノードに達したときにシステムレイヤ呼び出しを実行し、現在実行されているタスクの制御グラフに応じて、先行のシステムレイヤ呼び出しに対応するノードからの遷移状態が許可されているかどうかを検証した後に、先に格納された呼び出しの性質に応じてバッファゾーンを連続的に更新させ、必要に応じて、最先の開始時間ｄ（ｉ）と最後の完了時間ｆ（ｉ）を含む実行されるタスクの時間パラメータの増分的な更新を実行する、
ことを特徴とする請求項１乃至７のうち何れか一項記載の方法。
【請求項９】
システムレイヤにおいて、バッファゾーンだけがアプリケーションのタスクの実行コンテキストの拡張部分によって共有されることが許可され、メッセージ送信に対応した動的通信のための所与のバッファゾーンは２個のタスク実行コンテキスト拡張部分だけによって共有可能であり、一方、タイムスタンプ付きデータのストリームに対応した静的通信用のバッファゾーンは、３個以上のタスク実行コンテキスト拡張部分によって共有可能であるが、システムレイヤ内にコンテキスト拡張部分を保有するタスクだけによって修正することが可能である、
ことを特徴とする請求項２及び８記載の方法。
【請求項１０】
原子炉用の安全クラス・レベル１Ｅを備えた制御・コマンド型システムに適用されることを特徴とする請求項１乃至９のうち何れか一項記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、調節可能な時間量が経過したときに割り込み信号を発生する少なくとも第１のクロックと、上記クロック割り込み信号を受け取る能力を備えている少なくとも一つの中央処理ユニットと、主メモリと、制御システムの入出力を管理する周辺コントローラの組と、を含む制御システムにおいて、制御・コマンド型のマルチタスクアプリケーションの実時間セキュリティ方法に関する。
【０００２】
時間のスケールが異なり、データ交換が伴う様々なプロセス（入出力、計算など）のマルチタスク管理用システムにおいて、全てのプロセスが実時間で同期し協調させられている場合、決定論的な方式で、即ち、相互作用する全てのタスクの全体的な挙動と環境が一意的かつ不変的である方式で、プロセスを実時間で実行する能力を備えていることが望ましい。更に、実時間プロセスの実行は、安全になされること、即ち、動作異常が存在する場合にできるだけ決定論的であり続けながら、様々なタスクが故障とは独立していることが保証されるように異常を検出し、異常を限定することが望ましい。
【０００３】
多数のマルチタスク管理システムが公知になっている。しかし、殆どのマルチタスク管理システムは、非同期的であり、非決定論的である。更に、このようなシステムは、ある種の故障モードが伝播することを阻止しないように設計されている。
【０００４】
より詳細には、仏国特許出願２７７１８２８号には、正当に実行中のタスクを常に識別する時間分割若しくは空間分割による故障検出システムを装備しているマルチタスク・コンピュータのセキュリティ方法が開示されている。
【０００５】
循環的順序型のシステムに関連しているこの文献によれば、分割（パーティショニング）は、故障の伝播を制限するため使用されるが、区画（パーティション）の間で通信は行われず、即ち、全体的なレベルではマルチタスク管理が行われない。更に、区画内で故障が伝播する可能性が依然として残り、最高のセキュリティを実現できない。
【０００６】
文献：仏国特許出願２７７１８２８号によれば、このように、決定論的挙動を獲得することは、マルチタスク管理と相容れないように思われる。
【０００７】
本発明は、従来技術の問題点を解決し、性能が向上し安全性が高められた高度統合化制御システムを実現できるようにすることを目的とする。
【０００８】
より詳細には、本発明は、コンピュータを使用して、実時間で、かつ、決定論的な方式で、エラーが抑制され、耐故障性のある確実なマルチタスク実行を達成できるようにすることを目的とする。
【０００９】
かくして、本発明は、明示的な通信（タイムスタンプ付きメッセージ）と非明示的な通信（タイムスタンプ付きデータのストリーム）を用いて、循環的タスクと非循環的タスクの両方に対して、マルチタスクアプリケーションの実時間で高度に決定論的に実行することを保証するセキュリティを提供できるようにすることを目的とする。
【００１０】
これらの目的は、制御システムにおける制御・コマンド型のマルチタスクアプリケーションの実時間（リアルタイム）実行を決定論的にするセキュリティ方法によって達成される。このセキュリティ方法は、
調節可能な時間量が経過したときに割り込み信号ｓｈを発行する少なくとも第１のクロックと、
少なくとも上記クロック割り込み信号ｓｈを受ける能力を備えている少なくとも一つのプロセッサを含む中央プロセッサユニット（ＣＰＵ）と、
主メモリと、
制御システムの入出力を管理する周辺機器を制御するコントローラの組と、
が設けられ、
この方法は、所定のアプリケーションのタスク毎に、システムレイヤ呼び出しを要求するタスクの各時間同期ポイントから許可された遷移状態（チェインニング）の全てを記憶する手順（ａ）を含み、
上記遷移状態は、当該タスクによってなされたシステムレイヤ呼び出しの実行を監視する制御グラフによって表現され、各制御グラフは、制御システムのシステムレイヤ呼び出しに各々が対応しているノードの組により構成され、
この方法は、各タスクの制御グラフのノード毎に、システムレイヤ呼び出しの性質及び呼び出しパラメータを記憶する手順（ｂ）を含み、呼び出しパラメータには、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）を更新することができる時間パラメータが含まれ、
この方法は、
タスク毎に、関連したグラフに初期ノードを記憶する手順（ｃ）と、
所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、タスク毎に、初期ノード及び当該タスクの初期状態を表現する初期時点を初期化する手順（ｄ）と、
所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、アトミック・マイクロカーネル内のタスクのリストを予め順序付けることにより、各タスクの開始順序を初期化する手順（ｅ）と、
時間トリガーモードにおける上記アプリケーションの実行を開始するアプリケーションの第１の時点に、マイクロカーネル呼び出しを構成するクロック割り込み信号ｓｈを発行するため第１のクロックをセットする手順（ｆ）と、
第１のクロックがセットされた後の通常動作中に、マイクロカーネル呼び出し毎にマイクロカーネルによって第１のクロックをリセットさせ、システムレイヤ若しくは割り込み信号ｓｈの処理によるマイクロカーネル呼び出し中に、マイクロカーネルに、タスクの時間特性、即ち、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）に応じて順序付けられたタスクのリストを更新させ、リストを更新した後に、マイクロカーネルに、タスクを開始する必要がある直近の未来の時点を計算させ、上記タスクを開始し、マイクロカーネルから出るための上記直近の未来の時点に基づいて第１のクロックをマイクロカーネルによってセットさせる手順（ｇ）と、
タスクを実行している間に、上記タスクの制御グラフのノードに達した時に限りシステムレイヤ呼び出しを行ない、引数としてノードの数を渡し、システムレイヤのエントリーへ進み、実行中の制御グラフに応じて、先行のシステムレイヤに対応するノードからの遷移状態が許可されているかどうかを検証するためのチェックを行ない、上記遷移状態が許可されていない場合にシステムレイヤ内で異常処理を開始し、上記遷移状態が許可されている場合には実行を継続し、システムレイヤからのマイクロカーネル呼び出しを使用して、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）を含む実行されているタスクの時間パラメータを更新し、上記タスクがその制御グラフのノードに達するまで現在のタスクの通常実行を継続する手順（ｈ）と、
を有する。
【００１１】
より詳細には、本発明のセキュリティ方法は、アドレス指定アクセス権を制御するメモリ保護ユニットを更に具備した制御システムに適用され、メモリ保護ユニットは、アドレス指定可能なメモリ空間へアクセスするため、排他的に、許可されたアドレス指定を表すアクセスを与える有効アドレスａｖを発行するか、又は、例外信号ｓｅをＣＰＵへ発行することにより、ＣＰＵによって供給された要求アドレスａｄと、プロセッサの実行コンテキストの権利に応答し、
本発明のセキュリティ方法は、
準備段階中に、所与のアプリケーションに対し、マイクロカーネル及び各アプリケーションタスクのための各メモリセグメントへのアクセス権を記憶し、システムレイヤにおける各タスクの拡張のため、命令がタスクを構成するアプリケーションに固有のコード内にあるか、又は、命令がシステムレイヤにおけるタスクの拡張を構築するシステムレイヤの汎用コード内にあるかに応じて、第１の実行コンテキストと第２の実行コンテキストを構築する手順（ｉ）と、
所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、マイクロカーネルコンテキストと、システムレイヤ内の各タスクとそのタスクの拡張部分に関する第１及び第２の実行コンテキストと、を初期化する手順（ｊ）と、
タスクの実行中に、タスクの実行コンテキストからシステムレイヤにおけるタスクの拡張部分の実行コンテキストへ移ることを可能にさせる特権実行モードへ移るための命令を使用して、システムレイヤ呼び出しを行ない、先行のシステム呼び出しに対応したノードからの遷移状態が許可されていることを検証した後、かつ、システムレイヤからのマイクロカーネル呼び出しを使用してタスクのパラメータを更新した後に、システムレイヤの拡張部分の実行コンテキストからタスクの実行コンテキストへ実行を移すことができる非特権モードへ戻るための命令を用いてタスクのコードへ戻る手順（ｋ）と、
を有する。
【００１２】
好ましくは、各アプリケーションタスクの実行コンテキストは、二つ一組になって分離している。
【００１３】
本発明の方法の特有の特徴によれば、アプリケーションタスクのコンテキストの実行部分のシステムレイヤへの拡張部分は、アプリケーションコードにおけるタスクの実行コンテキストから書き込みアクセスができない。
【００１４】
タスクの制御グラフのコーディングは、アプリケーションのタスクの実行を制御するメカニズムと上記タスク自体の実行の両方に生じる共通の原因による故障を阻止する。
【００１５】
本発明の方法は、更に、
予備段階中に、所与のアプリケーション毎に、かつ、上記タスクにおける許可された遷移状態の全てに対して、タスクの制御グラフ内で一方のノードから別のノードへ移るために要する最大実行時間の上界を構成する時間割当量を記憶する手順（ｌ）が設けられ、各時間割当量は、タスクに固有の命令を実行する際に経過した時間と、タスクの実行におけるシステムレイヤの汎用コードの実行の際に経過した時間の両方の時間を対象とし、
第１のクロックがセットされた後、時間割り込み信号ｓｈによって始動されたマイクロカーネル呼び出しのイベントにおいて、第１のクロックをリセットさせ、マイクロカーネル呼び出しを始動した時間割り込み信号ｓｈが時間割当量を侵害しようとする状態と関連しているかどうかを検証するためにチェックを行ない、関連している場合に、マイクロカーネルに異常処理を実行させ、時間割り当て信号ｓｈが時間割当量を侵害しようとする状態と関連していない場合、マイクロカーネルにタスクリストを更新させ、タスクリストの更新後に、タスクが始動させられるべき直近の未来の時点と、マイクロカーネルを実行する際に実行中であるタスクに割り当てられた時間割当量が満了する未来の時点と、を計算させ、この時間はリストを更新する間に決定され、マイクロカーネルに第１のクロックを上記未来の時点の中の近い時点にセットさせ、これにより、タスクが始動されるか、又は、異常動作による時間割当量を侵害しようとする状態が検出され、第１のクロックをセットした後、マイクロカーネルから出る手順（ｍ）が設けられている。
【００１６】
第２のクロックが制御システムに組み込まれたとき、本発明の方法の固有の特徴によれば、マイクロカーネルは、時間信号を比較することにより第１のクロックによってトリガーされた時間の流れを監視するため、第２のクロックへアクセスするようにさせられる。
【００１７】
制御・コマンド型の通信マルチタスクアプリケーションの実時間実行を決定論的にさせるために適合した本発明のセキュリティ方法は、更に、
予備段階中に、所与のアプリケーションのタスク毎に、そのタスクの時間同期用のポイントの許可された遷移状態の全てを記憶し、アプリケーションの他のタスクとの通信のため、システムレイヤ呼び出しを要求する手順（ｎ）が設けられ、これらの許可された遷移状態は、当該タスクによって行われたシステムレイヤ呼び出しの実行用の制御グラフにより表現され、各グラフはノードの集合により構成され、各ノードはシステムレイヤ呼び出しに対応し、
タスク間でデータを交換するため必要とされる各バッファゾーンを記憶し、バッファゾーンのサイズと、バッファゾーンに収容される要素のサイズと、ロケーション若しくはベースアドレスと、通信を確認するため必要とされる情報転送を可能にするバッファゾーン間の関係と、を指定する手順（ｏ）が設けられ、
バッファゾーン毎に、その要素の初期値を記憶する手順（ｐ）が設けられ、
所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、メモリに先に格納されていた値を用いてバッファゾーンの要素の値を初期化する手順（ｑ）が設けられ、
タスクの実行中に、タスク制御グラフのノードに達したときにシステムレイヤ呼び出しを実行し、現在実行されているタスクの制御グラフに応じて、先行のシステムレイヤ呼び出しに対応するノードからの遷移状態が許可されているかどうかを検証した後に、先に格納された呼び出しの性質に応じてバッファゾーンを連続的に更新させ、必要に応じて、最先の開始時間ｄ（ｉ）と最後の完了時間ｆ（ｉ）を含む実行されるタスクの時間パラメータの増分的な更新を実行する手順（ｒ）が設けられている。
【００１８】
本発明の固有の特徴によれば、システムレイヤにおいて、バッファゾーンだけがアプリケーションのタスクの実行コンテキストの拡張部分によって共有されることが許可され、メッセージ送信に対応した動的通信のための所与のバッファゾーンは２個のタスク実行コンテキスト拡張部分だけによって共有可能であり、一方、タイムスタンプ付きデータのストリームに対応した静的通信用のバッファゾーンは、３個以上のタスク実行コンテキスト拡張部分によって共有可能であるが、システムレイヤ内にコンテキスト拡張部分を保有するタスクだけによって修正することが可能である。
【００１９】
特に、本発明の方法は、原子炉用の安全クラス・レベル１Ｅの制御・コマンド型システムに適用可能である。
【００２０】
本発明のその他の特徴並びに効果は、添付図面を参照して例示された以下の特定の実施例の説明から明らかになるであろう。
【００２１】
次に、本発明のセキュリティ方法が適用される制御システムの簡略化されたアーキテクチャの一例を表す図１を参照して説明を始める。
【００２２】
制御システムは、プログラム可能な時間量が経過したときにライン２２を介して割り込み信号ｓｈを送信する少なくとも第１のクロック１４を含む。中央プロセッサユニット（ＣＰＵ）１０は、ライン２１を介してデータを受け取り、ライン２２を介して割り込み信号ｓｈを受け取る能力を備えている少なくとも一つのプロセッサを含む。
【００２３】
ＣＰＵ１０は、ライン２３、２４を介して、アドレス信号を主メモリへ送出する役目を果たす。主メモリは、読み出し専用メモリ（ＲＯＭ）１２と、ランダムアクセスメモリ（ＲＡＭ）１３と、を含む。
【００２４】
ＲＯＭ１２は、少なくとも、関係しているアプリケーションのプログラムを含む情報（Ａ）と、アプリケーションの定数テーブル及びデータを含む情報（Ｂ）とを格納する。
【００２５】
ＲＡＭ１３は、アプリケーションプログラムの作業変数データを格納する。
【００２６】
周辺機器１乃至Ｎのコントローラ１１乃至１Ｎは、制御システムの入力及び出力の実時間管理を行うために役立つ。
【００２７】
第２のクロック１５は、クロック１４の適切な動作の付加的な監視を行うため設けられる。
【００２８】
制御システムは、アドレス指定アクセス権を強化するメモリ保護ユニット１６を更に含む場合がある。
【００２９】
アドレス指定可能なメモリ空間にアクセスするため、ＣＰＵ１０によってライン２３を介してメモリ保護ユニット１６へ供給された要求アドレスａｄ、並びに、ＲＯＭ１２をメモリ保護ユニット１６へ接続するライン２６を介して供給されるようなプロセッサの様々な実行コンテキストの権利（Ｄ）から始めて、上記メモリ保護ユニット１６は、排他的な方式で、メモリ１２及び１３に接続されたライン２４を介して周辺コントローラ１１乃至１Ｎにアクセス権を与える有効アドレスａｖを生成するか、又は、アドレス指定が許可されていないことを示す例外信号ｓｅを、ライン２５を介してＣＰＵ１０へ与える。
【００３０】
メモリ保護ユニット１６は、標準的なメモリ管理ユニット（ＭＭＵ）に存在するメカニズムによって構成してもよい。
【００３１】
ＣＰＵ１０のプロセッサは、少なくとも１個のクロック割り込み信号ｓｈと、許可されていないアドレス指定を知らせる例外信号ｓｅと、を受ける能力を備え、「システムレイヤ呼び出し」型の命令によってアクセスが保護されている特権実行モードを保有し、この命令は、例えば、分岐命令若しくは「トラップ」命令によって構成される。
【００３２】
一般的に、本発明は、明示的な通信（タイムスタンプ付きメッセージ）及び非明示的な通信（タイムスタンプ付きデータのストリーム）を用いて実時間で確実な決定論的マルチタスク処理を行う時間トリガー方式アーキテクチャ（ＴＴＡ）を有するタイプの管理システムに関係し、タスク自体は循環的でも非循環的でも構わない。
【００３３】
より詳細には、本発明によるセキュリティ方法において、（特権モード実行呼び出しを用いた）制御システムのシステムレイヤ呼び出しは、特定の方式で管理され、エラーを検出し発見することが可能であり、挙動が決定論的かつ予測可能であることを保証し得る。
【００３４】
本発明において、システムレイヤ呼び出しは、以下のように管理される。
【００３５】
（ｉ）当該アプリケーションタスクによってシステムレイヤに許可されたシステムレイヤ呼び出しだけが、当該タスクの制御グラフにおけるノード変化を通知する呼び出しである。
【００３６】
（ｉｉ）システムレイヤは、アプリケーションの定数テーブルに記述されている制御グラフの実行パスと比較したときに、各呼び出しが正当であることを検証する。
【００３７】
（ｉｉｉ）呼び出しが正当であるとき、システムレイヤによって当該ノードで実行されるべき動作の全ては、システムレイヤの関連したアプリケーションの定数テーブルによって予め決められる。
【００３８】
当該アプリケーションのタスクのリストは、アトミック・マイクロカーネル上での実時間実行よりも前に予め順序付けられ、マイクロカーネルは、次に実時間実行中に呼び出され、タスクの新しい時間特性、特に、システムレイヤによって計算されるような最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）のアプリケーション内で順序付けられた方式でタスクのリストを更新する役目を果たす。
【００３９】
本発明の原理的なセキュリティ方法は、原則的に、以下の手順（ａ）〜（ｈ）を含む。
【００４０】
手順（ａ）では、所定のアプリケーションのタスク毎に、システムレイヤ呼び出しを要求するタスクの各時間同期ポイントから許可された遷移状態（チェインニング）の全てを記憶する。上記遷移状態は、当該タスクによってなされたシステムレイヤ呼び出しの実行を監視する制御グラフによって表現され、各制御グラフは、制御システムのシステムレイヤ呼び出しに各々が対応しているノードの組により構成される。
【００４１】
手順（ｂ）では、各タスクの制御グラフのノード毎に、システムレイヤ呼び出しの性質及び呼び出しパラメータを記憶する。呼び出しパラメータには、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）を更新することができる時間パラメータが含まれる。
【００４２】
手順（ｃ）では、タスク毎に、関連したグラフに初期ノード（ノード０）を記憶する。
【００４３】
手順（ｄ）では、所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、タスク毎に、初期ノード（ノード０）及び当該タスクの初期状態を表現する初期時点を初期化する。
【００４４】
手順（ｅ）では、所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、アトミック・マイクロカーネル内のタスクのリストを予め順序付けることにより、各タスクの開始順序を初期化する。
【００４５】
手順（ｆ）では、時間トリガーモードにおける上記アプリケーションの実行を開始するアプリケーションの第１の時点に、マイクロカーネル呼び出しを構成するクロック割り込み信号ｓｈを発行するため第１のクロック１４をセットする。
【００４６】
手順（ｇ）では、第１のクロック１４がセットされた後の通常動作中に、マイクロカーネル呼び出し毎にマイクロカーネルによって第１のクロック１４をリセットさせ、システムレイヤによるマイクロカーネル呼び出し、若しくは、割り込み信号ｓｈの処理によるマイクロカーネル呼び出しの間に、マイクロカーネルを、タスクの時間特性、即ち、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）に応じて順序付けられたタスクのリストを更新する手順へ進め、リストを更新した後に、マイクロカーネルに、タスクを開始する必要がある直近の未来の時点を計算させ、上記タスクを開始し、マイクロカーネルから出るための上記直近の未来の時点に基づいて第１のクロック１４をマイクロカーネルによってセットさせる。
【００４７】
手順（ｈ）では、タスクを実行している間に、上記タスクの制御グラフのノードに達した時に限りシステムレイヤ呼び出しを行ない、引数としてノードの数を渡し、システムレイヤのエントリーへ進み、実行中の制御グラフに応じて、先行のシステムレイヤに対応するノードからの遷移状態が許可されているかどうかを検証するためのチェックを行ない、上記遷移状態が許可されていない場合にシステムレイヤ内で異常処理を開始し、上記遷移状態が許可されている場合には実行を継続し、システムレイヤからのマイクロカーネル呼び出しを使用して、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）を含む実行されているタスクの時間パラメータを更新し、上記タスクがその制御グラフのノードに達するまで現在のタスクの通常実行を継続する。
【００４８】
上述のように、本発明のセキュリティ方法が適用される制御システムは、メモリ保護ユニットと、各セグメントにアクセスするための各コンテキストの権利のテーブルと、を含み、アクセス権は、予め決められ、適当であれば、ＲＯＭに記憶される。実行コンテキスト毎に、コンテキストの権利を定義するテーブルの記述は、システム全体の初期化段階中に１回だけ初期化され、ＣＰＵ上で実行されるプロセスの中で、その実行コンテキストにこれらのテーブルを所有するプロセスはない。
【００４９】
本発明のセキュリティ方法は、更に、上述の手順の間に行われる以下の手順（ｉ）〜（ｋ）を含む。
【００５０】
手順（ｉ）では、準備段階中に、所与のアプリケーションに対し、マイクロカーネル及び各アプリケーションタスクのための各メモリセグメントへのアクセス権を記憶し、システムレイヤにおける各タスクの拡張のため、命令がタスクを構成するアプリケーションに固有のコード内にあるか、又は、命令がシステムレイヤにおけるタスクの拡張を構築するシステムレイヤの汎用コード内にあるかに応じて、第１の実行コンテキストと第２の実行コンテキストを構築し、
手順（ｊ）では、  所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、マイクロカーネルコンテキストと、システムレイヤ内の各タスクとそのタスクの拡張部分に関する第１及び第２の実行コンテキストと、を初期化し、
手順（ｋ）では、タスクの実行中に、タスクの実行コンテキストからシステムレイヤにおけるタスクの拡張部分の実行コンテキストへ移ることを可能にさせる特権実行モードへ移るための命令を使用して、システムレイヤ呼び出しを行ない、先行のシステム呼び出しに対応したノードからの遷移状態が許可されていることを検証した後、かつ、システムレイヤからのマイクロカーネル呼び出しを使用してタスクのパラメータを更新した後に、システムレイヤの拡張部分の実行コンテキストからタスクの実行コンテキストへ実行を移すことができる非特権モードへ戻るための命令を用いてタスクのコードへ戻る。
【００５１】
本発明のセキュリティ方法は、時間割当量を参照し、上記の原理的な方法の手順と、システムレイヤにおけるタスクの拡張部分の実行コンテキストへ移ることを可能にさせる特権実行モードの存在を考慮するために修正された原理的な方法の手順の間に行われる以下の手順（ｌ）〜（ｍ）を更に含む。
【００５２】
手順（ｌ）では、予備段階中に、所与のアプリケーション毎に、かつ、上記タスクにおける許可された遷移状態の全てに対して、タスクの制御グラフ内で一方のノードから別のノードへ移るために要する最大実行時間の上界を構成する時間割当量を記憶し、各時間割当量は、タスクに固有の命令を実行する際に経過した時間と、タスクの実行におけるシステムレイヤの汎用コードの実行の際に経過した時間の両方の時間を対象とする。
【００５３】
手順（ｍ）では、第１のクロック１４がセットされた後、時間割り込み信号ｓｈによって始動されたマイクロカーネル呼び出しのイベントにおいて、第１のクロックをリセットさせ、マイクロカーネル呼び出しを始動した時間割り込み信号ｓｈが時間割当量を侵害しようとする状態と関連しているかどうかを検証するためにチェックを行ない、関連している場合に、マイクロカーネルに異常処理を実行させ、時間割り当て信号ｓｈが時間割当量を侵害しようとする状態と関連していない場合、マイクロカーネルにタスクリストを更新させ、タスクリストの更新後に、タスクが始動させられるべき直近の未来の時点と、マイクロカーネルを実行する際に実行中であるタスクに割り当てられた時間割当量が満了する未来の時点と、を計算させ、この時間はリストを更新する間に決定され、マイクロカーネルに第１のクロック１４を上記未来の時点の中の近い時点にセットさせ、これにより、タスクが始動されるか、又は、異常動作による時間割当量を侵害しようとする状態が検出され、第１のクロック１４をセットした後、マイクロカーネルから出る。
【００５４】
マイクロカーネルにおいてアプリケーションのタスクリストを更新する手続は、処理されているタスクに割り当てられた時間割当量を参照する好ましい実施態様に関して後述するように非常に明示的に行うことが可能であるが、時間割当量の参照が省略された場合には、簡単化された基本的な実施態様にも適用可能である。
【００５５】
実行中のマイクロカーネル呼び出し毎に、当該タスクの実行コンテキストのシステムレイヤ拡張部分とは無関係に、最先の開始時間ｄ（ｉ）と最後の完了時間ｆ（ｉ）の２個のパラメータがタスクリストの更新に関与し、実行の準備ができている適格なタスク、即ち、過去における最先の開始時間ｄ（ｉ）を有するタスクのリストと、実行の準備ができていないか、又は、始動されるのを待機している不適格なタスク、即ち、未来における最先の開始時間ｄ（ｉ）を有するタスクのリストの２個のタスクリストが管理される。適格なタスクのリストは、最後の完了時間が増大する順番に順序付けられ、不適格なタスクのリストは、最先の開始時間ｄ（ｉ）が増大する順番に順序付けられる。待機中のタスクは、全て、最先の開始時間に達したときに、「準備完了」状態へ移ることが保証されている。
【００５６】
（α）マイクロカーネル呼び出し中に、タスクの最先の開始時間ｄ（ｉ）に未だ達していない場合、タスクは不適格であり、不適格なタスクの順序付きリストへ移される。ここでは、最先の開始時間の順序に基づいてタスクが始動されるべき未来の時点を計算することが可能である。直近の未来の最先の開始時間は、問題となる次のタスクが適格になる（始動される）未来の時点を与える。
【００５７】
（β）これに対して、マイクロカーネル呼び出し中に、対象となるタスクの最先の開始時間ｄ（ｉ）が経過している場合、タスクは適格であり、適格なタスクの順序付きリストへ移される。マイクロカーネルは、最後の完了時間の順序付きリスト内に直近の未来の最後の完了時間を有する適格なタスクに制御を渡し、選択されたタスクに割り当てられた時間割当量が満了する未来の時点を計算する（ここで、この割当量は、直近の未来の最後の完了時間と現時点との間の差である。）。
【００５８】
（γ）それにもかかわらず、マイクロカーネル呼び出しが、現在処理されているタスクに割り当てられた時間割当量のためセットされているクロック１４によって行われた場合、マイクロカーネルは、アプリケーションによって指定された異常処理を実行することにより始まり、その後、マイクロカーネルは、動作（α）及び（β）を実行する。
【００５９】
２つの時点（タスクを始動する直近の未来の時間と、選択されたタスクに割り当てられた時間割当量が満了する未来の時間）に基づいて、マイクロカーネルは、（適切な時間にタスクを始動するため、又は、時間割当量に違反しようとする状態（企て）、即ち、異常動作を検出するための何れかのために）上記二つの時点のうちの近い方の時点で作動されるようにクロック１４をセットする。クロック１４がセットされた場合、マイクロカーネルは始動され、可能であれば、スイッチングによって始動される。
【００６０】
かくして、実行中に、動作状態タスクは、時間割り込みによって変更されるか、又は、動作状態タスクのノードの変化に続いて変更される。
【００６１】
時間割り込みの原因は、（時間トリガー方式の場合に）待機状態タスクが準備完了状態になることか、又は、動作状態タスクが割り当てられた時間割当量を使い尽くすことであり、この場合には、安全性チェックが行われる。
【００６２】
動作状態タスクがその制御グラフ内のノードを変更するとき、その最後の完了時間が延期されるか、又は、その最先の開始時間が延期される。前者の場合、動作中タスクの代わりに、他のタスクが動作状態になる。後者の場合、動作状態タスクは、その新しい最先の開始時間に達していないならば、待機状態タスクの集合に入れられる。
【００６３】
先取権の個数は有限であり限界があるので、先取権の個数の上限を解析的に計算することが可能である。
【００６４】
更に、時間割当量が、ノードの変更毎に更新され監視される限り、即座にタスクを限定するため、時間的な異常を検出することが可能である。
【００６５】
制御グラフによる正当な置き換えだけが許容される限り、タスクは、時間に送れずに挙動することが不可能であり、同じグラフを使用して統計的に評価されたリソース（例えば、通信のためのメモリ資源）よりも大量のリソースを消費することになる。
【００６６】
次に、特定の実時間タスクのための図３乃至６を参照して、本発明のセキュリティ方法の一実施例を説明する。
【００６７】
本例の場合、実時間タスクの機能は、測定値ｖが閾値ｔ２を上回る期間ｔ（ｖ）に亘って閾値ｓ１を超過した場合に、アラームを発行することである。
【００６８】
図３は、上記例に対応したタスクの処理を示すフローチャートである。
【００６９】
ステップ１０１は、初期ノード若しくはノード０を表し、システムレイヤ呼び出しが行われる。
【００７０】
ステップ１０２は、測定値ｖを獲得する第１のステップに対応する。
【００７１】
ステップ１０３は、テストに対応し、その後、処理は、
ｖ＜ｓ１であるならば、初期ノード１０１へ戻り、次にステップ１０２へ進み、
ｖ≧ｓ１であるならば、ステップ１０４のノード１へ進み、次に、ステップ１０５へ進む。
【００７２】
ステップ１０４のノード１において、システムレイヤ呼び出しが行われ、ステップ１０５において、期間ｔ（ｖ）が計算される。
【００７３】
ステップ１０５の後、テスト１０６が行われ、
ｔ（ｖ）＜ｓ２であるならば、初期ノード１０１へ戻り、
ｔ（ｖ）≧ｓ２であるならば、ステップ１０７のノード２へ進む。
【００７４】
第２のノード１０７では、システムレイヤ呼び出しが行われ、次に、処理は、ステップ１０８へ移り、アラームを発行し、その後、処理は初期ノード１０１へ戻る。
【００７５】
図４は、ノード１０１、ノード１０４及びノード１０７と関連した矢印付きアークとを含む、図３のフローチャートに対応した制御グラフである。
【００７６】
本例の場合、「ｖを獲得」（ステップ１０２）、「ｔ（ｖ）を計算」（ステップ１０５）、及び、「アラームを発行」（ステップ１０８）の動作を実行するため割り当てられた時間は、
獲得ステップ１０２：            １時間単位
計算ステップ１０５：            付加的な２時間単位
アラーム発行ステップ１０８：    １時間単位
である。
【００７７】
各ノード１０１、１０４及び１０７に対し、システムレイヤによって提供されるサービスと、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）に実行される動作は、以下の表に列挙されている。尚、初期化中に、最先の開始時間ｄ（０）はｄ（０）＝０となるように与えられ、最後の完了時間ｆ（０）はｆ（０）＝１時間単位となるように与えられている。
【００７８】
【表１】
2004535607.tif 000003
図６は、ノード０、ノード１及びノード２のテーブルを要約し、最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）で実行されるべき動作の説明を含む図表である。
【００７９】
更に、図４に示されたタスク制御グラフは、マトリックス形式に記号化することが可能であり、その場合、上記の例に対するタスク制御グラフは、次のように表現される。
【００８０】
【数１】
2004535607.tif 000004
式中、ｍｉｊは、ノードｉからノードｊへの移動が許可されている場合にＡであり、ノードｉからノードｊへの移動が禁止されている場合にＩである。
【００８１】
図５は、上記の実時間タスクの一実施態様と、関連した時間値とを説明するタイミングチャートである。数字１乃至１０は、時間トリガーモードにおける動作の開始からの時間単位の数で実時間を指定する。
【００８２】
本発明のセキュリティモードは、メッセージによって相互に通信するマルチタスクアプリケーションの実時間実行が決定論的であることを保証するためにも適合している。
【００８３】
このような状況において、本発明の方法は、示されたタスク間の通信を伴わないタスクアプリケーションを用いる原理的な方法に関して説明したステップの間に行われる以下の特定のステップを含む。
【００８４】
ステップ（ｎ）では、予備段階中に、所与のアプリケーションのタスク毎に、そのタスクの時間同期用のポイントの許可された遷移状態の全てを記憶し、アプリケーションの他のタスクとの通信のため、システムレイヤ呼び出しを要求し、これらの許可された遷移状態は、当該タスクによって行われたシステムレイヤ呼び出しの実行用の制御グラフにより表現され、各グラフはノードの集合により構成され、各ノードはシステムレイヤ呼び出しに対応する。
【００８５】
ステップ（ｏ）では、タスク間でデータを交換するため必要とされる各バッファゾーンを記憶し、バッファゾーンのサイズと、バッファゾーンに収容される要素のサイズと、ロケーション若しくはベースアドレスと、通信を確認するため必要とされる情報転送を可能にするバッファゾーン間の関係と、を指定する。
【００８６】
ステップ（ｐ）では、バッファゾーン毎に、その要素の初期値を記憶する。
【００８７】
ステップ（ｑ）では、所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、メモリに先に格納されていた値を用いてバッファゾーンの要素の値を初期化する。
【００８８】
ステップ（ｒ）では、タスクの実行中に、タスク制御グラフのノードに達したときにシステムレイヤ呼び出しを実行し、現在実行されているタスクの制御グラフに応じて、先行のシステムレイヤ呼び出しに対応するノードからの遷移状態が許可されているかどうかを検証した後に、先に格納された呼び出しの性質に応じてバッファゾーンを連続的に更新させ、必要に応じて、最先の開始時間ｄ（ｉ）と最後の完了時間ｆ（ｉ）を含む実行されるタスクの時間パラメータの増分的な更新を実行する。
【００８９】
第１の実行コンテキストと第２の実行コンテキストがアプリケーションの各タスクとシステムレイヤへの拡張部分に対して定義されたとき、以下の特定の特徴があてはまる。
【００９０】
システムレイヤでは、バッファゾーンだけがアプリケーションのタスクの実行コンテキストの拡張部分によって共用されることが許可され、メッセージ送信に対応した動的通信のための所与のバッファゾーンは２個のタスク実行コンテキスト拡張部分だけによって共用可能であり、一方、タイムスタンプ付きデータのストリームに対応した静的通信用のバッファゾーンは、３個以上のタスク実行コンテキスト拡張部分によって共用可能であるが、単独のコンテキストによって書き込み若しくは修正を行ってもよい。
【００９１】
次に、図７乃至１３を参照して、メッセージを用いて通信する二つの実時間タスクに関係する本発明のセキュリティ方法の一実施例を説明する。
【００９２】
この簡単な例では、実行される機能は、測定値ｖが閾値ｓ１を超過し、かつ、測定値が閾値ｓ１を超過している期間ｔ（ｖ）が閾値ｓ２を上回る場合に、アラームランプを点灯する機能を含む。
【００９３】
一方の処理タスクは、測定値ｖを獲得し、必要に応じて、指定されたランプを点灯するアラームタスクにメッセージを送信する。
【００９４】
図７は、本例の処理タスクを実行する処理に対応したフローチャートである。
【００９５】
ステップ１１１は、初期ノード若しくはノード０を表し、システムレイヤ呼び出しが行われる。
【００９６】
第１のステップ１１２は、測定値ｖを獲得するステップであり、測定値ｖを閾値ｓ１と比較するテストステップ１１３と関連付けられる。
【００９７】
ステップ１１３では、ｖ＜ｓ１であるならば、タスクは、初期ノード１１１へ戻り、ｖ≧ｓ１であるならば、タスクはステップ１１４のノード１へ進み、ノード１でシステムレイヤ呼び出しを行う。
【００９８】
ステップ１１４のノード１に続く第２のステップ１１５は、期間ｔ（ｖ）を計算するステップに対応する。
【００９９】
ステップ１１５と関連したステップ１１６のテストは、期間ｔ（ｖ）を閾値ｓ２と比較する。
【０１００】
ｔ（ｖ）＜ｓ２であるならば、タスクは初期ノード１１１へ戻り、
ｔ（ｖ）≧ｓ２であるならば、タスクはステップ１１７のノード２へ進み、システムレイヤ呼び出しを行う。
【０１０１】
ステップ１１７のノード２の後に、タスクは、ステップ１１８のノード３へ進み、システムレイヤ呼び出しが行われ、次に、初期ノード１１１へ戻る前にアラームメッセージを送信する第３のステップが行われる。
【０１０２】
図８は、図７のフローチャートに対応した、ノードと許可されたアークを含む制御グラフを示す図である。
【０１０３】
図９は、本例におけるアラームタスクの実行に対応したフローチャートである。
【０１０４】
ステップ１２１は、初期ノード若しくはノード０を表し、ここで、システムレイヤ呼び出しが行われる。
【０１０５】
テストステップ１２２は、メッセージが受信されたかどうかを調べる。
【０１０６】
メッセージが存在しない場合、タスクは、ステップ１２３へ進み、アラームランプを消灯し、その後、タスクは初期ノード１２１へ戻る。
【０１０７】
１個以上のメッセージが存在する場合、タスクは、ステップ１２４のノード１へ進み、システムレイヤ呼び出しを行ない、次に、ステップ１２５へ進み、アラームランプを点灯して、初期ノード１２１へ戻る。
【０１０８】
図１０は、図９のフローチャートに対応した、ノードと許可されたアークを含む制御グラフを示す図である。
【０１０９】
本例の場合、ステップ１１２、１１５、１１８、１２３及び１２５に対応した「ｖを獲得」、「ｔ（ｖ）を計算」、「メッセージを送信」、「消灯」、及び、「点灯」の動作を実行するために許容される時間は、
「ｖを獲得」：            １時間単位
「ｔ（ｖ）を計算」：      付加的な２時間単位
「メッセージを送信」：    １時間単位であるが、メッセージは２時間単位内に利用可能
「消灯」：                １時間単位
「点灯」：                １時間単位
である。
【０１１０】
システムレイヤによって提供されるサービスと、（ｄ（０）＝０かつｆ（０）＝１であるとして）最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）、並びに、メッセージが可視的になる時間ｄＶに実行される動作は、二つのタスクの各々のノード毎に次のように与えられる。
【０１１１】
【表２】
2004535607.tif 000005
図１２は本例の処理タスクに関係し、図１３は本例のアラームタスクに関係し、最先の開始時間ｄ（ｉ）、最後の完了時間ｆ（ｉ）及び可視性時間ｄＶに実行されるべき動作の説明を含むノードのテーブルを表す。
【０１１２】
処理タスク及びアラームタスクの制御グラフは、以下のようにマトリックス形式に記号化することが可能である。
【０１１３】
【数２】
2004535607.tif 000006
【０１１４】
【数３】
2004535607.tif 000007
式中、ｍｉｊは、ノードｉからノードｊへの移動が許可されている場合にＡであり、ノードｉからノードｊへの移動が禁止されている場合にＩである。
【０１１５】
図１１は、上述の二つの通信タスクの実施例を表すタイミングチャートであり、関連した時間値が示されている。数字１乃至１０は、時間トリガーモードにおける動作の開始からの実時間を時間単位の数で指定する。
【０１１６】
一つのタイプのメッセージだけが所与のメッセージキューに格納される。メッセージ可視性時間ｄＶは、送信された各メッセージと関連付けられる。時間ｄＶは、送り先がメッセージを使用できるようになる未来の時点を指定する。メッセージは、可視性時間ｄＶの順番に、次に、送信元の名前の順番に、そして最後に、送信順に使用（消費）されるので、使用目的のためメッセージを完全に順序付けることが可能になる。
【０１１７】
メッセージキュー毎に、各送信元のコンテキスト内に送信ゾーンと、当該メッセージキューの所有者用の受信ゾーンとが存在する。
【０１１８】
各作成者（送信元）は送信ゾーンを保有しているので、二つの異なるタスクから送信された２個のメッセージの間に競合の問題が生じることはない。
【０１１９】
更に、上述の通り、メモリをセグメント化することにより、タスクの故障の影響がそのタスクの固有のメモリ空間に制限される。したがって、あるタスクからアプリケーション内の別のタスクへの故障伝播は起こり得ない。
【０１２０】
メモリセグメント化を使用することによって、タスクの時間トリガー（ＴＴ）の時間間隔内で、タスクの実行コンテキストは、新しい命令の開始と前の命令の終了との間で変化しない、という特性を得ることが可能になる。
【０１２１】
メモリセグメント化は、システムレイヤを内部的に分割し、マイクロカーネルをシステムレイヤの残りの部分から分離するために、システムレイヤ自体に適用される。
【０１２２】
メモリ保護ユニット１６は、物理的なアーキテクチャの観点からメモリセグメント化を実施することが可能であるハードウェアメカニズムを構成する。
【０１２３】
図２は、ユーザ実行モード２０１（即ち、非特権モード）によるアプリケーションレベルから、特権実行モードを備えたシステムレイヤ２０２を介して、マイクロカーネル２０３へ至る最終的なコード奥行きの分布の説明図である。
【０１２４】
特権実行モードを備えたシステムレイヤ２０２へのアクセスは、「トラップ」型の分岐命令によって保護され、システムレイヤ２０２からマイクロカーネル２０３への経路は、ｍｏｖｅ（移動）型の命令によってトリガーされる。
【０１２５】
クロック１４は、時間トリガーを供給し、プログラマブルな時間量が経過したときにクロック割り込み信号ｓｈを発行する。
【０１２６】
図２では、アプリケーションレベル２０１に様々なタスクのコード及びデータが存在し、システムレベルレイヤ２０２には、タスクコンテキストのシステムレイヤへの拡張部分と、システムレイヤのコードとが存在する。マイクロカーネルレベル２１３には、プロセッサのタスクへの割当を管理し、時間を管理するマイクロカーネルのデータ及びコードが存在する。
【０１２７】
次に、本発明のセキュリティ方法の一実施例におけるセグメント化されたメモリの種々のセグメントの権利を表す詳細なテーブルである図１４について説明する。
【０１２８】
上述の通り、マルチタスクアプリケーションは、特定コード、タスク、時間変数のストリーム、メッセージボックス、タスク間で情報を転送するためのシステムレイヤ、アプリケーションコードにおけるタスクの動きを監視するグラフ実行部、及び、時間とプロセッサ共有を管理するマイクロカーネルにより構成される。
【０１２９】
メモリは、プロセッサの実行コンテキストに依存したアクセス権を保有するセグメントに細分される。
【０１３０】
図１４の表を理解するために、用語の定義を説明する。
．ｉｎｓｔ：メモリ内の連続命令の組である。
．ｃｏｎｓｔ：一定値の連続データ項目の組である。
．ｖａｒ：命令によって変更可能な連続データ項目の組である。
Ｉ：セグメントの命令を実行する権利（資格）である。
Ｍ：セグメントを変更し閲覧するための権利（資格）である。
Ｃ：閲覧に制限された（リードオンリー）セグメントへのアクセス権である。
Ｒ：セグメントへのアクセスが拒絶されている。
【０１３１】
セグメントは、アプリケーション専用であるか、ＣＰＵ１０及びそのプロセッサに関する本発明のモデルにリンクされているかどうかに応じてゾーンに分類される。
【０１３２】
タスク毎に、一連のゾーンＣＴ、ＦＴ、ＢＭ、ＭＥ、ＶＴ及びＰＵが設けられる。以下、これらのアプリケーションゾーンを説明する。
【０１３３】
タスク計算ゾーンＣＴ：
．ｃｏｎｓｔ及び．ｖａｒ：非特権モードにおけるスタックを含むタスクデータである。
．ｉｎｓｔ：タスク計算である。
【０１３４】
タスク動作ゾーンＦＴ：
．ｃｏｎｓｔ：タスクの動作（実行グラフ、ノード記述、期限、ＣＰＵによって計算される時間増分量など）の説明である。
．ｖａｒ：システムレイヤへ引数を渡すためのゾーンである。
．ｉｎｓｔ：システムレイヤからのノードの変更を要求する機能である。
【０１３５】
メッセージボックスゾーンＢＭ：
．ｃｏｎｓｔ：タスクの各メッセージボックスの特性であり、送信ゾーン（ゾーンＭＥ）へのコネクションが含まれる。
．ｖａｒ：現時点でタスクがアクセス可能な全メッセージである。
【０１３６】
メッセージ記憶ゾーンＭＥ：
．ｃｏｎｓｔ：タスクによって送信され、送信先タスクからは見えないメッセージ用の記憶ゾーンの記述である。
．ｖａｒ：記憶ゾーン自体である。
【０１３７】
時間変数ゾーンＶＴ：
．ｃｏｏｎｓｔ：タスクの記憶ゾーンの記述であり、タスクから見える時間変数のストリームの値は、その値を生成したゾーンへのコネクションを含む。
．ｖａｒ：渡された可視性値に対するタスク用の記憶ゾーンである。
【０１３８】
ゾーンＰＵ：
．ｖａｒ：プロセッサによって必要とされる一時的作業データ、タスクの現在のコンテキスト、特権モードスタックである。
【０１３９】
更に、以下に説明するように全てのタスクに共通したグローバルアプリケーションゾーンが存在する。
【０１４０】
グローバルゾーンＧ：
．ｃｏｎｓｔ：アプリケーションのグローバル定数（タスク数、タスク記述子の参照名、クロックの記述など）と、システムレイヤとのインタフェースを提供する定数である。
【０１４１】
システムレイヤ自体は、以下のゾーンＣＳを含む。
【０１４２】
システムレイヤゾーンＣＳ：
．ｃｏｎｓｔ：参考のため。
．ｖａｒ：空である（過去はゾーンＰＵのセグメント．ｖａｒに記憶される。）。
．ｉｎｓｔ：グラフ実行部用の命令、メッセージボックス管理用の命令、時間変数のストリームの過去の値を利用可能にするための命令、クロックを管理し期限を計算するための命令である。
【０１４３】
次に、システムレイヤに共通である転送ゾーンＴＲを説明する。
【０１４４】
転送ゾーンＴＲ：
．ｃｏｎｓｔ：参考のため。
．ｖａｒ：動作状態タスクの識別情報である。
．ｉｎｓｔ：メモリへのハードウェアアクセス権を変更する命令と、システムレイヤ又はマイクロカーネルへ分岐する命令えある。
【０１４５】
マイクロカーネルは、以下のゾーンＭＮ及びゾーンＲＳを含む。
【０１４６】
ゾーンＭＮ：
．ｃｏｎｓｔ：参考のため。
．ｖａｒ：ハードウェアを管理するために必要なデータである（時間を管理、「トラップ」命令を管理など）。
．ｉｎｓｔ：期限に応じて準備完了タスク又は休止状態タスクの組を管理する命令、ハードウェアコンテキストをバックアップし変更する命令、プロセッサを使用するため使い尽くされた権利のためのクロック割り込みを管理する命令、並びに、ＣＰＵ上で利用可能なメモリ保護機能を実施する命令である。
【０１４７】
ゾーンＲＳ：
．ｃｏｎｓｔ：参考のため。
．ｖａｒ：空である。
．ｉｎｓｔ：メモリ保護無しで動作するＣＰＵとソフトウェアを初期化する命令である。
【０１４８】
所与の時点で、プロセッサは、アプリケーションコード（非特権モード）におけるタスクのために、システムレイヤ（特権モード）におけるタスクのために、或いは、マイクロカーネルにおけるタスクのために動作する。
【０１４９】
図１４の表の行は、上述のタスクのセグメントと、システムレイヤのセグメントと、マイクロカーネルのセグメントを表す。列は、プロセッサがタスクのアプリケーションコードの命令を実行中であるか（列３０１）、タスクのためのシステムレイヤのコードの命令を実行中であるか（列３０２）、別のタスクのためのシステムレイヤのコードの命令を実行中であるか（列３０３）、ＣＰＵの初期化後にマイクロカーネルのコードの命令を実行中であるか（列３０４）に応じて、メモリへのアクセス権を表現する。
【０１５０】
一般的に、メモリは、ページに分割可能であり、ページは、書き込み保護の状態、欠けている状態、或いは、利用可能な状態をとりえる。このような状況において、セグメントサイズは、１ページの倍数に切り上げられ、．ｃｏｎｓｔ及び．ｖａｒは、併合され、書き込み保護され、アクセス権がＲであるページは、欠けているか、又は、記述から削除される。
【図面の簡単な説明】
【図１】
本発明のセキュリティ方法が適用される制御システムのアーキテクチャの略構成図である。
【図２】
本発明による方法において、システムレイヤ及びマイクロカーネルの深さ方向へ分布するコードの説明図である。
【図３】
本発明によるセキュリティ方法における実時間タスクの一例の処理に対応したフローチャートである。
【図４】
図３のフローチャートに対応した制御グラフである。
【図５】
本発明によるセキュリティ方法を使用して図３及び４の実時間タスクの例を処理する期間中のタイミングチャートと関連した時間値の一例の説明図である。
【図６】
最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）で実行されるべき動作の説明を含む図４の制御グラフのノードの表である。
【図７】
本発明によるセキュリティ方法を使用して第２のタスクと通信する第１の実時間タスクの一例の処理に対応したフローチャートである。
【図８】
図７のフローチャートに対応した制御グラフである。
【図９】
図７のフローチャートに示された第１の実時間タスクと通信する第２の実時間タスクの一例の処理に対応したフローチャートである。
【図１０】
図９のフローチャートに対応した制御グラフである。
【図１１】
本発明によるセキュリティ方法を使用して、図７乃至１０に示された相互通信タスクの例を処理する期間中のタイミングチャート及び関連した時間値の一例の説明図である。
【図１２】
最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）におけるメッセージに実行されるべき動作の説明を含む図８の制御グラフのノードの表である。
【図１３】
最先の開始時間ｄ（ｉ）及び最後の完了時間ｆ（ｉ）におけるメッセージに実行されるべき動作の説明を含む図１０の制御グラフのノードの表である。
【図１４】
タスクとシステムレイヤとマイクロカーネルのうちのどれを実行中であるかに応じて、本発明の方法の一例におけるメモリセグメントへのプロセッサのアクセス権を示す詳細な表である。
【図１】
2004535607.tif 000008
【図２】
2004535607.tif 000009
【図３】
2004535607.tif 000010
【図４】
2004535607.tif 000011
【図５】
2004535607.tif 000012
【図６】
2004535607.tif 000013
【図７】
2004535607.tif 000014
【図８】
2004535607.tif 000015
【図９】
2004535607.tif 000016
【図１０】
2004535607.tif 000017
【図１１】
2004535607.tif 000018
【図１２】
2004535607.tif 000019
【図１３】
2004535607.tif 000020
【図１４】
2004535607.tif 000021
【国際公開パンフレット】
2004535607.tif 000022
2004535607.tif 000023
2004535607.tif 000024
2004535607.tif 000025
2004535607.tif 000026
2004535607.tif 000027
2004535607.tif 000028
2004535607.tif 000029
2004535607.tif 000030
2004535607.tif 000031
2004535607.tif 000032
2004535607.tif 000033
2004535607.tif 000034
2004535607.tif 000035
2004535607.tif 000036
2004535607.tif 000037
2004535607.tif 000038
2004535607.tif 000039
2004535607.tif 000040
2004535607.tif 000041
2004535607.tif 000042
2004535607.tif 000043
2004535607.tif 000044
2004535607.tif 000045
2004535607.tif 000046
2004535607.tif 000047
2004535607.tif 000048
2004535607.tif 000049
2004535607.tif 000050
2004535607.tif 000051
2004535607.tif 000052
2004535607.tif 000053
2004535607.tif 000054
2004535607.tif 000055
2004535607.tif 000056
2004535607.tif 000057
2004535607.tif 000058
2004535607.tif 000059
2004535607.tif 000060
2004535607.tif 000061
2004535607.tif 000062
2004535607.tif 000063
2004535607.tif 000064
2004535607.tif 000065
2004535607.tif 000066
2004535607.tif 000067
【国際調査報告】
2004535607.tif 000068
2004535607.tif 000069
2004535607.tif 000070
2004535607.tif 000071
2004535607.tif 000072
2004535607.tif 000073