JP3921447B2 - エラーを抑制して制御・コマンド型のマルチタスクアプリケーションを決定論的に実時間で実行するセキュリティ方法 - Google Patents

エラーを抑制して制御・コマンド型のマルチタスクアプリケーションを決定論的に実時間で実行するセキュリティ方法 Download PDF

Info

Publication number
JP3921447B2
JP3921447B2 JP2002541533A JP2002541533A JP3921447B2 JP 3921447 B2 JP3921447 B2 JP 3921447B2 JP 2002541533 A JP2002541533 A JP 2002541533A JP 2002541533 A JP2002541533 A JP 2002541533A JP 3921447 B2 JP3921447 B2 JP 3921447B2
Authority
JP
Japan
Prior art keywords
task
time
execution
system layer
microkernel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2002541533A
Other languages
English (en)
Other versions
JP2004535607A (ja
Inventor
ダヴィド,ヴァンサン
デルクワーニュ,ジャン
Original Assignee
コミッサリヤ ア レネルジー アトミック
フラマトーム アエヌペ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by コミッサリヤ ア レネルジー アトミック, フラマトーム アエヌペ filed Critical コミッサリヤ ア レネルジー アトミック
Publication of JP2004535607A publication Critical patent/JP2004535607A/ja
Application granted granted Critical
Publication of JP3921447B2 publication Critical patent/JP3921447B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Alarm Systems (AREA)

Description

【0001】
本発明は、調節可能な時間量が経過したときに割り込み信号を発生する少なくとも第1のクロックと、上記クロック割り込み信号を受け取る能力を備えている少なくとも一つの中央処理ユニットと、主メモリと、制御システムの入出力を管理する周辺コントローラの組と、を含む制御システムにおいて、制御・コマンド型のマルチタスクアプリケーションの実時間セキュリティ方法に関する。
【0002】
時間のスケールが異なり、データ交換が伴う様々なプロセス(入出力、計算など)のマルチタスク管理用システムにおいて、全てのプロセスが実時間で同期し協調させられている場合、決定論的な方式で、即ち、相互作用する全てのタスクの全体的な挙動と環境が一意的かつ不変的である方式で、プロセスを実時間で実行する能力を備えていることが望ましい。更に、実時間プロセスの実行は、安全になされること、即ち、動作異常が存在する場合にできるだけ決定論的であり続けながら、様々なタスクが故障とは独立していることが保証されるように異常を検出し、異常を限定することが望ましい。
【0003】
多数のマルチタスク管理システムが公知になっている。しかし、殆どのマルチタスク管理システムは、非同期的であり、非決定論的である。更に、このようなシステムは、ある種の故障モードが伝播することを阻止しないように設計されている。
【0004】
より詳細には、仏国特許出願2771828号には、正当に実行中のタスクを常に識別する時間分割若しくは空間分割による故障検出システムを装備しているマルチタスク・コンピュータのセキュリティ方法が開示されている。
【0005】
循環的順序型のシステムに関連しているこの文献によれば、分割(パーティショニング)は、故障の伝播を制限するため使用されるが、区画(パーティション)の間で通信は行われず、即ち、全体的なレベルではマルチタスク管理が行われない。更に、区画内で故障が伝播する可能性が依然として残り、最高のセキュリティを実現できない。
【0006】
文献:仏国特許出願2771828号によれば、このように、決定論的挙動を獲得することは、マルチタスク管理と相容れないように思われる。
【0007】
本発明は、従来技術の問題点を解決し、性能が向上し安全性が高められた高度統合化制御システムを実現できるようにすることを目的とする。
【0008】
より詳細には、本発明は、コンピュータを使用して、実時間で、かつ、決定論的な方式で、エラーが抑制され、耐故障性のある確実なマルチタスク実行を達成できるようにすることを目的とする。
【0009】
かくして、本発明は、明示的な通信(タイムスタンプ付きメッセージ)と非明示的な通信(タイムスタンプ付きデータのストリーム)を用いて、循環的タスクと非循環的タスクの両方に対して、マルチタスクアプリケーションの実時間で高度に決定論的に実行することを保証するセキュリティを提供できるようにすることを目的とする。
【0010】
これらの目的は、制御システムにおける制御・コマンド型のマルチタスクアプリケーションの実時間(リアルタイム)実行を決定論的にするセキュリティ方法によって達成される。このセキュリティ方法は、
調節可能な時間量が経過したときに割り込み信号shを発行する少なくとも第1のクロックと、
少なくとも上記クロック割り込み信号shを受ける能力を備えている少なくとも一つのプロセッサを含む中央プロセッサユニット(CPU)と、
主メモリと、
制御システムの入出力を管理する周辺機器を制御するコントローラの組と、
が設けられ、
この方法は、所定のアプリケーションのタスク毎に、システムレイヤ呼び出しを要求するタスクの各時間同期ポイントから許可された遷移状態(チェインニング)の全てを記憶する手順(a)を含み、
上記遷移状態は、当該タスクによってなされたシステムレイヤ呼び出しの実行を監視する制御グラフによって表現され、各制御グラフは、制御システムのシステムレイヤ呼び出しに各々が対応しているノードの組により構成され、
この方法は、各タスクの制御グラフのノード毎に、システムレイヤ呼び出しの性質及び呼び出しパラメータを記憶する手順(b)を含み、呼び出しパラメータには、最先の開始時間d(i)及び最後の完了時間f(i)を更新することができる時間パラメータが含まれ、
この方法は、
タスク毎に、関連したグラフに初期ノードを記憶する手順(c)と、
所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、タスク毎に、初期ノード及び当該タスクの初期状態を表現する初期時点を初期化する手順(d)と、
所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、アトミック・マイクロカーネル内のタスクのリストを予め順序付けることにより、各タスクの開始順序を初期化する手順(e)と、
時間トリガーモードにおける上記アプリケーションの実行を開始するアプリケーションの第1の時点に、マイクロカーネル呼び出しを構成するクロック割り込み信号shを発行するため第1のクロックをセットする手順(f)と、
第1のクロックがセットされた後の通常動作中に、マイクロカーネル呼び出し毎にマイクロカーネルによって第1のクロックをリセットさせ、システムレイヤ若しくは割り込み信号shの処理によるマイクロカーネル呼び出し中に、マイクロカーネルに、タスクの時間特性、即ち、最先の開始時間d(i)及び最後の完了時間f(i)に応じて順序付けられたタスクのリストを更新させ、リストを更新した後に、マイクロカーネルに、タスクを開始する必要がある直近の未来の時点を計算させ、上記タスクを開始し、マイクロカーネルから出るための上記直近の未来の時点に基づいて第1のクロックをマイクロカーネルによってセットさせる手順(g)と、
タスクを実行している間に、上記タスクの制御グラフのノードに達した時に限りシステムレイヤ呼び出しを行ない、引数としてノードの数を渡し、システムレイヤのエントリーへ進み、実行中の制御グラフに応じて、先行のシステムレイヤに対応するノードからの遷移状態が許可されているかどうかを検証するためのチェックを行ない、上記遷移状態が許可されていない場合にシステムレイヤ内で異常処理を開始し、上記遷移状態が許可されている場合には実行を継続し、システムレイヤからのマイクロカーネル呼び出しを使用して、最先の開始時間d(i)及び最後の完了時間f(i)を含む実行されているタスクの時間パラメータを更新し、上記タスクがその制御グラフのノードに達するまで現在のタスクの通常実行を継続する手順(h)と、
を有する。
【0011】
より詳細には、本発明のセキュリティ方法は、アドレス指定アクセス権を制御するメモリ保護ユニットを更に具備した制御システムに適用され、メモリ保護ユニットは、アドレス指定可能なメモリ空間へアクセスするため、排他的に、許可されたアドレス指定を表すアクセスを与える有効アドレスavを発行するか、又は、例外信号seをCPUへ発行することにより、CPUによって供給された要求アドレスadと、プロセッサの実行コンテキストの権利に応答し、
本発明のセキュリティ方法は、
準備段階中に、所与のアプリケーションに対し、マイクロカーネル及び各アプリケーションタスクのための各メモリセグメントへのアクセス権を記憶し、システムレイヤにおける各タスクの拡張のため、命令がタスクを構成するアプリケーションに固有のコード内にあるか、又は、命令がシステムレイヤにおけるタスクの拡張を構築するシステムレイヤの汎用コード内にあるかに応じて、第1の実行コンテキストと第2の実行コンテキストを構築する手順(i)と、
所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、マイクロカーネルコンテキストと、システムレイヤ内の各タスクとそのタスクの拡張部分に関する第1及び第2の実行コンテキストと、を初期化する手順(j)と、
タスクの実行中に、タスクの実行コンテキストからシステムレイヤにおけるタスクの拡張部分の実行コンテキストへ移ることを可能にさせる特権実行モードへ移るための命令を使用して、システムレイヤ呼び出しを行ない、先行のシステム呼び出しに対応したノードからの遷移状態が許可されていることを検証した後、かつ、システムレイヤからのマイクロカーネル呼び出しを使用してタスクのパラメータを更新した後に、システムレイヤの拡張部分の実行コンテキストからタスクの実行コンテキストへ実行を移すことができる非特権モードへ戻るための命令を用いてタスクのコードへ戻る手順(k)と、
を有する。
【0012】
好ましくは、各アプリケーションタスクの実行コンテキストは、二つ一組になって分離している。
【0013】
本発明の方法の特有の特徴によれば、アプリケーションタスクのコンテキストの実行部分のシステムレイヤへの拡張部分は、アプリケーションコードにおけるタスクの実行コンテキストから書き込みアクセスができない。
【0014】
タスクの制御グラフのコーディングは、アプリケーションのタスクの実行を制御するメカニズムと上記タスク自体の実行の両方に生じる共通の原因による故障を阻止する。
【0015】
本発明の方法は、更に、
予備段階中に、所与のアプリケーション毎に、かつ、上記タスクにおける許可された遷移状態の全てに対して、タスクの制御グラフ内で一方のノードから別のノードへ移るために要する最大実行時間の上界を構成する時間割当量を記憶する手順(l)が設けられ、各時間割当量は、タスクに固有の命令を実行する際に経過した時間と、タスクの実行におけるシステムレイヤの汎用コードの実行の際に経過した時間の両方の時間を対象とし、
第1のクロックがセットされた後、時間割り込み信号shによって始動されたマイクロカーネル呼び出しのイベントにおいて、第1のクロックをリセットさせ、マイクロカーネル呼び出しを始動した時間割り込み信号shが時間割当量を侵害しようとする状態と関連しているかどうかを検証するためにチェックを行ない、関連している場合に、マイクロカーネルに異常処理を実行させ、時間割り当て信号shが時間割当量を侵害しようとする状態と関連していない場合、マイクロカーネルにタスクリストを更新させ、タスクリストの更新後に、タスクが始動させられるべき直近の未来の時点と、マイクロカーネルを実行する際に実行中であるタスクに割り当てられた時間割当量が満了する未来の時点と、を計算させ、この時間はリストを更新する間に決定され、マイクロカーネルに第1のクロックを上記未来の時点の中の近い時点にセットさせ、これにより、タスクが始動されるか、又は、異常動作による時間割当量を侵害しようとする状態が検出され、第1のクロックをセットした後、マイクロカーネルから出る手順(m)が設けられている。
【0016】
第2のクロックが制御システムに組み込まれたとき、本発明の方法の固有の特徴によれば、マイクロカーネルは、時間信号を比較することにより第1のクロックによってトリガーされた時間の流れを監視するため、第2のクロックへアクセスするようにさせられる。
【0017】
制御・コマンド型の通信マルチタスクアプリケーションの実時間実行を決定論的にさせるために適合した本発明のセキュリティ方法は、更に、
予備段階中に、所与のアプリケーションのタスク毎に、そのタスクの時間同期用のポイントの許可された遷移状態の全てを記憶し、アプリケーションの他のタスクとの通信のため、システムレイヤ呼び出しを要求する手順(n)が設けられ、これらの許可された遷移状態は、当該タスクによって行われたシステムレイヤ呼び出しの実行用の制御グラフにより表現され、各グラフはノードの集合により構成され、各ノードはシステムレイヤ呼び出しに対応し、
タスク間でデータを交換するため必要とされる各バッファゾーンを記憶し、バッファゾーンのサイズと、バッファゾーンに収容される要素のサイズと、ロケーション若しくはベースアドレスと、通信を確認するため必要とされる情報転送を可能にするバッファゾーン間の関係と、を指定する手順(o)が設けられ、
バッファゾーン毎に、その要素の初期値を記憶する手順(p)が設けられ、
所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、メモリに先に格納されていた値を用いてバッファゾーンの要素の値を初期化する手順(q)が設けられ、
タスクの実行中に、タスク制御グラフのノードに達したときにシステムレイヤ呼び出しを実行し、現在実行されているタスクの制御グラフに応じて、先行のシステムレイヤ呼び出しに対応するノードからの遷移状態が許可されているかどうかを検証した後に、先に格納された呼び出しの性質に応じてバッファゾーンを連続的に更新させ、必要に応じて、最先の開始時間d(i)と最後の完了時間f(i)を含む実行されるタスクの時間パラメータの増分的な更新を実行する手順(r)が設けられている。
【0018】
本発明の固有の特徴によれば、システムレイヤにおいて、バッファゾーンだけがアプリケーションのタスクの実行コンテキストの拡張部分によって共有されることが許可され、メッセージ送信に対応した動的通信のための所与のバッファゾーンは2個のタスク実行コンテキスト拡張部分だけによって共有可能であり、一方、タイムスタンプ付きデータのストリームに対応した静的通信用のバッファゾーンは、3個以上のタスク実行コンテキスト拡張部分によって共有可能であるが、システムレイヤ内にコンテキスト拡張部分を保有するタスクだけによって修正することが可能である。
【0019】
特に、本発明の方法は、原子炉用の安全クラス・レベル1Eの制御・コマンド型システムに適用可能である。
【0020】
本発明のその他の特徴並びに効果は、添付図面を参照して例示された以下の特定の実施例の説明から明らかになるであろう。
【0021】
次に、本発明のセキュリティ方法が適用される制御システムの簡略化されたアーキテクチャの一例を表す図1を参照して説明を始める。
【0022】
制御システムは、プログラム可能な時間量が経過したときにライン22を介して割り込み信号shを送信する少なくとも第1のクロック14を含む。中央プロセッサユニット(CPU)10は、ライン21を介してデータを受け取り、ライン22を介して割り込み信号shを受け取る能力を備えている少なくとも一つのプロセッサを含む。
【0023】
CPU10は、ライン23、24を介して、アドレス信号を主メモリへ送出する役目を果たす。主メモリは、読み出し専用メモリ(ROM)12と、ランダムアクセスメモリ(RAM)13と、を含む。
【0024】
ROM12は、少なくとも、関係しているアプリケーションのプログラムを含む情報(A)と、アプリケーションの定数テーブル及びデータを含む情報(B)とを格納する。
【0025】
RAM13は、アプリケーションプログラムの作業変数データを格納する。
【0026】
周辺機器1乃至Nのコントローラ11乃至1Nは、制御システムの入力及び出力の実時間管理を行うために役立つ。
【0027】
第2のクロック15は、クロック14の適切な動作の付加的な監視を行うため設けられる。
【0028】
制御システムは、アドレス指定アクセス権を強化するメモリ保護ユニット16を更に含む場合がある。
【0029】
アドレス指定可能なメモリ空間にアクセスするため、CPU10によってライン23を介してメモリ保護ユニット16へ供給された要求アドレスad、並びに、ROM12をメモリ保護ユニット16へ接続するライン26を介して供給されるようなプロセッサの様々な実行コンテキストの権利(D)から始めて、上記メモリ保護ユニット16は、排他的な方式で、メモリ12及び13に接続されたライン24を介して周辺コントローラ11乃至1Nにアクセス権を与える有効アドレスavを生成するか、又は、アドレス指定が許可されていないことを示す例外信号seを、ライン25を介してCPU10へ与える。
【0030】
メモリ保護ユニット16は、標準的なメモリ管理ユニット(MMU)に存在するメカニズムによって構成してもよい。
【0031】
CPU10のプロセッサは、少なくとも1個のクロック割り込み信号shと、許可されていないアドレス指定を知らせる例外信号seと、を受ける能力を備え、「システムレイヤ呼び出し」型の命令によってアクセスが保護されている特権実行モードを保有し、この命令は、例えば、分岐命令若しくは「トラップ」命令によって構成される。
【0032】
一般的に、本発明は、明示的な通信(タイムスタンプ付きメッセージ)及び非明示的な通信(タイムスタンプ付きデータのストリーム)を用いて実時間で確実な決定論的マルチタスク処理を行う時間トリガー方式アーキテクチャ(TTA)を有するタイプの管理システムに関係し、タスク自体は循環的でも非循環的でも構わない。
【0033】
より詳細には、本発明によるセキュリティ方法において、(特権モード実行呼び出しを用いた)制御システムのシステムレイヤ呼び出しは、特定の方式で管理され、エラーを検出し発見することが可能であり、挙動が決定論的かつ予測可能であることを保証し得る。
【0034】
本発明において、システムレイヤ呼び出しは、以下のように管理される。
【0035】
(i)当該アプリケーションタスクによってシステムレイヤに許可されたシステムレイヤ呼び出しだけが、当該タスクの制御グラフにおけるノード変化を通知する呼び出しである。
【0036】
(ii)システムレイヤは、アプリケーションの定数テーブルに記述されている制御グラフの実行パスと比較したときに、各呼び出しが正当であることを検証する。
【0037】
(iii)呼び出しが正当であるとき、システムレイヤによって当該ノードで実行されるべき動作の全ては、システムレイヤの関連したアプリケーションの定数テーブルによって予め決められる。
【0038】
当該アプリケーションのタスクのリストは、アトミック・マイクロカーネル上での実時間実行よりも前に予め順序付けられ、マイクロカーネルは、次に実時間実行中に呼び出され、タスクの新しい時間特性、特に、システムレイヤによって計算されるような最先の開始時間d(i)及び最後の完了時間f(i)のアプリケーション内で順序付けられた方式でタスクのリストを更新する役目を果たす。
【0039】
本発明の原理的なセキュリティ方法は、原則的に、以下の手順(a)〜(h)を含む。
【0040】
手順(a)では、所定のアプリケーションのタスク毎に、システムレイヤ呼び出しを要求するタスクの各時間同期ポイントから許可された遷移状態(チェインニング)の全てを記憶する。上記遷移状態は、当該タスクによってなされたシステムレイヤ呼び出しの実行を監視する制御グラフによって表現され、各制御グラフは、制御システムのシステムレイヤ呼び出しに各々が対応しているノードの組により構成される。
【0041】
手順(b)では、各タスクの制御グラフのノード毎に、システムレイヤ呼び出しの性質及び呼び出しパラメータを記憶する。呼び出しパラメータには、最先の開始時間d(i)及び最後の完了時間f(i)を更新することができる時間パラメータが含まれる。
【0042】
手順(c)では、タスク毎に、関連したグラフに初期ノード(ノード0)を記憶する。
【0043】
手順(d)では、所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、タスク毎に、初期ノード(ノード0)及び当該タスクの初期状態を表現する初期時点を初期化する。
【0044】
手順(e)では、所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、アトミック・マイクロカーネル内のタスクのリストを予め順序付けることにより、各タスクの開始順序を初期化する。
【0045】
手順(f)では、時間トリガーモードにおける上記アプリケーションの実行を開始するアプリケーションの第1の時点に、マイクロカーネル呼び出しを構成するクロック割り込み信号shを発行するため第1のクロック14をセットする。
【0046】
手順(g)では、第1のクロック14がセットされた後の通常動作中に、マイクロカーネル呼び出し毎にマイクロカーネルによって第1のクロック14をリセットさせ、システムレイヤによるマイクロカーネル呼び出し、若しくは、割り込み信号shの処理によるマイクロカーネル呼び出しの間に、マイクロカーネルを、タスクの時間特性、即ち、最先の開始時間d(i)及び最後の完了時間f(i)に応じて順序付けられたタスクのリストを更新する手順へ進め、リストを更新した後に、マイクロカーネルに、タスクを開始する必要がある直近の未来の時点を計算させ、上記タスクを開始し、マイクロカーネルから出るための上記直近の未来の時点に基づいて第1のクロック14をマイクロカーネルによってセットさせる。
【0047】
手順(h)では、タスクを実行している間に、上記タスクの制御グラフのノードに達した時に限りシステムレイヤ呼び出しを行ない、引数としてノードの数を渡し、システムレイヤのエントリーへ進み、実行中の制御グラフに応じて、先行のシステムレイヤに対応するノードからの遷移状態が許可されているかどうかを検証するためのチェックを行ない、上記遷移状態が許可されていない場合にシステムレイヤ内で異常処理を開始し、上記遷移状態が許可されている場合には実行を継続し、システムレイヤからのマイクロカーネル呼び出しを使用して、最先の開始時間d(i)及び最後の完了時間f(i)を含む実行されているタスクの時間パラメータを更新し、上記タスクがその制御グラフのノードに達するまで現在のタスクの通常実行を継続する。
【0048】
上述のように、本発明のセキュリティ方法が適用される制御システムは、メモリ保護ユニットと、各セグメントにアクセスするための各コンテキストの権利のテーブルと、を含み、アクセス権は、予め決められ、適当であれば、ROMに記憶される。実行コンテキスト毎に、コンテキストの権利を定義するテーブルの記述は、システム全体の初期化段階中に1回だけ初期化され、CPU上で実行されるプロセスの中で、その実行コンテキストにこれらのテーブルを所有するプロセスはない。
【0049】
本発明のセキュリティ方法は、更に、上述の手順の間に行われる以下の手順(i)〜(k)を含む。
【0050】
手順(i)では、準備段階中に、所与のアプリケーションに対し、マイクロカーネル及び各アプリケーションタスクのための各メモリセグメントへのアクセス権を記憶し、システムレイヤにおける各タスクの拡張のため、命令がタスクを構成するアプリケーションに固有のコード内にあるか、又は、命令がシステムレイヤにおけるタスクの拡張を構築するシステムレイヤの汎用コード内にあるかに応じて、第1の実行コンテキストと第2の実行コンテキストを構築し、
手順(j)では、 所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、マイクロカーネルコンテキストと、システムレイヤ内の各タスクとそのタスクの拡張部分に関する第1及び第2の実行コンテキストと、を初期化し、
手順(k)では、タスクの実行中に、タスクの実行コンテキストからシステムレイヤにおけるタスクの拡張部分の実行コンテキストへ移ることを可能にさせる特権実行モードへ移るための命令を使用して、システムレイヤ呼び出しを行ない、先行のシステム呼び出しに対応したノードからの遷移状態が許可されていることを検証した後、かつ、システムレイヤからのマイクロカーネル呼び出しを使用してタスクのパラメータを更新した後に、システムレイヤの拡張部分の実行コンテキストからタスクの実行コンテキストへ実行を移すことができる非特権モードへ戻るための命令を用いてタスクのコードへ戻る。
【0051】
本発明のセキュリティ方法は、時間割当量を参照し、上記の原理的な方法の手順と、システムレイヤにおけるタスクの拡張部分の実行コンテキストへ移ることを可能にさせる特権実行モードの存在を考慮するために修正された原理的な方法の手順の間に行われる以下の手順(l)〜(m)を更に含む。
【0052】
手順(l)では、予備段階中に、所与のアプリケーション毎に、かつ、上記タスクにおける許可された遷移状態の全てに対して、タスクの制御グラフ内で一方のノードから別のノードへ移るために要する最大実行時間の上界を構成する時間割当量を記憶し、各時間割当量は、タスクに固有の命令を実行する際に経過した時間と、タスクの実行におけるシステムレイヤの汎用コードの実行の際に経過した時間の両方の時間を対象とする。
【0053】
手順(m)では、第1のクロック14がセットされた後、時間割り込み信号shによって始動されたマイクロカーネル呼び出しのイベントにおいて、第1のクロックをリセットさせ、マイクロカーネル呼び出しを始動した時間割り込み信号shが時間割当量を侵害しようとする状態と関連しているかどうかを検証するためにチェックを行ない、関連している場合に、マイクロカーネルに異常処理を実行させ、時間割り当て信号shが時間割当量を侵害しようとする状態と関連していない場合、マイクロカーネルにタスクリストを更新させ、タスクリストの更新後に、タスクが始動させられるべき直近の未来の時点と、マイクロカーネルを実行する際に実行中であるタスクに割り当てられた時間割当量が満了する未来の時点と、を計算させ、この時間はリストを更新する間に決定され、マイクロカーネルに第1のクロック14を上記未来の時点の中の近い時点にセットさせ、これにより、タスクが始動されるか、又は、異常動作による時間割当量を侵害しようとする状態が検出され、第1のクロック14をセットした後、マイクロカーネルから出る。
【0054】
マイクロカーネルにおいてアプリケーションのタスクリストを更新する手続は、処理されているタスクに割り当てられた時間割当量を参照する好ましい実施態様に関して後述するように非常に明示的に行うことが可能であるが、時間割当量の参照が省略された場合には、簡単化された基本的な実施態様にも適用可能である。
【0055】
実行中のマイクロカーネル呼び出し毎に、当該タスクの実行コンテキストのシステムレイヤ拡張部分とは無関係に、最先の開始時間d(i)と最後の完了時間f(i)の2個のパラメータがタスクリストの更新に関与し、実行の準備ができている適格なタスク、即ち、過去における最先の開始時間d(i)を有するタスクのリストと、実行の準備ができていないか、又は、始動されるのを待機している不適格なタスク、即ち、未来における最先の開始時間d(i)を有するタスクのリストの2個のタスクリストが管理される。適格なタスクのリストは、最後の完了時間が増大する順番に順序付けられ、不適格なタスクのリストは、最先の開始時間d(i)が増大する順番に順序付けられる。待機中のタスクは、全て、最先の開始時間に達したときに、「準備完了」状態へ移ることが保証されている。
【0056】
(α)マイクロカーネル呼び出し中に、タスクの最先の開始時間d(i)に未だ達していない場合、タスクは不適格であり、不適格なタスクの順序付きリストへ移される。ここでは、最先の開始時間の順序に基づいてタスクが始動されるべき未来の時点を計算することが可能である。直近の未来の最先の開始時間は、問題となる次のタスクが適格になる(始動される)未来の時点を与える。
【0057】
(β)これに対して、マイクロカーネル呼び出し中に、対象となるタスクの最先の開始時間d(i)が経過している場合、タスクは適格であり、適格なタスクの順序付きリストへ移される。マイクロカーネルは、最後の完了時間の順序付きリスト内に直近の未来の最後の完了時間を有する適格なタスクに制御を渡し、選択されたタスクに割り当てられた時間割当量が満了する未来の時点を計算する(ここで、この割当量は、直近の未来の最後の完了時間と現時点との間の差である。)。
【0058】
(γ)それにもかかわらず、マイクロカーネル呼び出しが、現在処理されているタスクに割り当てられた時間割当量のためセットされているクロック14によって行われた場合、マイクロカーネルは、アプリケーションによって指定された異常処理を実行することにより始まり、その後、マイクロカーネルは、動作(α)及び(β)を実行する。
【0059】
2つの時点(タスクを始動する直近の未来の時間と、選択されたタスクに割り当てられた時間割当量が満了する未来の時間)に基づいて、マイクロカーネルは、(適切な時間にタスクを始動するため、又は、時間割当量に違反しようとする状態(企て)、即ち、異常動作を検出するための何れかのために)上記二つの時点のうちの近い方の時点で作動されるようにクロック14をセットする。クロック14がセットされた場合、マイクロカーネルは始動され、可能であれば、スイッチングによって始動される。
【0060】
かくして、実行中に、動作状態タスクは、時間割り込みによって変更されるか、又は、動作状態タスクのノードの変化に続いて変更される。
【0061】
時間割り込みの原因は、(時間トリガー方式の場合に)待機状態タスクが準備完了状態になることか、又は、動作状態タスクが割り当てられた時間割当量を使い尽くすことであり、この場合には、安全性チェックが行われる。
【0062】
動作状態タスクがその制御グラフ内のノードを変更するとき、その最後の完了時間が延期されるか、又は、その最先の開始時間が延期される。前者の場合、動作中タスクの代わりに、他のタスクが動作状態になる。後者の場合、動作状態タスクは、その新しい最先の開始時間に達していないならば、待機状態タスクの集合に入れられる。
【0063】
先取権の個数は有限であり限界があるので、先取権の個数の上限を解析的に計算することが可能である。
【0064】
更に、時間割当量が、ノードの変更毎に更新され監視される限り、即座にタスクを限定するため、時間的な異常を検出することが可能である。
【0065】
制御グラフによる正当な置き換えだけが許容される限り、タスクは、時間に送れずに挙動することが不可能であり、同じグラフを使用して統計的に評価されたリソース(例えば、通信のためのメモリ資源)よりも大量のリソースを消費することになる。
【0066】
次に、特定の実時間タスクのための図3乃至6を参照して、本発明のセキュリティ方法の一実施例を説明する。
【0067】
本例の場合、実時間タスクの機能は、測定値vが閾値t2を上回る期間t(v)に亘って閾値s1を超過した場合に、アラームを発行することである。
【0068】
図3は、上記例に対応したタスクの処理を示すフローチャートである。
【0069】
ステップ101は、初期ノード若しくはノード0を表し、システムレイヤ呼び出しが行われる。
【0070】
ステップ102は、測定値vを獲得する第1のステップに対応する。
【0071】
ステップ103は、テストに対応し、その後、処理は、
v<s1であるならば、初期ノード101へ戻り、次にステップ102へ進み、
v≧s1であるならば、ステップ104のノード1へ進み、次に、ステップ105へ進む。
【0072】
ステップ104のノード1において、システムレイヤ呼び出しが行われ、ステップ105において、期間t(v)が計算される。
【0073】
ステップ105の後、テスト106が行われ、
t(v)<s2であるならば、初期ノード101へ戻り、
t(v)≧s2であるならば、ステップ107のノード2へ進む。
【0074】
第2のノード107では、システムレイヤ呼び出しが行われ、次に、処理は、ステップ108へ移り、アラームを発行し、その後、処理は初期ノード101へ戻る。
【0075】
図4は、ノード101、ノード104及びノード107と関連した矢印付きアークとを含む、図3のフローチャートに対応した制御グラフである。
【0076】
本例の場合、「vを獲得」(ステップ102)、「t(v)を計算」(ステップ105)、及び、「アラームを発行」(ステップ108)の動作を実行するため割り当てられた時間は、
獲得ステップ102: 1時間単位
計算ステップ105: 付加的な2時間単位
アラーム発行ステップ108: 1時間単位
である。
【0077】
各ノード101、104及び107に対し、システムレイヤによって提供されるサービスと、最先の開始時間d(i)及び最後の完了時間f(i)に実行される動作は、以下の表に列挙されている。尚、初期化中に、最先の開始時間d(0)はd(0)=0となるように与えられ、最後の完了時間f(0)はf(0)=1時間単位となるように与えられている。
【0078】
【表1】
Figure 0003921447
図6は、ノード0、ノード1及びノード2のテーブルを要約し、最先の開始時間d(i)及び最後の完了時間f(i)で実行されるべき動作の説明を含む図表である。
【0079】
更に、図4に示されたタスク制御グラフは、マトリックス形式に記号化することが可能であり、その場合、上記の例に対するタスク制御グラフは、次のように表現される。
【0080】
【数1】
Figure 0003921447
式中、mijは、ノードiからノードjへの移動が許可されている場合にAであり、ノードiからノードjへの移動が禁止されている場合にIである。
【0081】
図5は、上記の実時間タスクの一実施態様と、関連した時間値とを説明するタイミングチャートである。数字1乃至10は、時間トリガーモードにおける動作の開始からの時間単位の数で実時間を指定する。
【0082】
本発明のセキュリティモードは、メッセージによって相互に通信するマルチタスクアプリケーションの実時間実行が決定論的であることを保証するためにも適合している。
【0083】
このような状況において、本発明の方法は、示されたタスク間の通信を伴わないタスクアプリケーションを用いる原理的な方法に関して説明したステップの間に行われる以下の特定のステップを含む。
【0084】
ステップ(n)では、予備段階中に、所与のアプリケーションのタスク毎に、そのタスクの時間同期用のポイントの許可された遷移状態の全てを記憶し、アプリケーションの他のタスクとの通信のため、システムレイヤ呼び出しを要求し、これらの許可された遷移状態は、当該タスクによって行われたシステムレイヤ呼び出しの実行用の制御グラフにより表現され、各グラフはノードの集合により構成され、各ノードはシステムレイヤ呼び出しに対応する。
【0085】
ステップ(o)では、タスク間でデータを交換するため必要とされる各バッファゾーンを記憶し、バッファゾーンのサイズと、バッファゾーンに収容される要素のサイズと、ロケーション若しくはベースアドレスと、通信を確認するため必要とされる情報転送を可能にするバッファゾーン間の関係と、を指定する。
【0086】
ステップ(p)では、バッファゾーン毎に、その要素の初期値を記憶する。
【0087】
ステップ(q)では、所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、メモリに先に格納されていた値を用いてバッファゾーンの要素の値を初期化する。
【0088】
ステップ(r)では、タスクの実行中に、タスク制御グラフのノードに達したときにシステムレイヤ呼び出しを実行し、現在実行されているタスクの制御グラフに応じて、先行のシステムレイヤ呼び出しに対応するノードからの遷移状態が許可されているかどうかを検証した後に、先に格納された呼び出しの性質に応じてバッファゾーンを連続的に更新させ、必要に応じて、最先の開始時間d(i)と最後の完了時間f(i)を含む実行されるタスクの時間パラメータの増分的な更新を実行する。
【0089】
第1の実行コンテキストと第2の実行コンテキストがアプリケーションの各タスクとシステムレイヤへの拡張部分に対して定義されたとき、以下の特定の特徴があてはまる。
【0090】
システムレイヤでは、バッファゾーンだけがアプリケーションのタスクの実行コンテキストの拡張部分によって共用されることが許可され、メッセージ送信に対応した動的通信のための所与のバッファゾーンは2個のタスク実行コンテキスト拡張部分だけによって共用可能であり、一方、タイムスタンプ付きデータのストリームに対応した静的通信用のバッファゾーンは、3個以上のタスク実行コンテキスト拡張部分によって共用可能であるが、単独のコンテキストによって書き込み若しくは修正を行ってもよい。
【0091】
次に、図7乃至13を参照して、メッセージを用いて通信する二つの実時間タスクに関係する本発明のセキュリティ方法の一実施例を説明する。
【0092】
この簡単な例では、実行される機能は、測定値vが閾値s1を超過し、かつ、測定値が閾値s1を超過している期間t(v)が閾値s2を上回る場合に、アラームランプを点灯する機能を含む。
【0093】
一方の処理タスクは、測定値vを獲得し、必要に応じて、指定されたランプを点灯するアラームタスクにメッセージを送信する。
【0094】
図7は、本例の処理タスクを実行する処理に対応したフローチャートである。
【0095】
ステップ111は、初期ノード若しくはノード0を表し、システムレイヤ呼び出しが行われる。
【0096】
第1のステップ112は、測定値vを獲得するステップであり、測定値vを閾値s1と比較するテストステップ113と関連付けられる。
【0097】
ステップ113では、v<s1であるならば、タスクは、初期ノード111へ戻り、v≧s1であるならば、タスクはステップ114のノード1へ進み、ノード1でシステムレイヤ呼び出しを行う。
【0098】
ステップ114のノード1に続く第2のステップ115は、期間t(v)を計算するステップに対応する。
【0099】
ステップ115と関連したステップ116のテストは、期間t(v)を閾値s2と比較する。
【0100】
t(v)<s2であるならば、タスクは初期ノード111へ戻り、
t(v)≧s2であるならば、タスクはステップ117のノード2へ進み、システムレイヤ呼び出しを行う。
【0101】
ステップ117のノード2の後に、タスクは、ステップ118のノード3へ進み、システムレイヤ呼び出しが行われ、次に、初期ノード111へ戻る前にアラームメッセージを送信する第3のステップが行われる。
【0102】
図8は、図7のフローチャートに対応した、ノードと許可されたアークを含む制御グラフを示す図である。
【0103】
図9は、本例におけるアラームタスクの実行に対応したフローチャートである。
【0104】
ステップ121は、初期ノード若しくはノード0を表し、ここで、システムレイヤ呼び出しが行われる。
【0105】
テストステップ122は、メッセージが受信されたかどうかを調べる。
【0106】
メッセージが存在しない場合、タスクは、ステップ123へ進み、アラームランプを消灯し、その後、タスクは初期ノード121へ戻る。
【0107】
1個以上のメッセージが存在する場合、タスクは、ステップ124のノード1へ進み、システムレイヤ呼び出しを行ない、次に、ステップ125へ進み、アラームランプを点灯して、初期ノード121へ戻る。
【0108】
図10は、図9のフローチャートに対応した、ノードと許可されたアークを含む制御グラフを示す図である。
【0109】
本例の場合、ステップ112、115、118、123及び125に対応した「vを獲得」、「t(v)を計算」、「メッセージを送信」、「消灯」、及び、「点灯」の動作を実行するために許容される時間は、
「vを獲得」: 1時間単位
「t(v)を計算」: 付加的な2時間単位
「メッセージを送信」: 1時間単位であるが、メッセージは2時間単位内に利用可能
「消灯」: 1時間単位
「点灯」: 1時間単位
である。
【0110】
システムレイヤによって提供されるサービスと、(d(0)=0かつf(0)=1であるとして)最先の開始時間d(i)及び最後の完了時間f(i)、並びに、メッセージが可視的になる時間dVに実行される動作は、二つのタスクの各々のノード毎に次のように与えられる。
【0111】
【表2】
Figure 0003921447
図12は本例の処理タスクに関係し、図13は本例のアラームタスクに関係し、最先の開始時間d(i)、最後の完了時間f(i)及び可視性時間dVに実行されるべき動作の説明を含むノードのテーブルを表す。
【0112】
処理タスク及びアラームタスクの制御グラフは、以下のようにマトリックス形式に記号化することが可能である。
【0113】
【数2】
Figure 0003921447
【0114】
【数3】
Figure 0003921447
式中、mijは、ノードiからノードjへの移動が許可されている場合にAであり、ノードiからノードjへの移動が禁止されている場合にIである。
【0115】
図11は、上述の二つの通信タスクの実施例を表すタイミングチャートであり、関連した時間値が示されている。数字1乃至10は、時間トリガーモードにおける動作の開始からの実時間を時間単位の数で指定する。
【0116】
一つのタイプのメッセージだけが所与のメッセージキューに格納される。メッセージ可視性時間dVは、送信された各メッセージと関連付けられる。時間dVは、送り先がメッセージを使用できるようになる未来の時点を指定する。メッセージは、可視性時間dVの順番に、次に、送信元の名前の順番に、そして最後に、送信順に使用(消費)されるので、使用目的のためメッセージを完全に順序付けることが可能になる。
【0117】
メッセージキュー毎に、各送信元のコンテキスト内に送信ゾーンと、当該メッセージキューの所有者用の受信ゾーンとが存在する。
【0118】
各作成者(送信元)は送信ゾーンを保有しているので、二つの異なるタスクから送信された2個のメッセージの間に競合の問題が生じることはない。
【0119】
更に、上述の通り、メモリをセグメント化することにより、タスクの故障の影響がそのタスクの固有のメモリ空間に制限される。したがって、あるタスクからアプリケーション内の別のタスクへの故障伝播は起こり得ない。
【0120】
メモリセグメント化を使用することによって、タスクの時間トリガー(TT)の時間間隔内で、タスクの実行コンテキストは、新しい命令の開始と前の命令の終了との間で変化しない、という特性を得ることが可能になる。
【0121】
メモリセグメント化は、システムレイヤを内部的に分割し、マイクロカーネルをシステムレイヤの残りの部分から分離するために、システムレイヤ自体に適用される。
【0122】
メモリ保護ユニット16は、物理的なアーキテクチャの観点からメモリセグメント化を実施することが可能であるハードウェアメカニズムを構成する。
【0123】
図2は、ユーザ実行モード201(即ち、非特権モード)によるアプリケーションレベルから、特権実行モードを備えたシステムレイヤ202を介して、マイクロカーネル203へ至る最終的なコード奥行きの分布の説明図である。
【0124】
特権実行モードを備えたシステムレイヤ202へのアクセスは、「トラップ」型の分岐命令によって保護され、システムレイヤ202からマイクロカーネル203への経路は、move(移動)型の命令によってトリガーされる。
【0125】
クロック14は、時間トリガーを供給し、プログラマブルな時間量が経過したときにクロック割り込み信号shを発行する。
【0126】
図2では、アプリケーションレベル201に様々なタスクのコード及びデータが存在し、システムレベルレイヤ202には、タスクコンテキストのシステムレイヤへの拡張部分と、システムレイヤのコードとが存在する。マイクロカーネルレベル213には、プロセッサのタスクへの割当を管理し、時間を管理するマイクロカーネルのデータ及びコードが存在する。
【0127】
次に、本発明のセキュリティ方法の一実施例におけるセグメント化されたメモリの種々のセグメントの権利を表す詳細なテーブルである図14について説明する。
【0128】
上述の通り、マルチタスクアプリケーションは、特定コード、タスク、時間変数のストリーム、メッセージボックス、タスク間で情報を転送するためのシステムレイヤ、アプリケーションコードにおけるタスクの動きを監視するグラフ実行部、及び、時間とプロセッサ共有を管理するマイクロカーネルにより構成される。
【0129】
メモリは、プロセッサの実行コンテキストに依存したアクセス権を保有するセグメントに細分される。
【0130】
図14の表を理解するために、用語の定義を説明する。
.inst:メモリ内の連続命令の組である。
.const:一定値の連続データ項目の組である。
.var:命令によって変更可能な連続データ項目の組である。
I:セグメントの命令を実行する権利(資格)である。
M:セグメントを変更し閲覧するための権利(資格)である。
C:閲覧に制限された(リードオンリー)セグメントへのアクセス権である。
R:セグメントへのアクセスが拒絶されている。
【0131】
セグメントは、アプリケーション専用であるか、CPU10及びそのプロセッサに関する本発明のモデルにリンクされているかどうかに応じてゾーンに分類される。
【0132】
タスク毎に、一連のゾーンCT、FT、BM、ME、VT及びPUが設けられる。以下、これらのアプリケーションゾーンを説明する。
【0133】
タスク計算ゾーンCT:
.const及び.var:非特権モードにおけるスタックを含むタスクデータである。
.inst:タスク計算である。
【0134】
タスク動作ゾーンFT:
.const:タスクの動作(実行グラフ、ノード記述、期限、CPUによって計算される時間増分量など)の説明である。
.var:システムレイヤへ引数を渡すためのゾーンである。
.inst:システムレイヤからのノードの変更を要求する機能である。
【0135】
メッセージボックスゾーンBM:
.const:タスクの各メッセージボックスの特性であり、送信ゾーン(ゾーンME)へのコネクションが含まれる。
.var:現時点でタスクがアクセス可能な全メッセージである。
【0136】
メッセージ記憶ゾーンME:
.const:タスクによって送信され、送信先タスクからは見えないメッセージ用の記憶ゾーンの記述である。
.var:記憶ゾーン自体である。
【0137】
時間変数ゾーンVT:
.coonst:タスクの記憶ゾーンの記述であり、タスクから見える時間変数のストリームの値は、その値を生成したゾーンへのコネクションを含む。
.var:渡された可視性値に対するタスク用の記憶ゾーンである。
【0138】
ゾーンPU:
.var:プロセッサによって必要とされる一時的作業データ、タスクの現在のコンテキスト、特権モードスタックである。
【0139】
更に、以下に説明するように全てのタスクに共通したグローバルアプリケーションゾーンが存在する。
【0140】
グローバルゾーンG:
.const:アプリケーションのグローバル定数(タスク数、タスク記述子の参照名、クロックの記述など)と、システムレイヤとのインタフェースを提供する定数である。
【0141】
システムレイヤ自体は、以下のゾーンCSを含む。
【0142】
システムレイヤゾーンCS:
.const:参考のため。
.var:空である(過去はゾーンPUのセグメント.varに記憶される。)。
.inst:グラフ実行部用の命令、メッセージボックス管理用の命令、時間変数のストリームの過去の値を利用可能にするための命令、クロックを管理し期限を計算するための命令である。
【0143】
次に、システムレイヤに共通である転送ゾーンTRを説明する。
【0144】
転送ゾーンTR:
.const:参考のため。
.var:動作状態タスクの識別情報である。
.inst:メモリへのハードウェアアクセス権を変更する命令と、システムレイヤ又はマイクロカーネルへ分岐する命令えある。
【0145】
マイクロカーネルは、以下のゾーンMN及びゾーンRSを含む。
【0146】
ゾーンMN:
.const:参考のため。
.var:ハードウェアを管理するために必要なデータである(時間を管理、「トラップ」命令を管理など)。
.inst:期限に応じて準備完了タスク又は休止状態タスクの組を管理する命令、ハードウェアコンテキストをバックアップし変更する命令、プロセッサを使用するため使い尽くされた権利のためのクロック割り込みを管理する命令、並びに、CPU上で利用可能なメモリ保護機能を実施する命令である。
【0147】
ゾーンRS:
.const:参考のため。
.var:空である。
.inst:メモリ保護無しで動作するCPUとソフトウェアを初期化する命令である。
【0148】
所与の時点で、プロセッサは、アプリケーションコード(非特権モード)におけるタスクのために、システムレイヤ(特権モード)におけるタスクのために、或いは、マイクロカーネルにおけるタスクのために動作する。
【0149】
図14の表の行は、上述のタスクのセグメントと、システムレイヤのセグメントと、マイクロカーネルのセグメントを表す。列は、プロセッサがタスクのアプリケーションコードの命令を実行中であるか(列301)、タスクのためのシステムレイヤのコードの命令を実行中であるか(列302)、別のタスクのためのシステムレイヤのコードの命令を実行中であるか(列303)、CPUの初期化後にマイクロカーネルのコードの命令を実行中であるか(列304)に応じて、メモリへのアクセス権を表現する。
【0150】
一般的に、メモリは、ページに分割可能であり、ページは、書き込み保護の状態、欠けている状態、或いは、利用可能な状態をとりえる。このような状況において、セグメントサイズは、1ページの倍数に切り上げられ、.const及び.varは、併合され、書き込み保護され、アクセス権がRであるページは、欠けているか、又は、記述から削除される。
【図面の簡単な説明】
【図1】 本発明のセキュリティ方法が適用される制御システムのアーキテクチャの略構成図である。
【図2】 本発明による方法において、システムレイヤ及びマイクロカーネルの深さ方向へ分布するコードの説明図である。
【図3】 本発明によるセキュリティ方法における実時間タスクの一例の処理に対応したフローチャートである。
【図4】 図3のフローチャートに対応した制御グラフである。
【図5】 本発明によるセキュリティ方法を使用して図3及び4の実時間タスクの例を処理する期間中のタイミングチャートと関連した時間値の一例の説明図である。
【図6】 最先の開始時間d(i)及び最後の完了時間f(i)で実行されるべき動作の説明を含む図4の制御グラフのノードの表である。
【図7】 本発明によるセキュリティ方法を使用して第2のタスクと通信する第1の実時間タスクの一例の処理に対応したフローチャートである。
【図8】 図7のフローチャートに対応した制御グラフである。
【図9】 図7のフローチャートに示された第1の実時間タスクと通信する第2の実時間タスクの一例の処理に対応したフローチャートである。
【図10】 図9のフローチャートに対応した制御グラフである。
【図11】 本発明によるセキュリティ方法を使用して、図7乃至10に示された相互通信タスクの例を処理する期間中のタイミングチャート及び関連した時間値の一例の説明図である。
【図12】 最先の開始時間d(i)及び最後の完了時間f(i)におけるメッセージに実行されるべき動作の説明を含む図8の制御グラフのノードの表である。
【図13】 最先の開始時間d(i)及び最後の完了時間f(i)におけるメッセージに実行されるべき動作の説明を含む図10の制御グラフのノードの表である。
【図14】 タスクとシステムレイヤとマイクロカーネルのうちのどれを実行中であるかに応じて、本発明の方法の一例におけるメモリセグメントへのプロセッサのアクセス権を示す詳細な表である。

Claims (10)

  1. 調節可能な時間量が経過したときに割り込み信号shを発行する少なくとも第1のクロック(14)と、
    少なくとも上記クロック割り込み信号shを受ける能力を備えている少なくとも一つのプロセッサを含むCPU(10)と、
    主メモリ(12,13)と、
    制御システムの入出力を管理する周辺機器(1,・・・,N)を制御するコントローラの組(11,・・・,1N)と、
    を有する制御システムにおいて、
    制御・コマンド型のマルチタスクアプリケーションの実時間実行を決定論的に行うセキュリティ方法であって、
    手順(a)において、所定のアプリケーションのタスク毎に、システムレイヤ呼び出しを要求するタスクの各時間同期ポイントから許可された遷移状態(チェインニング)の全てを記憶し、上記遷移状態は、当該タスクによってなされたシステムレイヤ呼び出しの実行を監視する制御グラフによって表現され、各制御グラフは、制御システムのシステムレイヤ呼び出しに各々が対応しているノードの組により構成され、
    手順(b)において、各タスクの制御グラフのノード毎に、システムレイヤ呼び出しの性質及び呼び出しパラメータを記憶し、呼び出しパラメータには、最先の開始時間d(i)及び最後の完了時間f(i)を更新することができる時間パラメータが含まれ、
    手順(c)において、タスク毎に、関連したグラフに初期ノード(ノード0)を記憶し、
    手順(d)において、所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、タスク毎に、初期ノード(ノード0)及び当該タスクの初期状態を表現する初期時点を初期化し、
    手順(e)において、所与のアプリケーションに対し、時間トリガーモードで実時間実行を開始する前に、アトミック・マイクロカーネル内のタスクのリストを予め順序付けることにより、各タスクの開始順序を初期化し、
    手順(f)において、時間トリガーモードにおける上記アプリケーションの実行を開始するアプリケーションの第1の時点に、マイクロカーネル呼び出しを構成するクロック割り込み信号shを発行するため第1のクロック(14)をセットし、
    手順(g)において、第1のクロック(14)がセットされた後の通常動作中に、マイクロカーネル呼び出し毎にマイクロカーネルによって第1のクロック(14)をリセットさせ、システムレイヤ若しくは割り込み信号shの処理によるマイクロカーネル呼び出し中に、マイクロカーネルに、タスクの時間特性、即ち、最先の開始時間d(i)及び最後の完了時間f(i)に応じて順序付けられたタスクのリストを更新させ、リストを更新した後に、マイクロカーネルに、タスクを開始する必要がある直近の未来の時点を計算させ、上記タスクを開始し、マイクロカーネルから出るための上記直近の未来の時点に基づいて第1のクロック(14)をマイクロカーネルによってセットさせ、
    手順(h)において、タスクを実行している間に、上記タスクの制御グラフのノードに達した時に限りシステムレイヤ呼び出しを行ない、引数としてノードの数を渡し、システムレイヤのエントリーへ進み、実行中の制御グラフに応じて、先行のシステムレイヤに対応するノードからの遷移状態が許可されているかどうかを検証するためのチェックを行ない、上記遷移状態が許可されていない場合にシステムレイヤ内で異常処理を開始し、上記遷移状態が許可されている場合には実行を継続し、システムレイヤからのマイクロカーネル呼び出しを使用して、最先の開始時間d(i)及び最後の完了時間f(i)を含む実行されているタスクの時間パラメータを更新し、上記タスクがその制御グラフのノードに達するまで現在のタスクの通常実行を継続する、
    方法。
  2. アドレス指定アクセス権を制御するメモリ保護ユニット(16)を更に具備した制御システムに適用され、メモリ保護ユニット(16)は、アドレス指定可能なメモリ空間へアクセスするため、排他的に、許可されたアドレス指定を表すアクセスを与える有効アドレスavを発行するか、又は、例外信号seをCPUへ発行することにより、CPU(10)によって供給された要求アドレスadと、プロセッサの実行コンテキストの権利(C)に応答し、
    手順(i)において、準備段階中に、所与のアプリケーションに対し、マイクロカーネル及び各アプリケーションタスクのための各メモリセグメントへのアクセス権を記憶し、システムレイヤにおける各タスクの拡張のため、命令がタスクを構成するアプリケーションに固有のコード内にあるか、又は、命令がシステムレイヤにおけるタスクの拡張を構築するシステムレイヤの汎用コード内にあるかに応じて、第1の実行コンテキストと第2の実行コンテキストを構築し、
    手順(j)において、所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、マイクロカーネルコンテキストと、システムレイヤ内の各タスクとそのタスクの拡張部分に関する第1及び第2の実行コンテキストと、を初期化し、
    手順(k)において、タスクの実行中に、タスクの実行コンテキストからシステムレイヤにおけるタスクの拡張部分の実行コンテキストへ移ることを可能にさせる特権実行モードへ移るための命令を使用して、システムレイヤ呼び出しを行ない、先行のシステム呼び出しに対応したノードからの遷移状態が許可されていることを検証した後、かつ、システムレイヤからのマイクロカーネル呼び出しを使用してタスクのパラメータを更新した後に、システムレイヤの拡張部分の実行コンテキストからタスクの実行コンテキストへ実行を移すことができる非特権モードへ戻るための命令を用いてタスクのコードへ戻る、
    ことを特徴とする請求項1記載の方法。
  3. 各アプリケーションタスクの実行コンテキストは、二つ一組になって分離していることを特徴とする請求項2記載の方法。
  4. アプリケーションタスクのコンテキストの実行部分のシステムレイヤへの拡張部分は、アプリケーションコードにおけるタスクの実行コンテキストから書き込みアクセスができないことを特徴とする請求項2又は3記載の方法。
  5. タスクの制御グラフのコーディングは、アプリケーションのタスクの実行を制御するメカニズムと上記タスク自体の実行の両方に生じる共通の原因による故障を阻止することを特徴とする請求項1乃至4のうち何れか一項記載の方法。
  6. 手順(l)において、予備段階中に、所与のアプリケーション毎に、かつ、上記タスクにおける許可された遷移状態の全てに対して、タスクの制御グラフ内で一方のノードから別のノードへ移るために要する最大実行時間の上界を構成する時間割当量を記憶し、各時間割当量は、タスクに固有の命令を実行する際に経過した時間と、タスクの実行におけるシステムレイヤの汎用コードの実行の際に経過した時間の両方の時間を対象とし、
    手順(m)において、第1のクロック(14)がセットされた後、時間割り込み信号shによって始動されたマイクロカーネル呼び出しのイベントにおいて、第1のクロック(14)をリセットさせ、マイクロカーネル呼び出しを始動した時間割り込み信号shが時間割当量を侵害しようとする状態と関連しているかどうかを検証するためにチェックを行ない、関連している場合に、マイクロカーネルに異常処理を実行させ、時間割り当て信号shが時間割当量を侵害しようとする状態と関連していない場合、マイクロカーネルにタスクリストを更新させ、タスクリストの更新後に、タスクが始動させられるべき直近の未来の時点と、マイクロカーネルを実行する際に実行中であるタスクに割り当てられた時間割当量が満了する未来の時点と、を計算させ、この時間はリストを更新する間に決定され、マイクロカーネルに第1のクロック(14)を上記未来の時点の中の近い時点にセットさせ、これにより、タスクが始動されるか、又は、異常動作による時間割当量を侵害しようとする状態が検出され、第1のクロック(14)をセットした後、マイクロカーネルから離れる、
    ことを特徴とする請求項1乃至5のうち何れか一項記載の方法。
  7. 第2のクロック(15)が制御システムに組み込まれ、
    マイクロカーネルは、時間信号を比較することにより第1のクロック(14)によってトリガーされた時間の流れを監視するため、第2のクロック(15)へアクセスするようにさせられる、
    ことを特徴とする請求項1乃至6のうち何れか一項記載の方法。
  8. 制御・コマンド型の通信マルチタスクアプリケーションの実時間実行を決定論的にさせるために適合し、
    手順(n)において、予備段階中に、所与のアプリケーションのタスク毎に、そのタスクの時間同期用のポイントの許可された遷移状態の全てを記憶し、アプリケーションの他のタスクとの通信のため、システムレイヤ呼び出しを要求し、これらの許可された遷移状態は、当該タスクによって行われたシステムレイヤ呼び出しの実行用の制御グラフにより表現され、各グラフはノードの集合により構成され、各ノードはシステムレイヤ呼び出しに対応し、
    手順(o)において、タスク間でデータを交換するため必要とされる各バッファゾーンを記憶し、バッファゾーンのサイズと、バッファゾーンに収容される要素のサイズと、ロケーション若しくはベースアドレスと、通信を確認するため必要とされる情報転送を可能にするバッファゾーン間の関係と、を指定し、
    手順(p)において、バッファゾーン毎に、その要素の初期値を記憶し、
    手順(q)において、所与のアプリケーションに対し、時間トリガー動作モードで実時間実行を開始する前に、メモリに先に格納されていた値を用いてバッファゾーンの要素の値を初期化し、
    手順(r)において、タスクの実行中に、タスク制御グラフのノードに達したときにシステムレイヤ呼び出しを実行し、現在実行されているタスクの制御グラフに応じて、先行のシステムレイヤ呼び出しに対応するノードからの遷移状態が許可されているかどうかを検証した後に、先に格納された呼び出しの性質に応じてバッファゾーンを連続的に更新させ、必要に応じて、最先の開始時間d(i)と最後の完了時間f(i)を含む実行されるタスクの時間パラメータの増分的な更新を実行する、
    ことを特徴とする請求項1乃至7のうち何れか一項記載の方法。
  9. システムレイヤにおいて、バッファゾーンだけがアプリケーションのタスクの実行コンテキストの拡張部分によって共有されることが許可され、メッセージ送信に対応した動的通信のための所与のバッファゾーンは2個のタスク実行コンテキスト拡張部分だけによって共有可能であり、一方、タイムスタンプ付きデータのストリームに対応した静的通信用のバッファゾーンは、3個以上のタスク実行コンテキスト拡張部分によって共有可能であるが、システムレイヤ内にコンテキスト拡張部分を保有するタスクだけによって修正することが可能である、
    ことを特徴とする請求項2及び8記載の方法。
  10. 原子炉用の安全クラス・レベル1Eを備えた制御・コマンド型システムに適用されることを特徴とする請求項1乃至9のうち何れか一項記載の方法。
JP2002541533A 2000-11-13 2001-11-13 エラーを抑制して制御・コマンド型のマルチタスクアプリケーションを決定論的に実時間で実行するセキュリティ方法 Expired - Lifetime JP3921447B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0014555A FR2816730B1 (fr) 2000-11-13 2000-11-13 Procede de securisation rendant deterministe l'execution en temps reel d'applications multitaches du type controle- commande avec confinement d'erreur
PCT/FR2001/003532 WO2002039277A1 (fr) 2000-11-13 2001-11-13 Procede de securisation rendant deterministe l'execution en temps reel d'applications multitaches du type controle-commande avec confinement d'erreur

Publications (2)

Publication Number Publication Date
JP2004535607A JP2004535607A (ja) 2004-11-25
JP3921447B2 true JP3921447B2 (ja) 2007-05-30

Family

ID=8856366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002541533A Expired - Lifetime JP3921447B2 (ja) 2000-11-13 2001-11-13 エラーを抑制して制御・コマンド型のマルチタスクアプリケーションを決定論的に実時間で実行するセキュリティ方法

Country Status (13)

Country Link
US (1) US7299383B2 (ja)
EP (1) EP1337919B1 (ja)
JP (1) JP3921447B2 (ja)
KR (1) KR100837787B1 (ja)
CN (1) CN1282079C (ja)
AT (1) ATE359549T1 (ja)
AU (1) AU2002220777A1 (ja)
CA (1) CA2428467C (ja)
DE (1) DE60127857T2 (ja)
ES (1) ES2284725T3 (ja)
FR (1) FR2816730B1 (ja)
RU (1) RU2285947C2 (ja)
WO (1) WO2002039277A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263598B2 (en) * 2002-12-12 2007-08-28 Jack Robert Ambuel Deterministic real time hierarchical distributed computing system
US8108628B2 (en) * 2003-08-04 2012-01-31 Azul Systems, Inc. Processor instruction used to perform a matrix test to generate a memory-related trap
US7689782B1 (en) * 2003-08-04 2010-03-30 Azul Systems, Inc. Processor instruction used to determine whether to perform a memory-related trap
EP1522923A3 (fr) * 2003-10-08 2011-06-22 STMicroelectronics SA Architecture de processeur à plusieurs contextes d'exécution simultanés
US8683426B2 (en) * 2005-06-28 2014-03-25 The Mathworks, Inc. Systems and methods for modeling execution behavior
US8793602B2 (en) * 2004-01-15 2014-07-29 The Mathworks, Inc. System and method for scheduling the execution of model components using model events
US9070104B2 (en) * 2004-11-12 2015-06-30 Sap Se Cross-context task management
CN100361081C (zh) * 2005-01-18 2008-01-09 华为技术有限公司 处理多线程/多任务/多处理器的方法
US8196178B2 (en) * 2005-10-05 2012-06-05 Microsoft Corporation Expert system analysis and graphical display of privilege elevation pathways in a computing environment
EP1780653B1 (en) * 2005-10-20 2011-11-30 Sap Ag Controlled path-based process execution
JP2007133807A (ja) * 2005-11-14 2007-05-31 Hitachi Ltd データ処理システム、ストレージ装置及び管理装置
JP4609381B2 (ja) * 2006-06-14 2011-01-12 株式会社デンソー 異常監視用プログラム、記録媒体及び電子装置
CN101266553B (zh) * 2008-05-06 2010-06-02 无锡紫芯集成电路系统有限公司 基于嵌入式系统的多任务管理方法
US7921195B2 (en) * 2008-06-09 2011-04-05 International Business Machines Corporation Optimizing service processing based on business information, operational intelligence, and self-learning
FR2937439B1 (fr) * 2008-10-17 2012-04-20 Commissariat Energie Atomique Procede d'execution deterministe et de synchronisation d'un systeme de traitement de l'information comportant plusieurs coeurs de traitement executant des taches systemes.
CN101853181A (zh) * 2010-05-11 2010-10-06 中达电通股份有限公司 用于嵌入式系统的子程序相互调用的方法
US8639809B2 (en) * 2010-08-20 2014-01-28 International Business Machines Corporation Predictive removal of runtime data using attribute characterizing
CN102339029B (zh) * 2011-06-30 2013-03-06 电子科技大学 一种嵌入式操作系统定时保护的实现方法
US8850557B2 (en) 2012-02-29 2014-09-30 International Business Machines Corporation Processor and data processing method with non-hierarchical computer security enhancements for context states
US8707316B1 (en) * 2012-01-05 2014-04-22 The Boeing Company Methods and systems for mission-driven quality of service management
WO2013134206A1 (en) * 2012-03-05 2013-09-12 The Board Of Regents, The University Of Texas System Automatically bridging the semantic gap in machine introspection
US20130290315A1 (en) * 2012-04-30 2013-10-31 Iac Search & Media, Inc. Method and system of using an access control for temporarily overriding call number for representations
FR2990782B1 (fr) * 2012-05-15 2015-06-26 Sagem Defense Securite Procede de gestion d'une execution de taches dans un systeme informatique
FR2993070B1 (fr) 2012-07-09 2014-07-18 Commissariat Energie Atomique Procede d'execution, au sein d'un systeme embarque multitaches, d'une application cadencee par plusieurs domaines de temps differents incluant une gestion d'interruptions
US8869148B2 (en) * 2012-09-21 2014-10-21 International Business Machines Corporation Concurrency identification for processing of multistage workflows
FR3004274A1 (fr) 2013-04-09 2014-10-10 Krono Safe Procede d'execution de taches dans un systeme temps-reel critique
FR3004825B1 (fr) 2013-04-19 2015-04-24 Krono Safe Procede d'allocation temporelle de taches permettant une recuperation d'erreur deterministe en temps reel
CN103984277B (zh) * 2014-05-26 2016-08-24 保定迈卓医疗器械有限公司 全数字化制氧机监测控制系统
CN104980224A (zh) * 2015-05-05 2015-10-14 电子科技大学 Fc-ae-1553数据交换模式设计、网络控制及节能方法
US10635831B1 (en) * 2018-01-06 2020-04-28 Ralph Crittenden Moore Method to achieve better security using a memory protection unit
US20220078199A1 (en) * 2020-09-09 2022-03-10 Spyderbat, Inc. Security event connectivity generated by linking enitities and actions from process tracking

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589093A (en) * 1983-03-28 1986-05-13 Xerox Corporation Timer manager
FR2766592B1 (fr) * 1997-07-23 1999-08-27 Bull Sa Dispositif et procede de regulation dynamique de l'attribution des ressources sur un systeme informatique
FR2771828B1 (fr) * 1997-12-03 2002-11-29 Sextant Avionique Procede de securisation pour un calculateur

Also Published As

Publication number Publication date
JP2004535607A (ja) 2004-11-25
EP1337919B1 (fr) 2007-04-11
KR20030063378A (ko) 2003-07-28
KR100837787B1 (ko) 2008-06-13
FR2816730B1 (fr) 2004-10-15
ES2284725T3 (es) 2007-11-16
DE60127857D1 (de) 2007-05-24
DE60127857T2 (de) 2007-12-20
FR2816730A1 (fr) 2002-05-17
WO2002039277A1 (fr) 2002-05-16
CA2428467C (en) 2008-09-23
ATE359549T1 (de) 2007-05-15
US7299383B2 (en) 2007-11-20
US20040078547A1 (en) 2004-04-22
CA2428467A1 (en) 2002-05-16
AU2002220777A1 (en) 2002-05-21
CN1488097A (zh) 2004-04-07
RU2285947C2 (ru) 2006-10-20
EP1337919A1 (fr) 2003-08-27
CN1282079C (zh) 2006-10-25

Similar Documents

Publication Publication Date Title
JP3921447B2 (ja) エラーを抑制して制御・コマンド型のマルチタスクアプリケーションを決定論的に実時間で実行するセキュリティ方法
JP3801630B2 (ja) 車両における内燃機関に対する燃料噴射制御方法
US8161453B2 (en) Method and apparatus for implementing task management of computer operations
JP4866864B2 (ja) マルチ・プロセッサ環境において共有されるリソースへのアクセスを管理する方法およびプログラム
US10248581B2 (en) Guarded memory access in a multi-thread safe system level modeling simulation
JPH07182184A (ja) 実行タスクのオーバーラン状態を監視する方法、タスク実行サイクルオーバーランを監視し制御する方法、及びタスク実行サイクルオーバーランを検出する装置
JP2008535040A (ja) 決定的イベント・シーケンスのロギングおよび再生のための命令をカウントするシステムおよび方法
US20070130569A1 (en) Method, apparatus and program storage device for providing a no context switch attribute that allows a user mode thread to become a near interrupt disabled priority
US8769546B2 (en) Busy-wait time for threads
US10229077B2 (en) Method for data transfer between real-time tasks using a DMA memory controller
JP2001014220A (ja) ソフトウェア制御される電子装置のパーティション分割および監視方法
US9201708B2 (en) Direct memory interface access in a multi-thread safe system level modeling simulation
US7228545B2 (en) Methods and apparatus for managing the execution of a task among a plurality of autonomous processes
US6662364B1 (en) System and method for reducing synchronization overhead in multithreaded code
CN107315631B (zh) 一种任务调度方法及装置
KR20200128589A (ko) 정보 처리 장치, 튜닝 방법 및 기록 매체에 저장된 튜닝 프로그램
JP6838223B2 (ja) 車両制御装置
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
WO1998012635A1 (en) Method and apparatus for encapsulating a protected-mode operating system within a real-time, protected-mode operating system
US5136710A (en) Dynamic inactivation of program exits of the application program while the system program is running
JPH05324569A (ja) 割り込み制御方式
KR100459417B1 (ko) 다중 프로세서 시스템의 작업 함수 처리 방법
Real et al. Combined scheduling of time-triggered and priority-based task sets in ravenscar
US11216372B2 (en) Execution manager for binary objects operating across private address spaces
Xu A Semi-partitioned Model for Scheduling Mixed Criticality Multi-core Systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041028

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070219

R150 Certificate of patent or registration of utility model

Ref document number: 3921447

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100223

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100223

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110223

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120223

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120223

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130223

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140223

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term