(57)【要約】  ワーキングメモリを保護する方法（１０）であって、−ワーキングメモリのメモリ領域を、選択的に第１のクラスまたは第２のクラスに割り当て（１１）、−プログラム実行前に、少なくとも第１のクラスのメモリ領域を、メモリ保護ユニットの設定テーブルへ登録し（１３）、−プログラム実行中に、第２のクラスのメモリ領域の中の宛先領域へのアクセス（１５）が要求された場合、アクセス（１５）が許可される前に、宛先領域が設定テーブルに登録される（Ｙ）、ことを特徴とする方法。
2019535093.tif 000002
【特許請求の範囲】
【請求項１】
メモリ保護ユニットによりワーキングメモリを保護する方法（１０）であって、
−  前記ワーキングメモリのメモリ領域が、選択的に第１のクラスまたは第２のクラスに割り当てられ（１１）、
−  プログラム実行前に、少なくとも前記第１のクラスのメモリ領域が、前記メモリ保護ユニットの設定テーブルへ登録され（１３）、
−  プログラム実行中に、前記第２のクラスのメモリ領域の中の宛先領域へのアクセス（１５）が要求された場合、前記アクセス（１５）が許可される前に、前記宛先領域が前記設定テーブルに登録される（Ｙ）、
ことを特徴とする方法。
【請求項２】
−  前記要求されたアクセス（１５）は、例外処理ルーティン（１６，１７，１８，１９、Ｙ，Ｎ）によって処理され、
−  前記例外処理ルーティン（１６，１７，１８，１９、Ｙ，Ｎ）は、少なくとも前記宛先領域に基づいて権限チェック（１９）を行い、
−  前記例外処理ルーティン（１６，１７，１８，１９、Ｙ，Ｎ）は、前記権限チェック（１９）が失敗した場合（Ｎ）、事前設定されたエラー応答（１７）を作動させる、
ことを特徴とする、請求項１に記載の方法（１０）。
【請求項３】
−  前記例外処理ルーティン（１６，１７，１８，１９、Ｙ，Ｎ）は、前記アクセス（１５）を要求するマシン指令（１４）に基づいて、前記宛先領域内で、前記アクセス（１５）が関連する宛先タイプと宛先アドレスを復号化（１６）し、
−  前記権限チェック（１９）は、前記宛先タイプと前記宛先アドレスとにさらに基づいて行われる、
ことを特徴とする、請求項２に記載の方法（１０）。
【請求項４】
−  前記第２のクラスの少なくとも１つのメモリ領域が、前記設定テーブルにさらに登録（１３）され、
−  前記アクセス（１５）が許可される場合（Ｙ）、前記例外処理ルーティン（１６，１７，１８，１９、Ｙ，Ｎ）は、前記設定テーブルの前記メモリ領域を前記宛先領域によって置き換え（１８）、前記マシン指令（１４）を再度行うことを指示する、
ことを特徴とする、請求項３に記載の方法（１０）。
【請求項５】
−  前記設定テーブルに、第２のクラスの複数のメモリ領域が登録され（１３）、
−  前記アクセス（１５）が許可される場合（Ｙ）、前記例外処理ルーティン（１６，１７，１８，１９、Ｙ，Ｎ）は、事前設定された置換方法に従って、第２のクラスの登録されたメモリ領域の中から１つのメモリ領域を選択し、前記設定テーブルの前記選択されたメモリ領域を前記宛先領域によって置き換え（１８）、前記マシン指令（１４）を再度行うことを指示する、
ことを特徴とする、請求項４に記載の方法（１０）。
【請求項６】
−  第２のクラスの前記メモリ領域に基づいて、プログラム実行前にチェックルーティンが生成され、
−  前記権限チェック（１９）は、前記チェックルーティンの呼び出しを含む、
ことを特徴とする、請求項２〜５のいずれか一項に記載の方法（１０）。
【請求項７】
−  第２のクラスの前記メモリ領域は、好ましくはフラッシュメモリ内にデータ構造で記憶され（１２）、
−  前記権限チェック（１９）は、前記データ構造にさらに基づいて行われる、
ことを特徴とする、請求項２〜５のいずれか一項に記載の方法（１０）。
【請求項８】
請求項１〜７のいずれか一項に記載の方法（１０）を実行するために設定されたコンピュータプログラム、特にハイパーバイザまたはオペレーションシステム。
【請求項９】
請求項８に記載のコンピュータプログラムが記憶された機械可読記憶媒体。
【請求項１０】
請求項１〜７のいずれか一項に記載の方法（１０）を実行するために設定された装置（２０）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワーキングメモリを保護する方法に関する。さらに、本発明は、対応する装置、対応するコンピュータプログラム、および対応する記憶媒体に関する。
【背景技術】
【０００２】
メモリ管理においては、オペレーティングシステムや、いわゆるハイパーバイザによる以下のような機能がメモリ保護と呼ばれている。そのような機能とは、例えばプログラムエラーによって引き起こされる個別プログラムのクラッシュによって他のプログラムやシステム全体の安定性が損なわれないように、使用可能なワーキングメモリを分割し、実行中のプログラム、またはゲストシステムを相互に分離する機能のことである。このようにして監視されたプログラムは、この方法によって、過失によりまたは故意に他のプログラムのメモリ領域にアクセスすること、および標準化されたインターフェースを介する以外の方法でオペレーティングシステムを使用することが防止される。
【０００３】
メモリ保護をサポートするメモリ保護ユニット（ｍｅｍｏｒｙ  ｐｒｏｔｅｃｔｉｏｎ  ｕｎｉｔｓ、ＭＰＵｓ）、またはより複雑なメモリ管理ユニット（ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔｓ、ＭＭＵｓ）はよく知られている。このため、以下の実施形態の範囲では、用語「メモリ保護ユニット」は広義的に、仮想アドレスを変換することができる高度なメモリ管理ユニットを明確に含むと解するものとする。
【０００４】
メモリ保護ユニットは、最初はマイクロプロセッサ用の外部追加コンポーネントとして設計されていたが、従来技術では、高性能プロセッサに直接一体化されているか、少なくともその近傍に配置されている。しかし、従来は個別のアプリケーションを実行するためだけに設計されていた組み込みシステム、特にマイクロコントローラも、仮想化メカニズムおよびメモリ保護メカニズムをさらに備えるようになっている。
【０００５】
独国特許出願公開第１０２０１４２０８８４８号明細書は、メモリアクセスを実行するための方法およびコンピュータプログラムを提示する。このため、ハイパーバイザはメモリ保護ユニットとともに使用され、これを介してメモリアクセスが行われる。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明は、独立形式請求項にかかるワーキングメモリを保護する方法、対応する装置、（例えばハイパーバイザまたはオペレーティングシステムの形態の）対応するコンピュータプログラム、および機械可読記憶媒体を提供する。
【０００７】
ここで、提案されたアプローチは、設定可能なメモリ領域の数、および関連するアクセス権が、一般的なハードウェアメモリ保護ユニットにおいて制限されているという認識に基づいている。この制限は、例えばハイパーバイザの場合、仮想マシン（ＶＭ）が使用するメモリ領域の数がハードウェアの能力を超える可能性があることを必然的に伴う。この点において、個別メモリ領域の融合が場合によって問題となるものであり、この個別メモリ領域の融合は、メモリ保護設定の粒度を制限し、その結果、仮想マシンによる、特定のメモリ箇所への不当なアクセスを、もはや完全に排除することはできなくなる。この問題は、ハイパーバイザが内部使用のために対応する設定テーブルのいくつかのエントリを予約することによって、または仮想マシン内の保護オペレーティングシステムなどを実装するために、それ自体がメモリ保護ユニットを必要とする仮想マシンに仮想ＭＰＵ実装を提供することによって、深刻化する可能性がある。
【発明の効果】
【０００８】
本発明の実施形態の利点は、仮想マシンによって直接的、および、例えばハイパーバイザを通じて間接的に使用されるメモリ領域すべてを正確に設定することができるようにするために、冒頭のメモリ保護ユニットの設定可能なメモリ領域の数値的な制限を克服することである。このような解決方法は、仮想マシンが、ハードウェアメモリ保護ユニットの能力に制限されることなく、ほぼ任意の数のメモリ領域にアクセスすることを可能にする。
【０００９】
従属請求項に記載されている方法によって、独立請求項に記載の基本概念の有利な展開および改善が可能である。
発明の実施例を図面に示し、以下の記載に詳述する。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態にかかる方法のアクティビティ図である。
【図２】第２の実施形態にかかる制御装置を概略的に示した図である。
【発明を実施するための形態】
【００１１】
図１は、本発明にかかる方法（１０）の例示的構成の基本的なフローを示す。以下の実施形態の目的のために、考察するシステムは、ハードウェアに関してメモリ保護ユニットがサポートするよりも、多くの区別すべきメモリ領域を有していると仮定する。
【００１２】
ここで、以下に説明する解決方法は、ハイパーバイザが、実行時に必要に応じてメモリ保護ユニットの設定エントリを交換するという基本的な考え方に基づく。このアプローチは、ハイパーバイザのゲストシステムとして操作された仮想マシンに実行コンテキストを提供し、これは、設定されたメモリ領域の数がメモリ保護ユニットの数を超えた場合でも、該当するマシンの設定で特定された全てのメモリ領域を考慮する。
【００１３】
ここで、記載されている交換は、従来技術では例えばキャッシュメモリに使用されているような、オペレーティングシステム理論から借用された設定可能な置換方法に従う。例えば、ＭＰＵによる最後の使用が長らく前のことである（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ，ＬＲＵ）設定エントリをスワップすることが問題となる。
【００１４】
ここで、実施は、図によると以下のスキームに従う。開発段階では、設定すべきメモリ領域を、まず選択的に第１のクラスまたは第２のクラスに割り当てる（アクティビティ１１）。ここで、ハイパーバイザの設定言語により、インテグレータが個別の領域を、スワップ不可（第１のクラス）またはスワップ可能（第２のクラス）のいずれかとしてマークすることができる。この場合、少なくとも１つの領域がこのクラスに割り当てられている限り、メモリ保護ユニットの少なくとも１つの設定エントリが、常に第２のクラスのメモリ領域のために保留されているべきであると理解できる。
【００１５】
メモリ領域を分類する際、スワップされたメモリ領域内でのマシン指令を実行するための、およびそのようなメモリ領域への読み書きアクセスのための待ち時間が、大幅になくなる可能性があることに留意されたい。どのメモリ領域をスワップ不可として、およびどのメモリ領域をスワップ可能として設定するかの決定は、インテグレータによる。好適な置換方法の選択についても、各アプリケーションのリアルタイム要件に応じて、同様のことが当てはまる。
【００１６】
続いて、ハイパーバイザは、第２のクラスのスワップ可能なメモリ領域を、フラッシュメモリ内に適切なデータ構造で格納する（アクティビティ１２）。ここで、構造はこの種の各領域について、領域の権限チェックに関連する詳細、すなわち、特に領域が占めるアドレス空間の境界、および該当するゲストシステムまたはプロセスの許可されたアクセスタイプを含む。代替実施形態では、本発明の範囲から逸脱せずに、コード生成によって行われる分類に基づいて、例えば第１のクラスと第２のクラスとの領域間のケース区別（ｓｗｉｔｃｈ  Ｓｔａｔｅｍｅｎｔ）を行うチェックルーティンが生成されてもよい。
【００１７】
起動前に、ハイパーバイザは、関連する設定テーブルに、少なくとも第１のクラスに含まれる領域を入力することによって、メモリ保護ユニットの設定によって、スワップ不可能な全てのメモリ領域を調整する（アクティビティ１３）。設定によって区別されるメモリ領域の総数が使用可能なテーブルエントリの数を超えない限り、個別エントリのスワップは不要である。しかし、設けられたメモリ領域の数がメモリ保護ユニットの能力を超える場合、そのようなスワップは仮想マシンの実行時に可能である。
【００１８】
メモリ保護ユニットの「設定テーブル」の概念は、特に、現代のメモリ管理ユニットに通常設けられ、第一に、仮想メモリアドレスを物理メモリアドレスに変換するため使用されるページテーブル（ｐａｇｅ  ｔａｂｌｅ）を含む。この種のページテーブルは、一段、多段、またはメモリスペース節約のため逆引きで構築することもでき、ページテーブル内の検索は、前置されているいわゆるハッシュテーブルによって加速することができる。ページテーブルへの前述のエントリ（アクティビティ１３）は、この場合ページテーブルエントリ（ｐａｇｅ  ｔａｂｌｅ  ｅｎｔｒｙ，ＰＴＥ）を生成することによって行われる。
【００１９】
しかしながら、より単純な実施形態では、設定テーブルは、一般的な制御ユニット（ｅｌｅｃｔｒｏｎｉｃ  ｃｏｎｔｒｏｌ  ｕｎｉｔ，ＥＣＵ）の異なるソフトウェアコンポーネント（ｓｏｆｔｗａｒｅ  ｃｏｍｐｏｎｅｎｔｓ，ＳＷ−Ｃｓ）を分離するためのＡＵＴＯＳＡＲ開発パートナーシップの範囲にあるように、仮想メモリ管理なしの単純なメモリ保護ユニットのレジスタによって具体化することができる。電子技術者に「領域」としてよく知られている設定テーブルのエントリ（通常はモデルによってＭＰＵあたり２〜３２の領域）は、この場合、ＡＵＴＯＳＡＲの意味でのいわゆるパーティションを表し、これは、相互に区切られた保護空間としてそれぞれ複数のソフトウェアコンポーネントを含むことができる。ここで、ＭＰＵのレジスタ内容はこれらの各領域に対し、製造者によるビットシーケンスによってそれぞれのパーティションに対して許可されるアクセスタイプを指定するが、「特権」ソフトウェアによるアクセスと、「非特権」ソフトウェアによるアクセスとの間でさらに区別される。
【００２０】
プログラム実行中に、第２のクラスによって含まれ、ひいては基本的にスワップ可能であるが、メモリ保護ユニット内にすでに事前設定されているメモリ領域へのアクセスを仮想マシンが要求する場合（このケースは図示されていない）、ハイパーバイザによる介入は不要である。しかし、プログラム実行中に、現在設定テーブル内に登録されていない第２のクラスのメモリ領域の中の宛先領域へのアクセスが要求された場合（イベント１５）、メモリ保護ユニットによって定義された例外処理が開始される。ハイパーバイザは、この目的のために登録された例外処理ルーティン（ｅｘｃｅｐｔｉｏｎ  ｈａｎｄｌｅｒ）を提供し、これは、例外を引き起こすマシン指令（アクティビティ１４）を復号化し、この方法でアクセスタイプ（読み取り、書き込みまたは実行）および要求されたアクセスの宛先アドレスを取得する（アクティビティ１６）。この情報およびアクティビティ１２に格納されたデータ構造に基づいて、例外処理ルーティンは存在するアクセスを権限チェックにかけ（決定１９）、失敗すると（分岐Ｎ）、仮想マシンを定義されたエラー状態に移し、このエラー状態は、ハイパーバイザに、仮想マシンの再始動などの事前設定されたエラー応答（アクティビティ１７）を指示する。この場合、メモリ保護ユニットは、不当に保護アドレス空間へアクセスする試みを、設定テーブルに格納された権限に基づいて、いわゆる保護違反（ｓｅｇｍｅｎｔａｔｉｏｎ  ｖｉｏｌａｔｉｏｎ，ｓｅｇｍｅｎｔａｔｉｏｎ  ｆａｕｌｔ，ｓｅｇｆａｕｌｔ）またはアクセス違反（ａｃｃｅｓｓ  ｖｉｏｌａｔｉｏｎ）として認識し、これをハイパーバイザに警告する。この警告は、ＵＮＩＸ（登録商標）のようなオペレーティングシステムにおいては、例えばＳＩＧＳＥＧＶ例外条件によって、ＩＡ−３２もしくはｘ８６アーキテクチャのマイクロプロセッサ、またはより高性能なマイクロコントローラにおいては割り込み（ｉｎｔｅｒｒｕｐｔ）によって行うことができる。
【００２１】
要求されたアクセスを、成功した権限チェック（１９）に基づいて許可することができる場合（分岐Ｙ）、例外処理ルーティン（１６、１７、１８、１９、Ｙ、Ｎ）は、事前設定された置換方法に従って、現在メモリ保護ユニットの設定テーブルに登録されている第２のクラスのメモリ領域の中から、スワップ用の領域を選択する。この廃棄領域によって占められているエントリは、要求されたアクセスが関連するメモリ領域によって埋められている（アクティビティ１８）。この宛先領域（基本的に、それが占めるアドレス空間の境界、および許可されるアクセスタイプによって定義される）は、アクティビティ１２に格納されたデータ構造から取ることができる。このようにして最終的に、例外処理（１６、１７、１８、１９、Ｙ、Ｎ）を完了することができ、仮想マシンにおける制御フローを継続し、アクセスを要求するマシン指令（１４）を、メモリ保護違反をすることなく再び行うことができる。
【００２２】
この方法（１０）は、図２の概略図に明示するように、例えばソフトウェア、もしくはハードウェアで、または例えば制御装置（２０）におけるソフトウェアとハードウェアとの混合形式で実装することができる。
【図１】
2019535093.tif 000003
【図２】
2019535093.tif 000004
【国際調査報告】
2019535093.tif 000005
2019535093.tif 000006
2019535093.tif 000007
2019535093.tif 000008