(57)【特許請求の範囲】
【請求項１】
安全性に関連した、および、安全性に関連していないソフトウェア・コンポーネント（ＳＡＦＥＴ、ＳＴＡＮＴ）を１つのハードウェア・プラットフォーム上で実行するための方法であって、前記ハードウェア・プラットフォームは演算処理ユニット（ＣＰＵ）および少なくとも１つのメモリ（ＳＰＥ）を含み、前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）が前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）と共に、前記演算処理ユニット（ＣＰＵ）上で実行され、前記ハードウェア・プラットフォームが監視コンポーネント（監視モジュール）（ＭＯＤ）を備え、または前記監視コンポーネント（ＭＯＤ）と接続されており、前記監視コンポーネント（ＭＯＤ）が前記ハードウェア・プラットフォームの前記演算処理ユニット（ＣＰＵ）から独立して働く方法において、
前記ハードウェア・プラットフォームが、書込み保護メカニズムを介して前記少なくとも１つのメモリ（ＳＰＥ）の少なくとも１つの領域（ＳＰＥ１、ＳＰＥ２）を備えており、前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）が、全面的な書込みアクセス権を前記メモリ（ＳＰＥ）の特定領域（ＳＰＥ１〜ＳＰＥ４）または全体に対して持っており、
前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）が、前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）のために備えられるメモリ領域から分離された、前記メモリ（ＳＰＥ）の特定領域上でアクセス権を持ち、
前記演算処理ユニットのオペレーティング・システムが、前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）の実行前に、前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）のアクセスに対して、前記メモリ（ＳＰＥ）の少なくとも１つの領域（ＳＰＥ１、ＳＰＥ２）にメモリ保護を行い、
前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）は、前記メモリ（ＳＰＥ）の制限された領域（ＳＰＥ３、ＳＰＥ４、ＳＰＥ５）内でのみ書込みアクセス権を持ち、前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）のために切り離された前記メモリ（ＳＰＥ）の領域（ＳＰＥ１、ＳＰＥ２）へのアクセス権を持たず、
前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）から前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）への復帰後に、前記メモリ領域（ＳＰＥ１、ＳＰＥ２）のメモリ保護が解除され、
前記監視コンポーネント（ＭＯＤ）が、前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）の機能を所定の手順で監視し、前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）が正常に動作しない場合、前記ハードウェア・プラットフォームにより制御されるシステムまたはデバイスを安全な状態に移行させることを特徴とする、方法。
【請求項２】
前記演算処理ユニット（ＣＰＵ）上でオペレーティング・システムが動作し、前記オペレーティング・システムのディスパッチャーが、前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）のスケジュール決定が下される前に、前記メモリ保護が常に達成されるよう確保し、および前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）のメモリ領域から分離されたメモリ領域の前記メモリ保護が、前記スケジュール決定が前記安全性に関連したソフトウェア・コンポーネントの有効化のために行われた場合にのみ、許可されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）の呼び出し後、前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）からアライブ信号が前記監視コンポーネント（ＭＯＤ）に送信されることを特徴とする、請求項１または２に記載の方法。
【請求項４】
前記安全性に関連していないソフトウェア・コンポーネント（ＳＴＡＮＴ）の呼び出し前後に、タイム・スタンプが前記監視コンポーネント（ＭＯＤ）に送信されることを特徴とする、請求項１〜３のうちいずれか一項に記載の方法。
【請求項５】
前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）の中心的な箇所でアライブ信号が前記監視コンポーネント（ＭＯＤ）に送信され、前記監視コンポーネント（ＭＯＤ）が前記安全性に関連したソフトウェア・コンポーネント（ＳＡＦＥＴ）の機能的手順も試験可能であることを特徴とする、請求項１〜４のうちいずれか一項に記載の方法。
【請求項６】
前記監視コンポーネント（ＭＯＤ）がアライブ信号および／またはタイム・スタンプが欠如した後に前記（部分）システムを安全な状態に移行することを特徴とする、請求項１〜５のうちいずれか一項に記載の方法。
【請求項７】
請求項１〜６のうちいずれか一項に記載の方法を実施するためのハードウェア・プラットフォーム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全性に関連したおよび安全性に関連していないソフトウェア・コンポーネントを１つのハードウェア・プラットフォーム上で実行するための方法に関し、その際ハードウェア・プラットフォームは演算処理ユニットおよび少なくとも１つのメモリを含み、その際少なくとも１つの安全性に関連していないソフトウェア・コンポーネントが少なくとも１つの安全性に関連したソフトウェア・コンポーネントと共にこの１つの演算処理ユニット上で実行され、その際ハードウェア・プラットフォームが監視コンポーネントを備え、またはこれと接続されており、その際この監視コンポーネントがハードウェア・プラットフォームの少なくとも１つのプロセッサーと無関係に働く。
【０００２】
さらに、本発明はこのような方法を実施するハードウェア・プラットフォームに関する。
【背景技術】
【０００３】
コンピューターシステムには、コンピューターシステムの誤った、または適時でない反応が人命または物品を損なう場合があるという任務に適用されることがますます増えている（「安全性関連システム」）。そのようなシステムは、誤りを十分に排除するために、規格化されたガイドラインに従って開発および試験されなければならない（ＩＥＣ６１５０８、ＩＳ０２６２６２）。これに応じてそのようなシステムを開発するには非常に手間がかかり、時間もかかり、それに応じて高額になる。
【０００４】
他方で、コンピューターに支援された機能はますます多くの分野に投入されている。しばしばそれは、重大ではない「標準機能」を備えた１つの制御装置を「安全性関連機能」に拡張するという要件から構成される。例：機能ＡＣＣ（前走車の速度に合わせて制御を行うオートマチック・クルーズ・コントロールで、重大ではない（快適性）機能）は、自動緊急ブレーキに拡大される（安全性関連機能）。
【０００５】
ただ１つの制御装置の中で安全性に関連する機能と重大でない機能が同時に進行することはコストメリットがある（制御装置が少なく、配線が少なく、整備が簡単等）。しかし重大でない機能の誤りが安全性に関連した機能を妨げることができないよう確保されなければならない。従来技術では、そのために特別なオペレーティング・システムが提供されており（ＡＲＩＮＣ６５３、ＤＥＣＯＳ）、これが、重大でない機能が安全性に関連した機能に「干渉する」ことをさまざまな対策によって阻止している。このオペレーティング・システムでは、制御装置ハードウェアにも機能のプログラミングにも非常に特殊な要件が設けられ、その結果重大でない機能をこの種のシステムに統合することもまたやはり手間がかかり高価になるという短所がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、既存の制御装置および既存の「標準機能」を効率的に「安全性機能」へと拡大し、それによって開発費用と単位原価を低減することができる、低費用でしかも効果的な手段を提供することである。
【課題を解決するための手段】
【０００７】
この課題は、冒頭に言及した方法または冒頭に言及したハードウェア・プラットフォームにより、次のように解決される。発明に従ったハードウェア・プラットフォームが少なくとも１つのメモリの少なくとも１つの部分のための書込み保護メカニズムを備え、その際安全性に関連したソフトウェア・コンポーネントが全面的な書込みアクセス権を特定の領域または全体のメモリに対して備えており、または安全性に関連したソフトウェア・コンポーネントがメモリの特定の領域に対してアクセス権を備えており、このメモリ領域が安全性に関連していない機能のために備えられているメモリの領域からは分離されており、その際安全性に関連したソフトウェア・コンポーネントが安全性に関連していないソフトウェア・コンポーネントの実行前に、安全性に関連していない機能のアクセスに対して、安全性に関連した機能の少なくとも１つのメモリ領域のメモリにメモリ保護を行い、その結果安全性に関連していないソフトウェア・コンポーネントがメモリの制限された領域のみ書込みアクセス権を持ち、および特に安全性に関連したコンポーネントのために切り離されたメモリの領域へのアクセス権を持たず、その際安全性に関連していないコンポーネントからの復帰後にメモリ保護が再度停止され、その際監視コンポーネントが安全性関連機能をその決められたとおりの手順で監視する。
【０００８】
安全性に関連していないコンポーネントからの「復帰」とは、安全性に関連したコンポーネントが安全性に関連していないコンポーネントを「スタート」させ、引き続いて安全性に関連していないコンポーネント「だけ」が作動し、およびこれが進行すると、再び安全性に関連したコンポーネントがさらに作動することを意味する。
【０００９】
本発明は、上述したものよりも低費用で解決方法を提供する。本発明の核心では、「楽天的な方法」が使用される。すなわち、重大でない機能は誤りの原因にならないと肯定的に仮定される。この仮定が正しいかどうかは、確実に非常に急速に点検される。すなわち、干渉（=安全性関連機能へ作用することの可能な、重大でない機能の誤り）は、なるほど阻止はされないが検知され、その結果安全性関連機能が安全な状態へ移行されることが可能である（または他の適切な方法で故障に対応がなされる）。
【００１０】
安全な状態とは、通常「スイッチオフ」を意味する。他の適切な方法として、問題のある機能を干渉が実行される前に（例えば安全性関連機能に必要なワーキング・メモリ領域の上書き）安全性関連機能を妨げることなく止めるという方法がある。これは除外処理ルーチンで実施可能である。
【００１１】
たいていのシステムではこのやり方はまったく十分である。なぜなら一般にはさらに別の信頼できない部分があるものであり、安全性関連システムは個々の誤りが生じた場合も常に不確かな状態になってはならないからである。
【００１２】
本発明の変形形態では、演算処理ユニット（＝ＣＰＵ）上でオペレーティング・システムが動作し、オペレーティング・システムのディスパッチャーが、安全性に関連していないスケジュール決定が下される前にメモリ保護が常に達成されるよう確保し、および（正確には）安全性に関連したコンポーネントを有効化するためのスケジュール決定が行われた場合にのみ安全性に関連していない領域から分離されたメモリ領域にメモリ保護が許可されるよう確保する。
【００１３】
安全性に関連していないソフトウェア・コンポーネントの呼び出し後、安全性に関連した機能からアライブ信号が監視モジュールに送られると、基本的に有利である。
【００１４】
さらに、重大でないソフトウェア・コンポーネントの呼び出し前後に、タイム・スタンプが監視モジュールに送られると、有利であり得る。
【００１５】
複数の、安全性に関連した機能の手順のために重要な箇所（「中心的な」箇所）に分散させて、安全性に関連したソフトウェア・コンポーネントがアライブ信号を監視モジュールに送信し、その結果監視モジュールが安全性に関連したソフトウェア・コンポーネントの機能的な手順を試験可能であると、特に好都合である。
【００１６】
その場合は、単純なアライブ信号は使用されず、チェック・サムまたは類似のものを介して複数の試験ポイントの手順の順番も監視される。これにより安全性関連機能が作動していることだけでなく、どんな順番で規定の重大ポイントが機能の中で進められたかを見ることができる。
【００１７】
最後に、アライブ信号および／またはタイム・スタンプが欠如した後、監視モジュールが（部分）システムを安全な状態に移行させるとさらに特に好都合である。
【００１８】
以下では、本発明を、図を使用して詳細に説明する。
【図面の簡単な説明】
【００１９】
【図１】演算処理ユニット（ＣＰＵ）のワーキング・メモリのセグメンテーションである。演算処理ユニット上では重大でない機能および安全性関連機能が実行される。
【図２】試験／保護機能の疑似コードである。
【図３】安全性に関連した機能の独立した試験の経過である。
【図４】オペレーティング・システムのディスパッチャー内でのメモリ保護有効化の疑似コードである。
【発明を実施するための形態】
【００２０】
本発明は、複数の特徴および方法を組み合わせている。
１．重大でない機能の間違ったメモリアクセスをブロック（検知）するために、ＣＰＵのメモリのメモリ保護を実現。
２．安全性に関連した機能の不具合のある手順を認識するために、監視モジュールとして機能する独立したユニット内での試験インスタンスを使用。
【００２１】
この方法は、安全性に関連した機能の信頼できる監視を達成するために、これら２つの技術を使用する。その際制御装置のＣＰＵのワーキング・メモリＳＰＥは、図１に従ってセグメンテーションされる。
【００２２】
安全性に関連した機能ＳＡＦＥＴは、全体のワーキング・メモリＳＰＥ（またはメモリＳＰＥの基本的な領域ＳＰＥ１〜ＳＰＥ４）を読取り、書込みすることができる一方で、重大でない機能ＳＴＡＮＴはワーキング・メモリＳＰＥの一部分ＳＰＥ３〜ＳＰＥ５のみしか読取り、書込みすることができない。メモリＳＰＥの一部分ＳＰＥ３は、重大でない領域に割り当てられており、交換領域として規定されている。ここでは、必要な場合、安全性に関連した機能と重大でない機能との間でデータが交換される。
【００２３】
メモリＳＰＥのセグメンテーションは、その際安全性に関連した機能がそれ自身のスタック領域とヒープ領域ＳＰＥ１を持っているように行われなければならない。従って領域間で機能を直接呼び出すことは不可能である。
【００２４】
安全性関連機能が標準機能のスタック／ヒープ領域ＳＰＥ５にアクセスできてよく（図示せず）その際しかしこれが一般にまれにしか必要でなく、しかし重要なことは、標準機能が安全性に関連した機能のスタック／ヒープＳＰＥ１に（およびバリアブルへも）アクセスできないことが確保されることである。
【００２５】
しかし、メモリセグメンテーションだけでは、安全性に関連した機能の保護には十分ではない。さらに、重大でない機能の誤りでＣＰＵをブロックせず、それによって安全性に関連した機能が適時に反応可能であることが阻止されないことが確保されなければならない。発明に従った方法は、なるほどブロックを阻止しないが、検知することができる。その際、安全性に関連した機能と重大でない（標準）機能との切り替え毎に、ソフトウェア試験ポイント（ＳＷ試験ポイント）が行われる。
【００２６】
図２の疑似コード（ここでは安全性関連機能による標準機能の呼び出しのための例を記述している）は、発明の中核、すなわち、重大でない機能のワーキング・メモリアクセスもランタイム特性も試験される試験／保護機能を公開している。
【００２７】
ＣＰＵの初期化は常に、最初からＣＰＵ経由の制御を備えている安全性関連機能によって実行される。重大でない機能が進行するたびに、安全性に関連した機能の保護が２つの側で生じる。（１）メモリ保護の再構成は、安全性に関連した機能のデータ保護を達成する。ＣＰＵの特別なモジュールの調整が行われ、その結果アクセスが制限された領域のワーキング・メモリでのみ許容される。交換される必要のあるパラメーターは、まず交換領域にコピーされる。標準機能がデータも戻す場合、アナログのメカニズムが他の方向（重大でない機能から安全性に関連した機能へ）実施される（疑似コード内には示されていない）。（２）ＳＷ試験ポイント（疑似コード内では「ｃｈｅｃｋ_ｐｏｉｎｔ」と呼ばれる）は、残った標準機能が検知されることを確保する。アライブ信号（Ａｌｉｖｅ  Ｓｉｇｎａｌ）が送信され、これらはＣＰＵの外部で監視される（さらに下記参照）。
【００２８】
図２に示された疑似コードは、標準機能の呼び出し毎に、安全性に関連したコンテキスト中に生成される。このために既知のマクロ生成技術またはコード生成技術が使用され、その結果このコードを手動で記述する必要がない。
【００２９】
重大でない機能が誤って許容されているよりも長くＣＰＵを働かせる（つまりブロックする）場合を検知するため、試験／保護機能が送る、安全性に関連した機能のアライブ信号が独立して監視されなければならない。そのためには例えばＣＰＵの外部の監視モジュールを使用してよい。図３は、そのような構造を示している。アライブ信号が集められ（図３のモジュールＳａｆｅＣｒｏｓｓＣｈｅｃｋ参照）およびＩ／Ｏケーブル経由で監視モジュールＭＯＤに伝達される。監視モジュールＭＯＤはＣＰＵとは「無関係に生きて」おり、この上では安全性に関連した機能が作動し、それゆえに誤りまたはＣＰＵのブロックに該当せず、および安全性関連機能がもはや正しく作動しなくなった場合に、このようなやり方でそれが検知され得る。
【００３０】
監視機能がアライブ信号を適時に受け取らなかった場合、システムを安全な状態に移行するために、監視機能は処置を実行する。例えばサブシステムがエンジンや制御装置などをオフにするか、または機械的なロック／機械的な「バックアップシステム」を有効にする（例えばステアリングホイールと車輪の間に固定接続が引き起こされる）。
【００３１】
要約すると、記述された方法は従来技術に従った解決法と以下の点で異なる。
・方法が「楽天的」であること。安全性に関連した機能と重大でない機能を厳格に分離することを強制しようとしていない。安全性に関連した領域における重大でない機能の干渉はしかし信用できると認識される。
・重量が軽く、ほとんどリソースを使用しない。
・認証されたオペレーティング・システムは不要である。この方法は、オペレーティング・システムなしのシステムにも、重大でない機能のように扱うことが可能である、標準オペレーティング・システムを備えたシステムとまったく同じように導入することができる。
・重大でない機能をこの方法に適合する必要がない。
重大でないソフトウェアは、ほとんど変更することなく統合することができる。重大でない機能のＡＰＩ（「Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｒｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ（アプリケーション・プログラミング・インターフェース）」）は維持される。
【実施例】
【００３２】
（１）重大でない機能の時間監視：
試験／保護機能は、重大でない機能の計測時間を一緒に書き込むためにも使用可能である。そのために、重大でない機能を呼び出す前にタイム・スタンプが保存される。呼び出し後、重大でない機能の所要時間が測定される。この所要時間は、監視モジュールに伝達される。ある限界を超えると、重大でない機能の所要時間消費が誤りと評価される。
【００３３】
（２）安全性に関連した機能の広範囲にわたる試験：
記述された方法は、安全性に関連した機能に複雑な点検を実施するという趣意で拡大可能である。こうして、試験／保護機能が呼び出しの特定の順番で一緒に記録されることで、安全性に関連した機能内で特定のパスが独立して追跡される。
【００３４】
（３）オペレーティング・システムでの使用：
それ自身は必要な安全基準を満たしていない、標準オペレーティング・システムを備えたあるシステム内で安全性関連機能が実施される場合、これは発明に従った方法によって同様に可能である。以下の安全性に関連した機能は、その際オペレーティング・システムに統合されなければならず、それによってコンテキストが切り替わるごとに方法の規則が考慮される。
・ＣＰＵ上で実施すべきタスクの初期化前にメモリ保護を有効にする（ソフトウェアの早期の初期化段階におけるメモリ保護の有効化）
・各タスク・スイッチにおけるメモリ保護の正しい修正
・中断によるメモリ保護の信頼できる修正
【００３５】
図４の疑似コードは、ディスパッチャーの必要な拡大を示している。ディスパッチャーは中断によってスタートし、図４に示されたコードはＩｎｔｅｒｒｕｐｔ−Ｓｅｒｖｉｃｅ−Ｒｏｕｔｉｎｅ内に含まれる。
【００３６】
重大でない機能を時間的に監視するという、変形例（１）に記述されている手段は、オペレーティング・システムでも同様に可能である。タイムカウンターは追加的に上述のすべてのコンテキスト交換に追随する。
【００３７】
（４）メモリ・セグメントのさまざまなクラス
単純化するという理由により、方法の説明には常に２つのメモリ保護クラスのみ言及される：
安全性関連機能のために完全にオープンにされたメモリ
安全性に関連したメモリ領域は完全に保護されている。
【００３８】
しかしこの方法は多数のメモリ保護クラスを使用したシステムで使用することもできる。さまざまな安全性関連機能が管理可能であり、その際それぞれは自身のために自己のメモリ領域にのみアクセス可能であり、しかし他の安全性に関連した機能の領域にはアクセスできない。重大でない機能内でも、同様にさまざまなメモリ領域が定義可能である。この方法のために、満たさなければならない条件は１つだけである。安全性に関連した機能のプライベートなメモリ領域（ＲＡＭ、ＲＯＭ、スタック、ヒープ）は、重大でない機能によるアクセスから保護されていなければならない。
【００３９】
本発明による方法は、安全性に関連したソフトウェア機能を１つのコンピューター内で、標準機能または標準オペレーティング・システムと一緒に作動させることを可能にする。安全性に関連した機能と重大でない機能は、別々のコンテキスト（自己のスタック／ヒープおよび自己のメモリ・セグメント）で進行する。安全性に関連した機能と重大でない機能間の切り替えは、メモリ保護（無効）有効化するために使用される。同じ箇所で、監視モジュールを可能にするアライブ信号（Ａｌｉｖｅ−Ｓｉｇｎａｌ）も中止され、制御装置が独立して、観察のためおよび誤りによってスイッチオフになる。
【００４０】
この方法はその軽量さと幅広い適用範囲が特徴である。必要なものはハードウェア・サポーターとメモリ保護および独立して作動する監視モジュールだけである。使用される標準ソフトウェアには要件が設定されず、引き続き変更することなく使用することができる。アダプションは、コンテキスト交換時、オペレーティング・システムに近い機能にある、狭い範囲の重大な箇所にのみ必要である。
【００４１】
本発明による方法は、安全上重大な領域内のコンピューターに使用することに適している（埋込みまたはホストとして）。
【符号の説明】
【００４２】
ＳＡＦＥＴ  ソフトウェア・コンポーネント
ＳＴＡＮＴ  ソフトウェア・コンポーネント
ＣＰＵ  演算処理ユニット
ＳＰＥ  メモリ
ＭＯＤ  監視コンポーネント
【図１】
0005841271.tif 000002
【図２】
0005841271.tif 000003
【図３】
0005841271.tif 000004
【図４】
0005841271.tif 000005