(57)【要約】【課題】メモリページをプログラムに対応付けるページカラーリングを提供する。【解決手段】メモリページをプログラムに対応付けるページカラーリング装置と方法を開示する。一実施形態においては、装置はページングユニットと、メモリにアクセスするインターフェースとを含む。ページングユニットは、変換ロジックと比較ロジックとを含む。変換ロジックは第一のアドレスを第二のアドレスに変換する。第一のアドレスはメモリの第一のページに格納された命令が供給する。変換はデータ構造におけるエントリーに基づいており、エントリには第二のアドレスを含むメモリの第二のページのベースアドレスが含められている。比較ロジックは第一のページのカラーを第二のページのカラーに比較する。第一のページのカラーは、第一のページの、第一の命令を含む第一のプログラムとの対応付けを示す。データ構造のエントリーには、第二のページの、第一のプログラム又は第二のプログラムとの対応付けを示す第二のページのカラーも含められている。【選択図】図１
2009516310.tif 000002
【特許請求の範囲】
【請求項１】
メモリにアクセスするインターフェースと、
ページングユニットと
を備え、
前記ページングユニットは、
前記メモリの第一のページに格納された命令が供給する第一のアドレスを、前記メモリの第二のアドレスを含む第二のページのベースアドレスを含む、データ構造内のエントリーに基づいて、前記第二のアドレスに変換する変換ロジックと、
前記第一のページが前記第一の命令を含む第一のプログラムと対応することを示す該第一のページのカラーを、前記第二のページが前記第一のプログラムと第二のプログラムのうち一方と対応することを示す、前記エントリーに更に含まれる該第二のページのカラーと比較する比較ロジックと
を含む、
装置。
【請求項２】
前記第一のページの前記カラーと前記第二のページの前記カラーとが異なる場合、前記命令が前記第二のページにアクセスするのを阻止するアクセスロジックを更に含む請求項１に記載の装置。
【請求項３】
前記アクセスロジックは、ページフォールト例外をトリガすることにより前記命令が前記第二のページにアクセスするのを阻止する、
請求項２に記載の装置。
【請求項４】
前記第二のページの前記カラーが、該第二のページがカラーリングされていないことを示すよう設定されている場合に、前記命令が該第二のページにアクセスするのを許可するアクセスロジックを更に含む請求項１に記載の装置。
【請求項５】
アクセスが読み出しアクセスであり、かつ前記エントリーに、前記第二のページが隠れていないことを示す表示も含められている場合に、前記命令が該第二のページにアクセスするのを許可するアクセスロジックを更に含む請求項１に記載の装置。
【請求項６】
アクセスが前記第二のページ内の許可されたエントリー・ポイント命令に対してのジャンプと呼び出しのうちの一方である場合に、前記命令が該第二のページにアクセスするのを許可するアクセスロジックを更に含む請求項１に記載の装置。
【請求項７】
前記命令がジャンプと呼び出し命令のうちの一方であり、かつ前記第一のページの前記カラーが、該第一のページからの、該第一のページの該カラーとは異なるカラーのページに対するジャンプと呼び出しが許可されていることを示すよう設定されている場合に、前記命令が前記第二のページにアクセスするのを許可するアクセスロジックを更に含む請求項１に記載の装置。
【請求項８】
前記アクセスロジックは、更に前記命令が前記第二のページにアクセスするのを阻止したことを、ページカラー違反としてエラーコードにより報告する、
請求項３に記載の装置。
【請求項９】
前記命令がジャンプと呼び出し命令のうちの一方であり、かつ前記ジャンプと前記呼び出しのうちの前記一方が許可されている場合に、前記第一のページの前記カラーを記憶する記憶位置を更に含む請求項１に記載の装置。
【請求項１０】
アクセスが前記第二のページの境界から所定の整列状態にあるポイントに対するものであり、かつ前記エントリーに、該第二のページへの該ポイントに対するアクセスが許可されていることを示す表示も含められている場合に、前記命令が該第二のページにアクセスするのを許可するアクセスロジックを更に含む請求項１に記載の装置。
【請求項１１】
第一のページのカラーを第二のページのカラーに比較する段階と、
前記第一のページの前記カラーが前記第二のページの前記カラーと同じである場合、前記第一のページからの命令が前記第二のページにアクセスするのを許可する段階と
を含む方法。
【請求項１２】
前記第一のページの前記カラーが前記第二のページの前記カラーと異なる場合、前記命令が前記第二のページにアクセスするのを阻止する段階を更に含む請求項１１に記載の方法。
【請求項１３】
前記第二のページがカラーリングされていない場合、前記命令が前記第二のページにアクセスするのを許可する段階を更に含む請求項１１に記載の方法。
【請求項１４】
アクセスが読み出しアクセスであり、前記第一のページの前記カラーが前記第二のページの前記カラーと異なり、かつ前記第二のページが隠れている場合、前記命令が前記第二のページにアクセスするのを阻止する段階を更に含む請求項１１に記載の方法。
【請求項１５】
アクセスがジャンプと呼び出しのうちの一方であり、かつ前記第一のページの前記カラーが、該第一のページからの、該第一のページの該カラーと異なるカラーのページに対するジャンプと呼び出しが許可されていることを示すよう設定されている場合、前記命令が該第二のページにアクセスするのを許可する段階を更に含む請求項１１に記載の方法。
【請求項１６】
スケジューラの一部を前記第一のページにロードする段階と、
前記第一のページの前記カラーを、該第一のページからの、該第一のページの該カラーと異なるカラーのページに対するジャンプが許可されていることを示すよう設定する段階と
を更に含む請求項１５に記載の方法。
【請求項１７】
アクセスが許可されたエントリー・ポイントに向けた命令フェッチである場合、前記命令が前記第二のページにアクセスするのを許可する段階を更に含む請求項１１に記載の方法。
【請求項１８】
前記第二のページの前記カラーを見つけるべくページテーブルを参照する段階を更に含む請求項１１に記載の方法。
【請求項１９】
メモリ管理ルーチンの一部をメモリの第一のページにロードする段階と、
前記メモリの第二のページにページテーブルを作成する段階と、
前記第一のページと前記第二のページのカラーを複数のカラーのうちの一つに設定する段階と、
アプリケーションプログラムの一部を前記メモリの第三のページにロードする段階と、
前記第三のページのカラーを前記複数のカラーの別の一つに設定する段階と
を含む方法。
【請求項２０】
ダイナミックランダムアクセスメモリと、
前記メモリに接続され、ページングユニットを含むプロセッサと
を含むシステムであって、
前記ページングユニットは、
前記メモリの第一のページに格納された命令が供給する第一のアドレスを、前記メモリの第二のアドレスを含む第二のページのベースアドレスを含むデータ構造内のエントリーに基づいて、該第二のアドレスに変換する変換ロジックと、
前記第一のページが前記第一の命令を含む第一のプログラムと対応することを示す該第一のページのカラーを、前記第二のページが前記第一のプログラムと第二のプログラムのうち一方と対応することを示す、前記エントリーに更に含まれる該第二のページのカラーと比較する比較ロジックと
を含む
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理分野に関連し、より具体的にはメモリの管理と保護の分野に関する。
【背景技術】
【０００２】
メモリに関する攻撃は情報処理システムのセキュリティへの重大な脅威である。このような攻撃のいくつかは、たとえばウイルスもしくはワーム等の悪質なコードあるいは悪質なデータをコンピュータシステムのメモリに記憶させ、合法のプログラムを動作させつつバグ及び／又はバッファあふれを悪用して悪質なコードへと制御を伝達したり悪質なデータを活用したりする。この種の攻撃を防止する一方法においては、実行不可能を示すデータを格納するページを指定するべく用いられる「エグゼキュート・ディスエーブル」ビットをページテーブルエントリーに含め、悪質なコードをデータとして格納できないようにし、ひいては当該物理、線形、あるいは論理メモリ空間において悪質コードを実行できないようにする。しかし、メモリに関する攻撃技術はますます洗練され、これら攻撃を防止する更なる方法が望まれる。これには、既存のコードあるいは破損したメモリを実行するバッファあふれ、悪質なカーネルあるいはアプリケーションコンポーネント、ルートキット、スパイウェア、トロイの木馬、及びコンピュータウイルスからの保護が含まれる。また、たとえばポインターを暴走させるバグコード、線形アドレス空間内において他のプログラムあるいはサブプログラムのデータを破損させるアプリケーションプログラミングインターフェースの悪用からの保護が含まれる。
【図面の簡単な説明】
【０００３】
本発明を、添付の図面において限定としてでなく例として示す。
【０００４】
【図１】図１は、メモリページをプログラムに対応付けるページカラーリングロジックを含むプロセッサとしての本発明の実施形態を示す。
【０００５】
【図２】図２は、メモリページをプログラムに対応付けるページカラーリングの初期化方法としての本発明の実施形態を示す。
【０００６】
【図３】図３は、メモリページをプログラムに対応付けるページカラーリング方法としての本発明の実施形態を示す。
【発明を実施するための最良の形態】
【０００７】
以下の記載においては、メモリページをプログラムとその関連データに対応付けるページカラーリング技術の実施形態を記載する。以下の記載においては、本発明のより徹底した理解を可能にするべくプロセッサとシステムの構成等、数多くの特定的詳細について述べる。しかし、これら特定的詳細を伴わなくても本発明は実施され得ることは当業者には理解されよう。さらに、不必要に本発明を曖昧としないよう、いくつかの周知の構造、回路等は詳細に示さなかった。
【０００８】
本発明の実施形態においては、特定のページを特定のプログラムとデータに対応づけるべく用いられる属性をメモリページに割り当てる。属性の割り当ては、オペレーティングシステムのマッパーによるオペレーティングシステムの方針に基づいた方法、あるいは基本的入出力システム、仮想マシンモニター、あるいは本発明を具現化するシステム上のその他任意の管理体による方法等、いかなる方法により行ってもよい。
【０００９】
属性をページの「カラー」と呼称し、あるプログラムから別のプログラムのメモリ空間へのアクセス、あるいは単一プログラムにおけるある部分から同一プログラムにおけるその他の部分のメモリ空間へのアクセスをさえ十分に防止できる細かさの粒度においてメモリを論理分割するべく当該属性を用いてよい。ページベースの既存のメモリ管理データ構造、仮想化技術において用いられるページベースのメモリ管理を入れ子式としたデータ構造、及び既存のデータ構造に相関する並列アクセスデータ構造内において本発明の実施形態に係る技術を実施してよく、それにより、本発明の実施形態の利用においてカラー情報を取得するための追加的なメモリアクセスにより性能が劣化しないようにしてよい。その他の技術においては、対応するページテーブルエントリーをメモリからフェッチするときに、メモリから取得され対応する変換索引バッファ（「ＴＬＢ」）ハードウェアへとロードされる、ページカラー属性を含んだ並列ページテーブル構造を含めてよい。
【００１０】
図１は、プロセッサとして具現化する本発明、つまり、メモリページをプログラムと対応付けるページカラーリングロジックを含むプロセッサ１１０を示す。プロセッサ１１０をシステム１００において示し、システム１００はさらにメモリ１２０を含む。
【００１１】
プロセッサ１１０は、様々な異なる種類のプロセッサのいずれであってもよく、たとえばペンティアム（登録商標）プロセッサファミリー、アイテニアム（登録商標）プロセッサファミリー、あるいはインテル社のその他のプロセッサファミリーに属するプロセッサ、あるいは別の会社のその他いかなる汎用もしくはその他のプロセッサであってよい。図１においてはプロセッサとして具現化した本発明を示すが、代わりに本発明をその他いかなる種類のデータ処理コンポーネントあるいはデータ処理装置として具現化してもよい。図１の実施形態においては、プロセッサ１１０はインターフェース１１２とページングユニット１３０を含む。
【００１２】
インターフェース１１２は、ポイントツーポイントあるいはその他の接続形態等、任意の種類のバス上で直接的に、あるいはチップセットもしくはメモリコントローラ等、その他任意のコンポーネントを介して、プロセッサ１１０をメモリ１２０と通信可能にするバスユニット、あるいはその他任意のユニット、ポート、あるいはインターフェースであってよい。
【００１３】
ページングユニット１３０は、変換ロジック１３２、比較ロジック１３４、及びアクセスロジック１３６を含む。変換ロジックは以下に記載するアドレス変換を行う。比較ロジックは以下に記載する通りにページカラー比較を行う。アクセスロジック１３６は以下に記載する通りにページカラーに基づき特定のページへのアクセスを阻止あるいは許可する。
【００１４】
変換ロジック１３２は、ページベースの周知の任意のメモリ管理技術に従って、たとえば論理あるいは線形アドレスの物理アドレスへの変換等のアドレス変換を行う。アドレス変換を行うにあたり、変換ロジック１３２はプロセッサ１１０、メモリ１２０、システム１００における図１に不図示のその他任意の格納位置において、及び／又はこれらコンポーネント・位置において組み合わせて格納される一以上のデータ構造を参照する。データ構造は、ペンティアム（登録商標）プロセッサファミリーのアーキテクチャに準拠し、本発明の実施形態に従って改変したページディレクトリ及びページテーブル、及び／又はＴＬＢに格納されたテーブルを含んでよい。
【００１５】
一実施形態においては、変換ロジック１３２は、実行すべき命令により供給される線形アドレス、及び／又はプロセッサ１１０がフェッチすべきデータの線形アドレスを受信する。変換ロジック１３２は、線形アドレスの一部を、ページテーブルを含む階層構造テーブルへの指標として用いる。ページテーブルはエントリーを含み、各エントリーはメモリ１２０のページのベースアドレス用の領域を、たとえばペンティアム（登録商標）プロセッサファミリーの拡張メモリ６４技術に準拠してページテーブルエントリーにおけるビット３９乃至１２において含む。本発明の範囲においては任意のページサイズ（たとえば、４キロバイト）を用いてよい。したがって、プログラムがメモリ１２０にアクセスするべく用いる線形アドレスは、プロセッサ１１０がメモリ１２０にアクセスするべく用いる物理アドレスへと変換してよい。
【００１６】
比較ロジック１３４は、変換ロジック１３２が求めたページのページカラーを、フェッチすべき命令もしくはデータの線形アドレスを供給した命令を含むページのページカラーと比較する。周知の任意の方法に従って比較を行ってよい。ページカラーは、変換ロジック１３２がアドレス変換を行うべく用いたデータ構造におけるエントリーに格納された値により表されるページ属性である。たとえば、ページテーブルエントリーにおける８ビットの領域により、たとえばペンティアム（登録商標）プロセッサファミリーの拡張メモリ６４技術に準拠したページテーブルエントリーにおけるビット４７乃至４０によりページカラーを表してよい。したがって、グラフィックディスプレイにおける画素のカラー値の定義と同様に、２５６個のエントリーを有するカラーテーブルへの指標を与えるべく８ビットの領域を用いることにより、ページのカラー値は２５６個の値のいずれか一つとしてよい。
【００１７】
アクセスロジック１３６は、比較ロジック１３６の結果を用い、変換ロジック１３４が求めた物理ページにアクセスするための線形アドレスを用いる命令を阻止あるいは許可する。一実施形態においては、アクセスロジック１３６は、命令を含むページのページテーブルエントリーに対応付けられたページカラーが、変換ロジック１３４が求めたページのページテーブルエントリーに対応付けられたページカラーと一致するときアクセスを許可し、ページカラーが不一致であるときアクセスを阻止してよい。アクセスロジック１３６は、ページフォールト例外（ｐａｇｅ  ｆａｕｌｔ  ｅｘｃｅｐｔｉｏｎ）をトリガすることによりアクセスを阻止してよい。
【００１８】
したがって、オペレーティングシステムあるいはスーパーバイザープログラムは、メモリにロードしたあるプログラムの全ページに所定のページカラーを割り当て、メモリにロードした別のプログラムの全ページにそれとは異なるページカラーを割り当てる等して、あるプログラムが別のプログラムと同一の線形あるいは論理アドレス空間に存在したとしても各プログラムが他方のプログラムに対応付けられたページにアクセスしないようにしてよい。また、単一プログラムにおいて異なる部分にそれぞれ異なるページカラーを割り当てる等して、重要なプログラムコンポーネントあるいは重要なデータ構造がアクセスされるのを、特別な関数呼び出しを用いた場合、あるいはプログラムにおける特定のエントリーポイントを通過した場合に限ってよい。
【００１９】
アクセスロジック１３６は、更なる基準に基づいてアクセスの許可を判定してよい。たとえば、あるカラー値（たとえば、０ｘ００）により「いずれのカラー」も表さず、いずれのカラーによってもマークされないページへはその他のいかなるページからもアクセスしてよいとしてよい。また、ページテーブルエントリーにおいて、たとえばペンティアム（登録商標）プロセッサファミリーの拡張メモリ６４技術に準拠したページテーブルエントリーのビット４８等の領域もしくはビットを含め、それによりページが「隠れている」かを定義してよい。当該ビットを０に設定することにより、隠れたページのカラー以外のカラーに対応する任意のページが、カラー比較の結果と無関係に参照先である隠れたページから読み出すのを許可してよく、また１に設定することにより、カラー比較が不一致であったことに基づいてアクセスロジック１３６がアクセスの阻止を行えるように、あるいは反対に、アクセスによる読み出しを行えるようにしてよい。
【００２０】
アクセスロジック１３６は、命令制御フローに基づいてアクセスを許可するかを判定してもよい。たとえば、命令はプログラムへのエントリーが許可されたポイントを表すべく用いてよい。ペンティアム（登録商標）プロセッサファミリーのアーキテクチャに準拠したある実施形態においては、この目的において新たな命令（たとえば、「行き先アドレスベクトル（Ｄｉｒｅｃｔｅｄ  Ａｄｄｒｅｓｓ  Ｖｅｃｔｏｒ）」、つまり「ＤＡＶ」）を加えてよい。あるカラーのページからジャンプ、呼び出し、もしくはその他の制御フロー命令が別のカラーのページにおけるＤＡＶ命令に向けて実行されたとき、このアクセスを許可する。しかし、このジャンプもしくは呼び出しがＤＡＶ命令でなく別のカラーのページへと向けられた場合、アクセスを許可しない。したがって、ＤＡＶ命令を用いることにより、あるプログラムへは、ソフトウェア作成者が定義、制御し、安全なインターフェースとなることが期待されるポイントからだけエントリーできるようにしてよい。あるプログラムにおける、ランダムな部分、あるいはジャンプもしくは呼び出しが期待されていない部分、に対する別のカラーのプログラムからのジャンプもしくは呼び出しに対しては、例外であるとのフラグをプロセッサが付してよい。また、ＤＡＶ命令に変数パラメータを用いることにより、当該ＤＡＶにより識別されるエントリー・ポイントが実装されているプログラムにアクセスを試みているのが期待するカラーのプログラムであるかを判定するカラー比較を行ってもよい。最後に、ＤＡＶ命令の実行を実行可能な（たとえば、ペンティアム（登録商標）プロセッサファミリーのアーキテクチャに準拠したＸＤビットを用いることによって実行をディスエーブル（ｅＸｅｃｕｔｅ  Ｄｉｓａｂｌｅｄ）されていない）ページに限定することにより、見かけ上ＤＡＶ命令に見えるスプリアスなビットシーケンスを有するデータページをプロセッサが実行しないようにしてよい。
【００２１】
別の実施形態においては、ページを「トランジション」ページ指定してよい。トランジションページからの命令のフェッチは可能であるが、しかし、特定の周期的オフセットにおいてだけ可能であるとしてよい。「トランジションページビット」を定義し、それを任意のカラーのページに対して当該ページのテーブルエントリーにおいて対応付けてよい。このトランジションビットにより、対応付けられたカラーのページに向けての異なるカラーのページからのトランジションは、特定のワード配置に向けて行ってよいことがプロセッサに示される。したがって、いずれのカラーのページであっても、同一カラーのその他のページへのゲートとして機能するトランジションページとなることができる。たとえば、制御フローにおいて、トランジションページへの他のカラーのページからの移動は、トランジションページにおける特定ポイント、たとえば、６４バイトおきのポイントに対してだけ行ってよい。制御フローにおいてトランジションページへの移動が６４バイト整列で行われない場合にページフォールトをトリガしてよく、ジャンプもしくは呼び出しがトランジションページの６４バイト整列された命令へ向けられていればジャンプもしくは呼び出しを実行してよい。トランジションページのエントリー・ポイントの実際の整列状態は、整列要件を特定する保護されたプロセッサレジスタにより構成してよい。トランジションページへページフォールトをトリガせずにエントリーさせてよいのは特定のポイントに対してだけであることをプロセッサにより保証するので、これらのエントリー・ポイント間にコードを挿入して以下に記載する前のページカラーレジスタを比較対象とした適切なカラーテストを行い、条件に適合するとアクセス制御テストにより証明された場合に異なるカラーのページへとトランジションしてよい。同様に、並列に保護したスタックにおいては、あるエントリー・ポイントの後のコードに、スタックからの復帰アドレス等により状態を退避し、呼び出し先ページからの復帰をトランジションページを介してリダイレクトしてよい。この方法により、異なるカラーの関数からのレガシーコール（ｌｅｇａｃｙ  ｃａｌｌ）と復帰をトランジションページにより橋渡して、正しい制御フローを認証しつつページフォールトを回避してよい。
【００２２】
特別なカラーリング技術を実装するべくアクセスロジック１３６を用いてもよい。一実施形態においては、別のカラーのプログラムの任意の部分へのジャンプもしくは呼び出しを許可されたオペレーティングシステムコンポーネントに対して特別なページカラー（たとえば、０ｘＦＦ）を割り当ててよい。アクセスロジック１３６は、当該カラーのページからのジャンプもしくは呼び出し命令はいつも許可してよい。このカラーをオペレーティングシステムスケジューラと割り込み処理ルーチンに使用させて、これらが中断されたプログラムの実行をページフォールトを生じさせずに中断位置から再開できるようにしてよい。このカラーのページからは、別のカラーのページへの書き込みアクセスあるいは別のカラーの隠れたページへの読み出しアクセスをしないようにしてよい。この特別なぺージカラーのページを実行するにあたり、プロセッサに以下に記載する前のページカラーレジスタの変更をさせず、この特別なページカラーのページに、中断されたプログラムへと復帰する前に前のページカラーレジスタを期待される値へと回復する能力を持たせてよい。
【００２３】
別の実施形態においては、他のカラーのページへの完全な読み出しアクセス・書き込みアクセスを有するスーパーバイザーページに対して特別なカラーを用いてよい。オペレーティングシステムコンポーネントにこれらの特別なカラーを用い、その他のプログラムを検証させ、必要であればその内容を修正させてよい。他のカラーを、限られたプロセッサレジスタ、限られたプロセッサ命令、あるいはアドバンスド・プログラマブル割り込みコントローラ（ａｄｖａｎｃｅｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｉｎｔｅｒｒｕｐｔ  ｃｏｎｔｒｏｌｌｅｒ；「ＡＰＩＣ」）に対応したメモリ位置へのアクセスに対応付けてよい。特権的カラーでカラーリングされたプログラムだけが、特権的カラーに対応付けられた限られたプロセッサ機能へとアクセスすることができる。プロセッサにおいて、この特別なカラーを設定するコンフィギュレーションレジスタを、たとえばオペレーティングシステム起動シーケンスの一部として設けてよい。
【００２４】
別の実施形態においては、上記したようにいずれのカラーによってもマークされないページは、他のカラーのページあるいはいずれのカラーによってもマークされない他のページから保護しなくてよい。しかし、カラーを割り当てたページは、いずれのカラーによってもマークされないページからの書き込み、ジャンプ、あるいは呼び出しアクセスが不可能であってよい。
【００２５】
さらに、アクセスロジック１３６は、ページカラー不一致あるいは違反によりページフォールトが生じたかを報告してもよい。たとえば、ページフォールトエラーコードのビット（たとえば、ペンティアム（登録商標）プロセッサファミリーのアーキテクチャに準拠したスタックにプッシュ（ｐｕｓｈ）するページフォールトエラーコードのビット５）をページカラー違反ビットに指定して、１に設定することによりページフォールトがカラー不一致によりトリガされたことを示してよい。このビットは、他のフラグの文脈で解釈してよい。たとえば、ページカラー違反が命令フェッチにより生じた場合、エラーコードにおける命令フェッチビットを１に設定してよい。ページカラー違反が読み出しもしくは書き込みにより生じた場合、読み出し／書き込みビットを、読み出しの場合は０に、書き込みの場合は１に設定してよい。さらに、フォールトを生じた線形アドレスを、たとえば、ペンティアム（登録商標）プロセッサファミリーのアーキテクチャに準拠したプロセッサのＣＲ２制御レジスタに退避してよい。
【００２６】
プロセッサ１１０は、あるプログラムから別のプログラムへの、上記したようなＤＡＶ命令を用いたトランジションをサポートする読み出し専用レジスタ１４０あるいはその他の記憶位置を含んでよい。一実施形態においては、このレジスタは、「前のページカラー（ｐｒｅｖｉｏｕｓ  ｐａｇｅ  ｃｏｌｏｒ）」レジスタ、つまり「ＰＰＣ」レジスタと呼称してよい。アクセスロジック１３６は、プロセッサ１１０が現在実行されている命令とは異なるカラーのページから命令のフェッチを開始したとき、ページカラーが不一致であると検出してよい。アクセスロジック１３６は、上記のＤＡＶ命令プロトコルに従ってこのフェッチを許可しページカラーの変更を許可してよいが、前のページカラーをＰＰＣレジスタ１４０に退避してよい。したがって、新たなページからの命令がＰＰＣレジスタ１４０に前のページカラーを問い合わせて判断することにより、異なるカラーのどのプログラムが現在実行されているプログラムにおいてＤＡＶにより定義した特定のエントリー・ポイントに対してアクセスすることが許可されているかを判別し、それによりプログラムは自身のサービスへのアクセスを制御してよい。特別なカラーのページによるトランジションはＰＰＣレジスタ１４０に記憶しなくてよく、したがってオペレーティングシステムスケジューラが発動したトランジションはページカラーのトランジションと記録する必要はなく、むしろ割り込み及び復帰と記録してよい。
【００２７】
図１において、メモリ２０は、スタティックあるいはダイナミックランダムアクセスメモリ、半導体系の読み出し専用メモリあるいはフラッシュメモリ、磁気あるいは光ディスクメモリ、プロセッサ１２０が読み出し可能なその他いかなる種類の媒体、あるいはこれら媒体をどのように組み合わせたものであってもよい。
【００２８】
図２は本発明の方法としての実施形態を示し、この方法２００は、ページカラーリングを初期化してメモリページをプログラムに対応付ける方法である。ブロック２１０において、オペレーティングシステムローダがメモリへとメモリ割り当てルーチンをロードし、メモリにページテーブル構造を作成して全てを第一のカラーとし、メモリ割り当てルーチンは以降にロードされたルーチンとプログラムにそれぞれページカラーを設定しつつ、メモリマネジャーとページテーブルとが、これらその他のルーチン及びプログラムから、たとえこれらがメモリマネジャーと同じ特権レベルで動作していたとしても、保護されるようにする。ブロック２２０においては、スケジューラをロードして０ｘＦＦにカラーリングし、スケジューラからのその他の任意のプログラム、スケジュールスレッド、及びマルチタスクへのジャンプあるいは呼び出しを許可する。さらに、オペレーティングシステムにより、この特別なカラーのページがＤＡＶ命令なしでレガシープログラムへのインターフェースをフックするよう構成してレガシープログラムを保護し、レガシープログラムとサブプログラムとの間の制御フローが正しくなるよう保証してよい。これらの追加的ページは、レガシープログラムに対する便益として、ＰＰＣレジスタ１４０を用いることにより必要なエントリー・ポイントアクセス制御を行ってよい。
【００２９】
ブロック２３０においては、オペレーティングシステムの可変のコンポーネントをメモリにロードし、異なるページカラーをそれぞれに割り当てる。たとえば、ドライバーをディスクからロードし、認証者である製造者の署名によりインテグリティを検査し、メモリにロードしたらそれらにページカラーを割り当ててその他のカーネルコンポーネントから保護する。その後、ドライバーは自身と同じカラーのメモリを割り当てる。
【００３０】
ブロック２４０においては、アプリケーションプログラムをメモリにロードし、それぞれに異なるページカラーを割り当てる。ページはカラーリングされているので、オペレーティングシステムの不変のアプリケーションプログラミングインターフェースにより、プログラムはそれぞれ署名と認証イメージを与えられたその他のプログラムのカラーを問い合わせることができる。データ構造をその他のカラーのプログラムと共有して共通に読み出し可能としてよいが、但しページが隠れているとのマークを付されていない場合だけである。この方法で、一方向先入れ先出しバッファをデータのライターが単一、リーダーが複数となるよう構成してよい。
【００３１】
あるカラーのページの所有者が、そのページカラーのうち一つを、元のプログラムが当該ページへの書き込みを終了したら別のプログラムのカラーに変更するようオペレーティングシステムに要求することもできる。このように、メモリマネジャー等のオペレーティングシステム不変部分に合図を出すことによりページの所有権を変更してよい。この要求は、所有権が変更される（カラーが変更される）ページが実行不可能とされて（ＸＤビットが設定されて）実行不可能なデータだけを含むようになるとの条件で、オペレーティングシステムに支障なく容認されるようにしてよく、これによりカラー変更の後、別のカラーのプログラムがその内容を実行することができなくなる。
【００３２】
ページには同時に複数のカラーを割り当ててよく、あるいは各ページを異なるカラーを割り当てられた領域へと分割してよい。これは、複数のカラーと、ページ内においてそれらカラーが開始して終了する範囲に対応するオフセットをページテーブルエントリーにおいて特定することを可能にすることにより行ってよい。たとえば、ページテーブルエントリーにおいて、物理ページに対する二つのカラーと、ページの開始点から見て第一のカラーが終了し第二のカラーの開始する部分を特定するオフセットを特定してよい。ソフトウェアはこの特性を利用し、呼び出し元のスタックフレームをあるカラーにカラーリングし、呼び出し先のスタックフレームを別のカラーにカラーリングすることにより呼び出し元のスタック変数を呼び出し先からアクセス不可能として、呼び出し元の呼び出しスタックを呼び出し先から保護してよい。このようにして、呼び出し元と呼び出し先の両方のスタックフレームが単一ページ内に含まれている場合であっても、呼び出し元のスタックフレームは呼び出し先から破損されないようになる。同様に、同一ページに存在する隣接プログラムについて、各ページ当たり複数のカラーをそれぞれ対応する範囲において用いることにより、カラーリングに差異を設けてよい。
【００３３】
図３は本発明の方法としての実施形態を示し、この方法３００は、メモリページをプログラムと対応付けるページカラーリング方法である。ブロック３１０において、ある命令がメモリのページへのアクセスを試みる。ブロック３１２において、ページをＴＬＢにロードし、ページのカラーとパーミッションを記録する。ブロック３２０において、ページがカラーリングされているか（たとえば、カラー値が０ｘ００でないか）を判定する。カラーリングされていなければ、ブロック３９０においてページへのアクセスを許可する。
【００３４】
ブロック３２０においてページがカラーリングされていれば、ブロック３２２において当該ページは当該命令を含んだページであるかを判定する。もしそうであれば、ブロック３９０において、ページへのアクセスを許可する。もしそうでなければ、ブロック３２４においてアクセスは書き込みであるかを判定する。
【００３５】
ブロック３２４においてアクセスが書き込みであれば、ブロック３５０において、当該ページは当該アクセス命令を含むページと同一カラーであるかを判定する。同一でなければ、ブロック３５２においてページフォールトをトリガしてアクセスを阻止する。同一であれば、ブロック３９０においてページへのアクセスを許可する。
【００３６】
ブロック３２４においてアクセスが書き込みでなければ、ブロック３３０においてページアクセスが命令のフェッチによるものかを判定する。命令フェッチによるものでなければ、ブロック３３２においてアクセスは読み出しであるかを判定する。アクセスが読み出しであれば、ブロック３３４においてページの隠しビットが設定されているかを判定する。隠しビットが設定されていなければ、ブロック３９０においてページへのアクセスを許可する。隠しビットが設定されていれば、ブロック３５０において当該ページは当該アクセス命令を含むページと同一カラーであるかを判定する。同一でなければ、ブロック３５２においてページフォールトをトリガすることによりアクセスを阻止する。同一であれば、ブロック３９０において、ページへのアクセスを許可する。
【００３７】
ブロック３３０に戻り、ページアクセスが命令フェッチによるものであれば、ブロック３４０において、フェッチ命令を含むページのカラーを確認して、別のカラーのページに対するジャンプもしくは呼び出しが許可されたものであるか（たとえば、当該カラーが０ｘＦＦであるか）を判定する。許可されたものであれば、ブロック３９０においてページへのアクセスを許可する。許可されたものでなければ、ブロック３４２においてフェッチ先命令はＤＡＶ命令であるか、あるいは当該アクセスがトランジションページにおいて許可されたエントリー・ポイントへのアクセスであるかを判定する。そうであれば、ブロック３４４において、フェッチ元命令のページカラーをＰＰＣレジスタに退避し、ブロック３９０においてぺージへのアクセスを許可する。そうでなければ、ブロック３５０において、当該ページは、アクセス命令を含むページと同一カラーであるかを判定する。同一でなければ、ブロック３５２において、ページフォールトをトリガしてアクセスを阻止する。同一であれば、ブロック３９０においてページへのアクセスを許可する。
【００３８】
本発明の範囲において、方法２００と３００は、順序を変更して実施してよく、図示のブロックを同時に実施してよく、図示のブロックを省略して実施してよく、更なるブロックを追加して実施してよく、あるいはブロックの順序変更、同時実施、省略、追加を組み合わせて実施してよい。
【００３９】
本発明のある実施形態に従って設計するプロセッサ１１０、その他任意のプロセッサあるいはコンポーネントは、開発、シミュレーション、製造へと多様な段階を踏んで設計してよい。設計データは、設計を数多くの方法で表現してよい。まず、シミュレーションに利便的であるべく、ハードウェアをハードウェア記述言語あるいは別の機能的記述言語を用いて表現してよい。さらに又はあるいは、ロジックゲート及び／又はトランジスタゲートを有する回路レベルモデルを設計プロセスのいくつかの段階で作成してよい。さらに、大抵の設計は、ある段階において、多様なデバイスの物理的配置を表すデータによりモデル化できるレベルに到達する。従来の半導体製造技術を用いる場合、デバイス配置モデルを表すデータは、集積回路の製造に用いられるマスク用の複数のマスク層における、多様な特性についての有無を特定したデータであってよい。
【００４０】
設計をどのように表現した場合でも、データを任意の形態の機械読み取り可能媒体に保存してよい。当該情報を伝達するべく変調あるいは生成された光波あるいは電波、メモリ、ディスク等の磁気あるいは光記憶媒体が、機械読み取り可能媒体であってよい。設計、あるいは本発明の実施形態において用いるその他情報、たとえばエラー復帰ルーチンの命令を、これら媒体のいずれによって「搬送」あるいは「表現」してもよい。当該情報を表現あるいは搬送する搬送電波を伝送して電気信号をコピー、バッファリング、あるいは再伝送すると、新たなコピーが作成される。したがって、通信プロバイダーあるいはネットワークプロバイダーの業務は、搬送波、本発明を実施する技術等の物品のコピーの作成であってよい。
【００４１】
メモリページをプログラムに対応付けるページカラーリング技術を開示した。特定の実施形態を記載し添付図面に示したが、これら実施形態は広範な発明に対する限定でなく例示であり、当業者は本開示を検討することによりその他多様な変更に想到するであろうので、本発明は図示し記載した特定の構成と配置に限定されないことは理解されよう。本件のような進歩が早く今後の進歩を予測し難い技術分野においては、開示した実施形態は、本開示あるいは添付の請求項の原理から逸脱することなく技術進歩を取り込むことで容易に配置と詳細の変更をなし得るであろう。
【図１】
2009516310.tif 000003
【図２】
2009516310.tif 000004
【図３】
2009516310.tif 000005
【国際調査報告】
2009516310.tif 000006
2009516310.tif 000007
2009516310.tif 000008