JP6518015B2 - 仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換 - Google Patents

仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換 Download PDF

Info

Publication number
JP6518015B2
JP6518015B2 JP2018532157A JP2018532157A JP6518015B2 JP 6518015 B2 JP6518015 B2 JP 6518015B2 JP 2018532157 A JP2018532157 A JP 2018532157A JP 2018532157 A JP2018532157 A JP 2018532157A JP 6518015 B2 JP6518015 B2 JP 6518015B2
Authority
JP
Japan
Prior art keywords
memory
task
page
access
key
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.)
Active
Application number
JP2018532157A
Other languages
English (en)
Other versions
JP2018538630A5 (ja
JP2018538630A (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 JP2018538630A publication Critical patent/JP2018538630A/ja
Publication of JP2018538630A5 publication Critical patent/JP2018538630A5/ja
Application granted granted Critical
Publication of JP6518015B2 publication Critical patent/JP6518015B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Description

本発明は、保護されたメモリアクセスを実装するための技法に関し、具体的には、そのプロセッサおよびオペレーティングシステムが記憶域保護キーをサポートしないシステムにおける記憶域保護キーの実装に関する。
コンピュータシステムの重要な制限は、所与のコンパイルされたプログラムが、それがコンパイルされたオペレーティングシステムおよび機械命令組の下でしか起動できないことである。これは、既知のレジスタの組と、既知のオペレーティングシステムへの呼び出しを行うことによって入出力動作を実施する能力とを用いて、コンパイルされたプログラムが特定の命令組(すなわち、システムが認識して実行することができる命令)に書き込まれるので、確かである。例えば、図1に図示されるように、コンパイルされたアプリケーション(10)は、特定のオペレーティングシステム(20)と、ハードウェアプラットフォーム(30)とを含む特定のプラットフォーム上で実行するように構成される。そのようなオペレーティングシステム(20)およびハードウェアプラットフォーム(30)は、様々な程度の複雑性のものであり得る。しかし、異なるハードウェア命令の組を実装する環境内で、または異なる関数呼び出しを伴うオペレーティングシステムの下で、アプリケーションを起動することを望む場合、典型的には、アプリケーションプログラムは、再コンパイルされなければならない。この制約は、異種環境内で動作するコンピュータプログラムの能力を限定する。
1つのプラットフォームから別のプラットフォームにコンピュータプログラムを拡張するために、それが異なるハードウェアプラットフォーム上で自然に起動するように、クロスコンパイラがプログラムを再コンパイルするために使用され得る。しかしながら、多くの状況で、ソースコードを再コンパイルすることは望ましくない。再コンパイルすることは、エラー、システム性能の変化、またはシステム挙動の変化をもたらし得る。これらの問題を解決することは、元のソースコードの変更を要求し得、それは、コードベースを断片化し、管理複雑性を増加させる。加えて、特定のアプリケーションのためのソースコードは、常に利用可能であるわけではないこともあり、異なるプラットフォーム上で所与のプログラムを動作させる能力にさらなる制限を加える。
この問題に対処するための1つのアプローチは、標的プラットフォーム上で起動するが、異なる(例えば、レガシー)プラットフォームの挙動をエミュレートするエミュレート型システムを使用することである。図2は、そのようなエミュレート型システムを描写する。エミュレート型システム(90)は、典型的には、標的ハードウェアプラットフォーム(80)と、好適なデバイスドライバ(70)と、ネイティブオペレーティングシステム(60)とを含む。レガシーシステム環境をシミュレーションするために、エミュレータ(50)が提供され、エミュレータは、1つのアーキテクチャのための命令を標的アーキテクチャのための対応する命令の組に変換する命令ハンドリングルーチンを含む。実行中、エミュレータは、ネイティブオペレーティングシステム(60)関数を呼び出し、標的ハードウェア(80)上で起動し、レガシーハードウェアシステムの挙動をシミュレーションする。レガシープラットフォームのゲストオペレーティングシステム(40)が、エミュレート型システムの中にインストールされる場合、コンパイルされたアプリケーションプログラム(10)が、実際には異なるプラットフォーム上で起動していることを意識せず、エミュレートされた環境内で実行することができる。レガシーメインフレームコンピュータの例は、OS/360TM、System/370TM、System/390TMまたはESA/390TM、およびsystem/Zを起動するIBMメインフレーム(International Business Machines Corp. NY,US)を含む。
種々のハードウェアプラットフォームのためのエミュレータが公知である。例えば、Herculesは、LINUX(登録商標)(Linux Foundation,CA,US)、WINDOWS(登録商標)(Microsoft Corp. WA,US)、SOLARIS(登録商標)(Oracle America,Inc.,CA,US)、またはOS X(登録商標)(Apple Inc.,CA,US)オペレーティングシステムを起動するX86マシンが、メインフレームSystem/370、ESA/390、およびz/Architectureハードウェアを模倣することを可能にする、エミュレータである。Hercules等のハードウェアエミュレータを使用して、MVS(登録商標)(International Business Machines Corp. NY,US)、OS/360TM等のメインフレームオペレーティングシステムがインストールされ得、したがって、異なるプラットフォーム上でメインフレーム環境を提供する。したがって、レガシーオペレーティングシステム下のレガシープラットフォーム上で起動するようにコンパイルされた実行可能ロードモジュールを含むアプリケーションが、ハードウェアエミュレータ上にインストールされたそのオペレーティングシステムのインスタンスにおいて起動し得る。
この従来のエミュレーションアプローチは、ソフトウェアを実行するために要求される変換の複数の層に起因して、低下した性能に悩まされ得る。具体的には、そのようなエミュレーションシステムは、典型的には、エミュレーションにおいて起動するゲストプログラムによってアクセスされる仮想ゲストアドレスを決定するだけではなく、実アドレスおよび絶対システムアドレスをエミュレートするように、それぞれ、動的アドレス変換およびプレフィックス変換もエミュレートしなければならない。加えて、アプリケーションを起動するために、オペレーティングシステムのコピーが、インストールされ、エミュレート型マシン上での使用のために確かめられなければならない。
アドレス空間は、コンピュータ記憶域の中のバイト場所に対応する整数の連続範囲である。実アドレスまたは物理アドレスは、物理メモリの中の場所のアドレスを指す。絶対アドレスは、システムメモリの中の場所のアドレスを指す物理アドレスである。システムは、実アドレスを絶対アドレスに変換するプレフィックス変換を採用する。仮想アドレスは、一方で、アドレス変換機構を用いて、物理アドレスに変換される。動的アドレス変換(DAT)は、メモリアドレス指定の分野で公知であるような1つの機構である。
現在の64ビットプロセッサは、(16EiBの理論的最大値を伴う)256TiB仮想アドレス空間をサポートする。ページングは、物理RAMの全量が物理的にインストールされることを実際に要求することなく、各プロセスが全仮想アドレス空間を調べることを可能にする技法である。実際に、多くの現在の実装は、1TiBの物理RAM限界と、物理RAMの4PiBの理論的限界とを有する。物理RAMの低減された量に適応することに加えて、ページングは、ページレベル保護の利益を導入する。そのようなシステムは、ユーザレベルプロセスが、それら自身のアドレス空間の中にページングされるデータのみを調べて修正することができるので、ハードウェア分離を提供することができる。システムページは、ユーザプロセスから保護されることもできる。64ビットx86アーキテクチャの場合、ページレベル保護が、ここでは、メモリ保護機構としてセグメンテーションに優先する。そのようなシステムでは、メモリ管理ユニットまたはMMUは、仮想アドレスを物理アドレスに変換するユニットである。MMUは、典型的には、2つのテーブル、すなわち、ページングディレクトリおよびページングテーブルの使用を通して、このメモリマッピング変換を行う。
Intel実装の一例では、両方のテーブルは、1,024個の8バイト項目を備えている。ページディレクトリでは、各項目は、ページテーブルを指し示す。ページテーブルでは、各項目は、物理アドレスを指し示し、物理アドレスは、次いで、ディレクトリ内のオフセットおよびテーブル内のオフセットを計算することによって見出される仮想アドレスにマップされる。これは、テーブルシステム全体が線形4GB仮想メモリマップを表すので、行われることができる。
図3Aは、ページディレクトリ項目の例を描写する。ビット12−63の中で見出されるページテーブル4KBアラインされたアドレスは、その点で4メガバイトを管理するページテーブルの物理アドレスを表す。低次ビットがアクセスビットの値を含み、アドレスの一部ではないので、このアドレスが4Kアラインされていることは、重要である。ビット9−11は、システムプログラマによる使用のために利用可能である。「Global」のGで標識されたビット8は、無視される。「Page Size」の「S」で標識されたビット7は、その特定の項目のためのページサイズを記憶する。このビットが設定される場合、ページは、サイズが4MBである。そうでなければ、それらは、サイズが4KBである。「0」で表されるビット6は、将来の使用のために予備にされ、値「0」に設定される。「Accessed」のAで標識されたビット5は、ページが読み取られたか、または書き込まれたかを示すために、使用される。このビットは、ページがアクセスされる度にMMUによって設定される。「Disabled」のDで標識されたビット4は、キャッシュ無効化ビットである。このビットが設定される場合、ページは、キャッシュされないであろう。「Write−Through」の「W」で標識されたビット3は、ライトスルーキャッシングが有効にされているかどうかを示す。「User/Supervisor」のUで標識されたビット2は、特権レベルに基づいてページへのアクセスを制御する。このビットが設定されている場合、ページは、全てのプロセスによってアクセスされ得る。このビットが設定されていない場合、ページは、監視プロセスによってのみアクセスされ得る。ページディレクトリ項目の場合、ユーザビットは、ページディレクトリ項目によって参照される全てのページへのアクセスを制御する。したがって、ページをユーザプロセスにアクセス可能にすることが所望される場合、ユーザビットが、関連ページディレクトリ項目の中ならびにページテーブル項目の中で設定されなければならない。「Read/Write」のRで標識されたビット1は、読み込み/書き込み許可フラグである。このビットが設定される場合、ページは、読み込み/書き込みページである。そうではなく、ビットが設定されていないとき、ページは、読み取り専用ページである。CR0の中のWPビットが、これらがユーザプロセスのみに適用されることを決定する場合、デフォルト設定でカーネル書き込みアクセス、またはRビット設定がユーザおよびカーネルプロセスの両方によるアクセスを制御するかどうかを可能にする。「Present」のPで標識されたビット0は、設定された場合、ページが物理メモリの中に常駐すること、または、設定されていない場合、物理メモリの中に存在しないことを示す。ビットが空である場合、ページフォールトが、参照試行時、生じるであろう。
図3Bは、ページテーブル項目の例を描写する。ページテーブル項目は、以下の例外を伴って、ページディレクトリ項目に非常に類似する。すなわち、「Global」のGで標識されたビット8は、アドレスがキャッシュされ、CR3がリセットされた場合、バッファを別にして参照がアドレスを更新することを防止する。アドレスは、CR3設定にかかわらず有効なままであろう。ページディレクトリ項目の場合に確保されたビット6ではなく、ページテーブル項目のビット7が予備にされる。「Dirty」のDで標識されたビット6は、ページが書き込まれていることを示す。ページテーブル項目の中の「Cache Disabled」のCで標識されたビット5は、ページディレクトリの中のDで標識されたビット4と同じ機能を果たす。
レガシーメインフレーム環境では、各プロセスは、仮想アドレス空間を割り当てられる。所与のプロセスは、複数のタスクを開始し得、共通プロセス下で動作するタスクは、同じ仮想アドレス空間内で動作する。
メインフレームCPUは、典型的には、ブロック0の中、または0−4095バイトに対応する記憶場所の中に、それらの状態情報の一部を記憶する。複数のプロセッサが同じ物理メモリをより容易に共有することを可能にするために、そのようなシステムは、多くの場合、0−4095の範囲内の実アドレスが各CPUのために実メモリの中の異なる場所に対応することを可能にするプレフィックス変換として公知の技法を採用するが、残りの実アドレスは、同一であろう。したがって、プレフィックス変換は、プロセッサの実記憶域の中の場所を表す実アドレスを、メインシステム記憶域の中で割り当てられる物理アドレスである絶対アドレスに変換する。これは、各プロセッサが、現在のプログラムステータスワード、古いプログラムステータスワード、および他の状態情報を記憶するためのそれ自身のプレフィックス記憶エリアを有することを可能にする。プレフィックスエリアのサイズは、変動し得る。例えば、いくつかの64ビットシステムは、プレフィックスエリアを場所0−8191に対応するアドレスに割り当てる。
MMUの重要な機能は、プロセスまたはタスクが、そのプロセスまたはタスクに配分されていないメモリにアクセスすることを防止することである。配分されていないメモリにアクセスする試行は、ハードウェア故障をもたらし、それは、オペレーティングシステムによって阻止され、多くの場合、セグメンテーション違反と呼ばれ、概して、プロセスの終了を引き起こす。メモリの中へのデータの不正記憶に対するさらなる保護として、メインフレームシステムは、メモリへのアクセスを制御する記憶域キーの概念を実装する。メモリまたはページフレームの各連続4Kブロックは、関連付けられる記憶域キーを有する。記憶域キーは、システムメモリ内の確保された空間の中のテーブルの中に記憶される。要求された記憶域アクセスキーを有するタスク、または0の記憶域アクセスキーを有するタスクのみ、ブロックへの完全なタスクを与えられる。
記憶域キーは、典型的には、メモリの各4KBブロックに関連付けられる制御バイトを有するテーブルの中に記憶される。System/360TM、System/390TM、またはSystem/Zアーキテクチャ等のメインフレームシステムでは、記憶域キーは、物理メモリアドレスに関連付けられる。より具体的には、メモリの各物理ページに対して、記憶域キーを記憶する制御バイトがあり、メモリの中にある4Kバイトブロックと同じくらいの数の記憶域キーがある。メインフレームシステムでは、制御バイトは、典型的には、4ビット記憶域キーと、保護ビットと、それぞれ、変更および参照を記録するために使用される2ビットとを含む、1バイトフィールドの7ビットを含む。図5Aは、4ビットキー510がビット0−3の中に記憶され、保護ビット520がビット4の中に記憶され、変更ビット530がビット5の中に記憶され、参照ビット540がビット6の中に記憶された制御バイト(500)の7ビットの例を描写する。所与の制御バイトのフェッチビットが0に設定される場合、書き込みアクセスのみが保護され、任意の保護キーとともに動作するタスクが、ブロックを読み取ることを可能にされる。フェッチビットが1に設定される場合、保護は、ブロックへの読み取り(フェッチ)および書き込み(記憶)アクセスの両方に適用される。
4ビットの中の保護キーを符号化するシステムでは、0から15まで付番された16個の保護キーがある。所与のタスクに関連付けられる保護キーは、記憶域アクセスキーとも称されるプログラムステータスワード(PSW)の中に記憶される。動作時、システムは、アクセスが許可されているかどうかを決定するように、記憶域キーに対して記憶域アクセスキーをチェックし、メモリのブロックに対して制御バイトの中に記憶されたアクセス制御ビットをチェックする。記憶域キーがアクセス制御ビットに合致しない場合、記憶域保護論理が戻り、タスクをインタラプトし、保護例外を開始するであろう。記憶域キー値0は、特別な場合である。タスクが0のアクセスキー値とともに動作するとき、そのアドレスのためのシステムメモリ内の記憶域キーの値がどのようであっても、アクセスが許可される。典型的には、オペレーティングシステムによる使用のために確保されるメモリエリアのみが、0の記憶域キー値を割り当てられる。
そのようなシステムの制御バイトの中の記憶域キーは、オペレーティングシステムの制御下にあり、オペレーティングシステムは、データのページが物理メモリの中へコピーされるとき、またはプロセスもしくはタスクによってアクセスまたは修正されるとき、各項目の中のビットを記憶して修正する。多くのユーザタスクは、キー番号8のみにアクセスするが、所与のタスクに関連付けられる複数の記憶域キーの使用がサポートされ、例えば、典型的には、キー番号9を使用する、CICSの下で行われる。殆どのシステムプロセスは、キー0の下で動作する。
記憶域キーは、階層的ではないリングシステムと異なり、0の記憶域キーは、常にアクセスを許可する「マスタキー」であり、0ではない記憶域キーは、固有であり、それらの値は、固有であること以外の具体的な意味を有していない。好ましくは、記憶域キーを使用するシステムでは、各メモリアドレスは、単一のキーを割り当てられる。
メインフレーム動作をエミュレートするシステムは、典型的には、メインフレームシステムのものと異なる命令組を有する標的プロセッサ上でそのようにする。そのような標的プロセッサは、記憶域へのキー制御型アクセスのためのハードウェアサポートを提供しない。したがって、x86アーキテクチャ上のメインフレーム動作をエミュレートするシステムでは、記憶域キーの動作をエミュレートすることが望ましいであろう。同時に、Herculesエミュレータ等の従来技術のエミュレーションシステムは、実アドレスへの仮想アドレスのDATのエミュレーションを実装し、その後、物理アドレスの管理のエミュレーションを実装した。エミュレートされた動的アドレス変換の実装は、記憶域へのキー制御型アクセスのエミュレーションに複雑性を導入し、複数のエミュレートされたテーブルルックアップを行う必要性に起因して、システム性能を限定する。
第1のアーキテクチャ上で起動するようにコンパイルされたプログラムが、異なる標的アーキテクチャ上で起動することを可能にされるために、別の代替は、オブジェクトコードを逆コンパイルし、次いで、標的アーキテクチャ上で起動するようにそれを再コンパイルする、プログラムを変換することである。種々の逆コンパイラが公知であるが、概して、再コンパイルされたプログラムが元のプログラムの挙動を正確に再現するために要求される確実性で、逆コンパイラがコンピュータ命令を識別し、データから分離することが可能ではないので、1つのプラットフォームからのオブジェクトコードの逆コンパイルおよび再コンパイルは困難である。しかしながら、そのコードおよびデータが正しく識別されることができるプログラム(既知のコンパイラによって出力される、または既知のフラグもしくは設定の組を伴って最初にコンパイルされるプログラム等)の組に、逆コンパイルおよび変換が適用される場合、第1のアーキテクチャ上で起動するようにコンパイルされるコードの逆コンパイル、および標的プラットフォームのための実行可能コードを作成するための逆コンパイルされたコードの再コンパイルは、エミュレーションの代替を提示する。一例では、入力として、IBMメインフレーム上で起動するようにコンパイルされる再配置可能コボルロードモジュールを受信するロードモジュールコンパイラは、入力として受信され、x86マシン上で起動するように適合される実行可能オブジェクトプログラムは、出力として生成される。
エミュレートされる動的アドレス変換の追加オーバーヘッドを伴わずに、記憶域へのキー制御型アクセスのためのサポートを提供するエミュレート型システムが説明される。加えて、インタラプトまたはタスク間のコンテキスト切り替えに応答して、プレフィックスエリアを保存および復元することに関連付けられるオーバーヘッドを伴わずに、複数のプロセッサに関連付けられるであろう複数のタスクをエミュレート型システムが実行することが有益であろう。メインフレーム上で実行可能であるロードモジュールを代替的プラットフォームのための実行可能コードに変換するロードモジュールコンパイラを採用するシステムも説明され、システムは、ロードモジュールコンパイラによって生成される実行可能コードを、記憶域へのキー制御型アクセスを採用するメインフレームシステムまたはエミュレート型システムと相互運用可能にするために、記憶域へのキー制御型アクセスのためのサポートを提供する。
一実施形態では、本発明は、保護キーメモリアクセス制御をサポートするように適合されていないプロセッサを有するコンピューティングシステムを提供し、プロセッサは、メモリ管理ユニット(MMU)を含み、仮想メモリを管理するオペレーティングシステムを実行し、プロセッサは、ユーザプロセスおよびタスクを実行するように適合される。システムは、各プロセスに、仮想アドレスメモリの連続範囲および連続アドレス空間内の各4Kブロックへの記憶域キーを割り当てることと、プロセスにおいて記憶域アクセスキーを各タスクに割り当てることと、その割り当てられたアクセスキーを伴うタスクに仮想アドレスマッピングを割り当てることによって、特定のアクセスキーを使用してそのタスクの実行を開始することと、仮想アドレスマッピングを割り当てられた記憶域キーのためのタスクに割り当てることとによって、保護キーメモリアクセス制御を実装する方法のために使用され得る。該タスクによる後続のメモリアクセスに応答して、後続のメモリアクセスが該タスクによって以前に使用されたアクセスキーと異なるアクセスキーを使用する場合、該タスクが異なるアクセスキーを使用する権限を与えられているかどうかを決定し、第2のタスクが権限を与えられている場合、後続の仮想アドレスマッピングをタスクおよびキーに割り当てる。タスクによる記憶域を配分するコマンドまたは解放するコマンドに応答して、記憶域キーデータと、各制御バイトに関連付けられるページが有効であるというインジケータとを設定することを含む制御バイトを設定する。アクセスキーを使用する該タスクのコンピュータ命令の実行時、方法は、タスクに関連付けられるアドレス空間内で仮想アドレスを生成することと、第1のアドレスが第1のプロセスに関連付けられるアドレスの範囲内にあるかどうかを決定することと、アドレスが第1のプロセスに関連付けられるアドレスの範囲内にある場合、仮想アドレスに対応するページが物理メモリの中に存在しないこと、またはタスクが読み取り専用アクセス許可設定を伴ってメモリの中に存在するページに書き込もうとしていることを示すセグメンテーション違反をMMUによって生成することと、該アクセスキー値が0であること、または該タスクがアクセスキーを使用して仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、例外ハンドラを検証すると、MMUの中に該ゲスト仮想アドレスを備えているデータのページに関連付けられるネイティブ保護設定を変更し、仮想アドレスへのアクセスを可能にすることと、続いて、命令を再試行し、MMUによって、該データのページ内の仮想アドレスにアクセスするタスクの命令を可能にすることとをさらに含む。
互いにおよび上記の実施形態と組み合わせられ得る方法の追加の実施形態では、タスクは、該プロセスの第2のタスクを含み、第1および第2のタスクに関連付けられるプレフィックスデータは、異なる物理アドレスの中であるが、同じ論理アドレスにおいて記憶され、変更することは、対応するページテーブル項目のビット0の値を設定し、物理ページがメモリの中に存在していることを示すことを含み、方法は、MPROTECT()関数を呼び出し、ネイティブ保護設定を変更することをさらに含み得る。
本発明の実施形態は、上記の方法のうちのいずれかを実装することが可能であり得るコンピューティングシステムをさらに提供する。コンピューティングシステムは、保護キーメモリアクセス制御をサポートするように適合されていないプロセッサであって、プロセッサは、メモリ管理ユニット(MMU)を含み、仮想メモリを管理するオペレーティングシステムを実行し、プロセッサは、ユーザプロセスおよびタスクを実行するように適合される、プロセッサと、命令を記憶する非一過性のメモリとを含み、命令は、プロセッサ上で実行されると、プロセスに、仮想アドレスメモリの連続範囲および連続アドレス空間内の各4Kブロックへの記憶域キーを割り当てることと、プロセスにおいて記憶域アクセスキーを各タスクに割り当てることと、その割り当てられたアクセスキーを伴うタスクに仮想アドレスマッピングを割り当てることによって、特定のアクセスキーを使用してそのタスクの実行を開始することと、仮想アドレスマッピングを割り当てられた記憶域キーのためのタスクに割り当てることと、該タスクによる後続のメモリアクセスに応答して、後続のメモリアクセスが該タスクによって以前に使用されたアクセスキーと異なるアクセスキーを使用する場合、該タスクが該異なるアクセスキーを使用する権限を与えられているかどうかを決定することと、第2のタスクが権限を与えられている場合、後続の仮想アドレスマッピングをタスクおよびキーに割り当てることと、タスクによる記憶域を配分するコマンドまたは解放するコマンドに応答して、記憶域キーデータと、各制御バイトに関連付けられるページが有効であるというインジケータとを設定することを含む制御バイトを設定することと、アクセスキーを使用する該タスクのコンピュータ命令の実行時、タスクに関連付けられるアドレス空間内で仮想アドレスを生成することと、第1のアドレスが第1のプロセスに関連付けられるアドレスの範囲内にあるかどうかを決定することと、アドレスが第1のプロセスに関連付けられるアドレスの範囲内にある場合、仮想アドレスに対応するページが物理メモリの中に存在しないこと、またはタスクが読み取り専用アクセス許可設定を伴ってメモリの中に存在するページに書き込もうとしていることを示すセグメンテーション違反をMMUによって生成することと、該アクセスキー値が0であること、または該タスクがアクセスキーを使用して仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、例外ハンドラを検証すると、MMUの中に該ゲスト仮想アドレスを備えているデータのページに関連付けられるネイティブ保護設定を変更し、仮想アドレスへのアクセスを可能にすることと、続いて、命令を再試行し、MMUによって、該データのページ内の仮想アドレスにアクセスする該タスクの命令を可能にすることとをプロセッサに行わせる。
相互および上記の実施形態と組み合わせられ得る、システムの追加の実施形態では、タスクは、該プロセスの第2のタスクを含み、第1および第2のタスクに関連付けられるプレフィックスデータは、異なる物理アドレスの中であるが、同じ論理アドレスにおいて記憶され、ネイティブ保護設定を変更することは、対応するページテーブル項目のビット0の値を設定し、物理ページがメモリの中に存在していることを示すことを含み、システムはさらに、ネイティブ保護設定を変更するように動作可能であるMPROTECT()関数を該システムのオペレーティングシステムの中に含む。
本願明細書は、例えば、以下の項目も提供する。
(項目1)
保護キーメモリアクセス制御をサポートするように適合されていないプロセッサを有するコンピューティングシステムにおいて保護キーメモリアクセス制御を実装する方法であって、前記プロセッサは、メモリ管理ユニット(MMU)を含み、仮想メモリを管理するオペレーティングシステムを実行し、前記プロセッサは、ユーザプロセスおよびタスクを実行するように適合され、前記方法は、
各プロセスに、仮想アドレスメモリの連続範囲と連続アドレス空間内の各4Kブロックへの記憶域キーとを割り当てることと、
前記プロセスにおける各タスクに記憶域アクセスキーを割り当てることと、
その割り当てられたアクセスキーを伴うタスクに仮想アドレスマッピングを割り当てることによって、特定のアクセスキーを使用してそのタスクの実行を開始することと、
仮想アドレスマッピングを前記割り当てられた記憶域キーのための前記タスクに割り当てることと、
前記タスクによる後続のメモリアクセスに応答して、前記後続のメモリアクセスが前記タスクによって以前に使用されたアクセスキーと異なるアクセスキーを使用する場合、前記タスクが前記異なるアクセスキーを使用する権限を与えられているかどうかを決定し、前記第2のタスクが権限を与えられている場合、後続の仮想アドレスマッピングを前記タスクおよびキーに割り当てることと、
前記タスクによる記憶域を配分するコマンドまたは解放するコマンドに応答して、制御バイトを設定することであって、前記制御バイトを設定することは、前記記憶域キーデータと、各制御バイトに関連付けられたページが有効であるというインジケータとを設定することを含む、ことと、
前記アクセスキーを使用する前記タスクのコンピュータ命令の実行時、
前記タスクに関連付けられた前記アドレス空間内に仮想アドレスを生成することと、
前記第1のアドレスが前記第1のプロセスに関連付けられた前記アドレスの範囲内にあるかどうかを決定することと、
前記アドレスが前記第1のプロセスに関連付けられた前記アドレスの範囲内にある場合、
前記仮想アドレスに対応する前記ページが物理メモリの中に存在しないこと、または、前記タスクが読み取り専用アクセス許可設定を伴ってメモリの中に存在するページに書き込もうとしていることを示すセグメンテーション違反を前記MMUによって生成することと、
前記アクセスキー値が0であること、または前記タスクが前記アクセスキーを使用して前記仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、
前記例外ハンドラを検証すると、前記MMUにおいて、前記仮想アドレスを備えているデータのページに関連付けられるネイティブ保護設定を変更し、前記仮想アドレスへのアクセスを可能にすることと、
続いて、前記命令を再試行し、前記MMUによって、前記タスクの前記命令が前記データのページ内の仮想アドレスにアクセスすることを可能にすることと
を含む、方法。
(項目2)
前記タスクは、前記プロセスの第2のタスクを備えている、項目1に記載の方法。
(項目3)
前記第1および第2のタスクに関連付けられたプレフィックスデータは、異なる物理アドレスの中であるが、同じ論理アドレスにおいて記憶される、項目2に記載の方法。
(項目4)
前記変更することは、対応するページテーブル項目のビット0の値を設定し、前記物理ページがメモリの中に存在していることを示すことを含む、項目1に記載の方法。
(項目5)
MPROTECT()関数を呼び出し、前記ネイティブ保護設定を変更することをさらに含む、項目1に記載の方法。
(項目6)
コンピューティングシステムであって、前記コンピューティングシステムは、
保護キーメモリアクセス制御をサポートするように適合されていないプロセッサであって、前記プロセッサは、メモリ管理ユニット(MMU)を含み、仮想メモリを管理するオペレーティングシステムを実行し、前記プロセッサは、ユーザプロセスおよびタスクを実行するように適合されている、プロセッサと、
命令を記憶している非一過性のメモリと
を備え、
前記命令は、前記プロセッサ上で実行されると、
プロセスに、仮想アドレスメモリの連続範囲と連続アドレス空間内の各4Kブロックへの記憶域キーとを割り当てることと、
前記プロセスにおける各タスクに記憶域アクセスキーを割り当てることと、
その割り当てられたアクセスキーを伴うタスクに仮想アドレスマッピングを割り当てることによって、特定のアクセスキーを使用してそのタスクの実行を開始することと、
仮想アドレスマッピングを前記割り当てられた記憶域キーのための前記タスクに割り当てることと、
前記タスクによる後続のメモリアクセスに応答して、前記後続のメモリアクセスが前記タスクによって以前に使用されたアクセスキーと異なるアクセスキーを使用する場合、前記タスクが前記異なるアクセスキーを使用する権限を与えられているかどうかを決定することと、前記第2のタスクが権限を与えられている場合、後続の仮想アドレスマッピングを前記タスクおよびキーに割り当てることと、
前記タスクによる記憶域を配分するコマンドまたは解放するコマンドに応答して、制御バイトを設定することであって、前記制御バイトを設定することは、前記記憶域キーデータと、各制御バイトに関連付けられるページが有効であるというインジケータとを設定することを含む、ことと、
前記アクセスキーを使用する前記タスクのコンピュータ命令の実行時、
前記タスクに関連付けられた前記アドレス空間内に仮想アドレスを生成することと、
前記第1のアドレスが前記第1のプロセスに関連付けられた前記アドレスの範囲内にあるかどうかを決定することと、
前記アドレスが前記第1のプロセスに関連付けられた前記アドレスの範囲内にある場合、
前記仮想アドレスに対応する前記ページが物理メモリの中に存在しないこと、または、前記タスクが読み取り専用アクセス許可設定を伴ってメモリの中に存在するページに書き込もうとしていることを示すセグメンテーション違反を前記MMUによって生成することと、
前記アクセスキー値が0であること、または前記タスクが前記アクセスキーを使用して前記仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、
前記例外ハンドラを検証すると、前記MMUにおいて、ゲスト仮想アドレスを備えているデータのページに関連付けられたネイティブ保護設定を変更し、前記仮想アドレスへのアクセスを可能にすることと、
続いて、前記命令を再試行し、前記MMUによって、前記タスクの前記命令が前記データのページ内の仮想アドレスにアクセスする可能にすることと
を前記プロセッサに行わせる、コンピューティングシステム。
(項目7)
前記タスクは、前記プロセスの第2のタスクを備えている、項目6に記載のシステム。
(項目8)
前記第1および第2のタスクに関連付けられたプレフィックスデータは、異なる物理アドレスの中であるが、同じ論理アドレスにおいて記憶される、項目6に記載のシステム。
(項目9)
前記ネイティブ保護設定を変更することは、対応するページテーブル項目のビット0の値を設定し、前記物理ページがメモリの中に存在していることを示すことを含む、項目6に記載のシステム。
(項目10)
前記ネイティブ保護設定を変更するように動作可能であるMPROTECT()関数を前記システムの前記オペレーティングシステムの中にさらに備えている、項目6に記載のシステム。
本開示およびその特徴ならびに利点のさらに完全な理解のために、ここで、付随する図面と併せて解釈される、以下の説明が参照される。
図1は、従来技術のアプリケーション、オペレーティングシステム、およびハードウェアの概略図である。 図2は、従来技術のエミュレート型システムの概略図である。 図3Aは、従来技術とともに、または本発明の実施形態とともに使用され得る、ページディレクトリ項目の概略図である。 図3Bは、従来技術とともに、または本発明の実施形態とともに使用され得る、ページテーブル項目の概略図である。 図4Aは、本発明のある実施形態による、アプライアンスの概略図である。 図4Bは、図4Aのアプライアンスで使用するためのロードモジュールコンパイルドアプリケーションに再コンパイルされている、モジュール間の関係の概略図である。 図5Aは、従来技術の制御バイトの概略図である。 図5Bは、本発明の実施形態とともに使用され得る制御バイトの概略図である。 図6は、本発明のある実施形態によるシステムの動作のフローチャートである。 図7は、本発明の実施形態とともに使用され得る4プロセッサシステムの概略図である。
図2に示されるように、エミュレーションシステムは、ゲストアプリケーションの実行をサポートするために、実行すべきゲストオペレーティングシステム(40)のインストールのための設備を提供し得る。本発明のシステムの一側面では、レガシーアプリケーションエンジンを含むアプライアンスが提供され、レガシーアプリケーションエンジンは、ゲストオペレーティングシステムを採用することなく、ゲストアプリケーションの実行を可能にするように構築される。図4Aは、x86コンピュータまたはコンピュートブレード(410)が構成され、標的オペレーティングシステム(420)を起動する一実施形態を図示する。一例では、標的オペレーティングシステムは、LINUX(登録商標)である。ネイティブAPIの組(440)が、エミュレートされた命令の迅速な実行を可能にするためにさらに提供される。これらのネイティブAPIは、レガシーアプリケーション環境(430)によって呼び出され、レガシーアプリケーション環境は、ゲストシステム(図示せず)の挙動をエミュレートするように適合され、レガシーまたはゲストアプリケーションがアプライアンス上で起動することを可能にする。一実施形態では、レガシーアプリケーション環境は、プロセスのためのコンテナとして動作するレガシー動作エンジンモジュール(432)と、メモリ管理および他のハードウェアエミュレーション機能を実装するレガシーハードウェア環境モジュール(435)とで構成される。
図4Bは、ロードモジュールコンパイラを使用してロードモジュールコンパイルドアプリケーション(451)に再コンパイルされているレガシーアプリケーションの場合のモジュール間の関係を図示する。エミュレートされたタスクまたはプロセスと同様に、ロードモジュールコンパイル型アプリケーション(451)は、レガシー動作環境モジュール(432)によって提供されるコンテナの中で動作する。アプリケーションは、ネイティブAPI(440)と、メモリ管理機能を実装するレガシーハードウェア環境モジュール(435)とを呼び出すことができる。図4Aのレガシーアプリケーションと異なり、ロードモジュールコンパイル型アプリケーション(451)は、標的アーキテクチャ上で実行するようにコンパイルされているので、レガシープラットフォームに対応するレガシーハードウェア呼び出しを行わない。
レガシーメインフレームシステム上で起動するプロセスの仮想アドレス空間は、典型的には、2GBであり、それは、空間をアドレス指定するための31ビットに対応する。物理メモリに値する全アドレス空間を各プロセスに配分することが高価すぎるので、仮想メモリは、典型的には、物理メモリをより小さい量の物理メモリ、典型的には、4Kに分割するが、他の量も使用される。実際に、そのようなメインフレームシステムは、典型的には、仮想アドレス空間のための2GB限界よりもはるかに小さい全物理メモリで動作する。動作時、そのようなレガシーシステムは、仮想メモリアドレスを、物理記憶デバイスにアクセスするために使用される物理アドレスに変換するために、DATを行う。仮想メモリはまた、保護されたメモリ空間の共有、コンピュータメモリ階層の自動管理も可能にし、プログラムのロードおよび実行を促進する。
エミュレータは、概して、1つのシステムが別のシステムの仕様に従って挙動することを可能にするハードウェアまたはソフトウェアを指す。例えば、エミュレータは、いわゆるゲストシステム上で起動するように設計されたソフトウェアが、異なる設計またはアーキテクチャのハードウェアを組み込み得るホストシステム上で起動することを可能にするであろう。メインフレームゲストシステム上で起動するように設計されたソフトウェアが、代わりに異なるコンピュータシステム上で動作することを可能にするエミュレーションシステムが公知である。そのようなエミュレータは、典型的には、エミュレーションシステムが標的アーキテクチャ上でゲストシステムのハードウェア特徴を複製するために、下層メインフレームシステムのハードウェアをエミュレートする。メモリ管理の場合、そのようなハードウェアエミュレータは、典型的には、物理メモリをエミュレートし、したがって、動的アドレス変換挙動をエミュレートするであろう。
一実施形態によると、エミュレーションシステムは、下層物理記憶域をエミュレートすることなく、メインフレームの仮想アドレス空間に関連付けられる2GB仮想アドレス空間をエミュレートする。エミュレーションシステムは、そのハードウェアおよびオペレーティングシステムがより広いアドレス空間をサポートするネイティブマシン上で実装され得る。好ましい実施形態では、64ビットのワードサイズおよびメモリアドレス幅を伴う64ビットプロセッサ、ならびに64ビット仮想メモリアドレス指定を使用する64ビットオペレーティングシステムが採用される。当業者は、エミュレーションシステムが、他のワードサイズ、アドレスバス幅を有するプロセッサを伴って、または仮想アドレスのための他の数のビットを採用するオペレーティングシステムを伴って、実装され得ることを認識するであろう。
一実施形態によると、エミュレートされるシステムにおける各タスクまたはプロセスは、2GBアドレス空間への異なるマッピングの組を割り当てられる。好ましい実施形態では、各タスクは、タスクまたはプロセスに関連付けられる各記憶域キーのために異なるマッピングを割り当てられる。好ましくは、記憶域がタスクに配分されるとき、記憶域配分ルーチンは、特定のページが所与のキーによってアクセスされ得ることを示す、制御ブロックの中のビットを変更する。一例では、制御バイトの第8のビットが、将来の使用のために予備にされる。別の実装では、ビット8は、それがmallocまたはgetmain等のメモリ配分ルーチンを通して取得されているので、ページが現在有効であるかどうかを示すために使用され得る。本実施形態では、記憶域キーを保持する制御バイトの第8のビットは、有効/無効ビットを含み、有効/無効ビットは、仮想アドレス空間の特定のページが配分されていることを示すために記憶域配分ルーチンによって設定されることができる。ページが配分解除される場合、ルーチンは、同様に、ページがもはや配分されていないことを示すために有効/無効ビットを設定するであろう。
そのようなシステムでは、各タスクまたはプロセスは、1〜16個の異なるアドレスマッピングを割り当てられるであろう。一実施形態では、エミュレーションシステムは、x86プロセッサ上のLINUX(登録商標)オペレーティングシステムの下で起動し、S390メインフレームシステムにおける仮想記憶域へのアクセスを制御するための記憶域キーの動作をエミュレートする。LINUX(登録商標)関数MPROTECT()は、呼び出しプロセスのメモリページのためのMMUステータスにおける保護を変更する。呼び出しプロセスが保護に違反する様式でメモリにアクセスしようとする場合、カーネルがプロセスのためのSIGSEGV信号を生成する。
一例では、記憶域保護ビットは、特定のメモリアドレスが存在していることを示す有効/無効ビットと一緒に制御バイトの中に記憶されている。図5Bは、4ビットキー555がビット0−3の中に記憶され、保護ビット560がビット4の中に記憶され、変更ビット565がビット5の中に記憶され、参照ビット570がビット6の中に記憶され、有効/無効ビット575がビット7の中に記憶された例示的制御バイト(550)の8つのビットの例を描写する。単一バイトの使用は、制御情報が異なるサイズの制御ワードの中または他の記憶場所で非連続ビットの中に記憶され得るので、例示的であると理解されるべきである。
システムの動作の説明が、図6を参照して行われる。一実施形態によると、データの全てのページのためのMMUの中の物理ページ設定(図3B)が、最初に、アクセスを禁止するように設定される。例えば、対応するページテーブル項目のための存在ビット(ビット0)は、ページがメモリの中に存在しないことを示す「0」に設定されるであろう。動作時、エミュレーションにおいて動作するタスクまたはプロセスが仮想レガシーメモリアドレスへの命令を実行するとき、システムは、最初に、610で示されるように、所与の記憶域キーの下で動作するタスクに関連付けられる特定の仮想アドレスを決定する。システムは、次いで、アドレスがタスクに割り当てられたアドレスの範囲内にあるかどうかをチェックする。アドレスがプロセスに割り当てられたアドレスの範囲内にない場合(615)、アクセスが拒否される(680)。アドレスがプロセスに割り当てられた範囲内にある場合、システムは、ページがすでにアクセスされているかどうかを決定する620。第1のアクセスの場合、ページは、以前にアクセスされておらず、物理ページのアクセス制御ビットは、0であり、MMUは、アクセスを禁止し、カーネルは、SIGSEGV信号を生成する。以下に説明される例示的実装は、ページが存在しないことを検出することに応答して、物理ページのアクセス制御ビットを設定し、アクセスビットが変化したことをMMUにシグナリングするために、LINUX(登録商標)MPROTECT()動作を使用するが、異なるシステムでは、セグメンテーション違反を検出するための異なる信号、および非存在から存在にページの状態を変更するための異なるルーチンが、本発明に従って使用され得る。ページが以前にアクセスされた場合において、読み取り/書き込みアクセス許可が検証される。読み取りアクセスのみが設定されているページに対して書き込みアクセスが求められている場合、制御は、示されるようにインタラプトハンドラに戻る(625)。読み取り/書き込みアクセス許可が合致する場合(625)、アクセスが許可される(627)。
本発明の一実施形態では、その上でエミュレータが起動するLINUX(登録商標)システムのインタラプトハンドラは、キー検証ルーチンを含むように修正され、キー検証ルーチンが呼び出される620。キー検証ルーチンは、現在のタスクに関連付けられる記憶域アクセスキーを、記憶域キーテーブルの制御バイト550の中の記憶域キー555と比較し、キーが等しいかどうかを調べる640。一実施形態では、現在のプロセスに関連付けられる保護キーは、レジスタ、キー、制御ブロック、プレフィックス情報、および他のコンテキスト情報を含むデータ構造の中でレガシー動作環境(432)によって維持される。キー検証ルーチンが、アクセスキーが記憶域キーと同一であることを見出す場合、アクセスが許可されるべきであり、ルーチンが記憶域論理アドレスに関連付けられるネイティブ保護ステータスを変更する650。LINUX(登録商標)オペレーティングシステムの下の一例では、MPROTECT()動作が、PROT_NONEからPROT_READまたはPROT_WRITEに保護ステータスを設定するために使用される。この例におけるMPROTECT()動作は、対応するページテーブル項目の存在ビット(ビット0)を「1」に設定し、読み取り/書き込みビット(ビット1)を0またはなしに設定するであろう。一実施形態では、エミュレータは、3状態テーブルを実装し、設定をPROT_WRITEに変更するが、追加の保護状態がサポートされ得る。対応するページテーブル項目のための存在ビットも、ページが現在存在していることを示すように、「0」から「1」に変更される。現時点で、エミュレーションシステムは、最初にセグメンテーション違反を引き起こしたプロセッサ命令650の実行を再試行する。
キー検証ルーチンが、キーが合致しないことを決定する場合、アクセスキーがキー0であるかどうかを調べるためにチェックする670。キー0が、典型的には、システム動作に使用されるので、アクセスキーが0である場合、エミュレータは、ステップ650に進み、システムアクセスを可能にするようにネイティブ保護設定を変更する。キーが合致せず、キーがキー0以外である場合、システムは、アクセスを拒否し680、エミュレーションシステムは、命令を実行せず、エミュレーションシステムは、記憶域保護例外をエミュレートする。
エミュレータ上で起動する同じタスクまたはプロセスによる、同じ仮想アドレスへの後続のアクセスは、加速された様式で動作する。タスクおよびキーに関連付けられた仮想アドレスが決定されると、システムは、セグメンテーション違反およびSIGSEGV信号がないので、ページが以前にアクセスされていること620を調べる。好ましくは、MMUは、ページがすでにメモリの中に存在するかどうかを調べるように、要求されたページに対応するページテーブル項目の保護ビット(ビット0)の状態をチェックする。ページが存在する場合、これは、キー検証が、この特定の記憶域キーを使用してこのアドレスにアクセスするこのタスクのために以前に行われたことを意味する。したがって、保護された記憶域キーの下のアクセスは、許可設定が以前に検証されているので、許可される。ページがメモリの中に存在したままである間、キー検証が繰り返し行われる必要がないので、存在するページへの反復アクセスは、低減したオーバーヘッドを経験する。このようにエミュレーションにおいて動作するタスクまたはプロセスは、そうでなければ各アクセスのために行われるであろう例外処理、コンテキスト切り替え、およびテーブルルックアップの排除に起因して、著しい性能改良を経験するであろう。
同じタスクまたはプロセスが、続いて、仮想メインフレーム記憶域の中の同じ場所にアクセスする命令を実行するが、異なる記憶域アクセスキーを使用してそうする場合、システムは、各タスクおよび記憶域アクセスキーに関連付けられた異なるアドレスマッピングがあるので、異なる仮想アドレス610を決定するであろう。この条件下で、異なるアクセスキーを使用する仮想記憶域へのアクセスが、キーを使用する第1のそのようなアクセスである場合、エミュレータは、再びセグメンテーション違反を経験し、キー検証ルーチンを呼び出し、アクセスキーが記憶域キーに合致する場合640、MPROTECT()動作650を呼び出し、ページの保護ステータスを変更する。アクセスが異なる記憶域キーの下で許可されない場合、命令は、エミュレーションにおいて実行されず、エミュレータは、適切な例外をエミュレートして記録するであろう。
物理アドレスではなく仮想アドレスをエミュレートするエミュレータにおける別個の仮想アドレスの本発明の使用の別の目的は、複数のタスクまたはプロセスの加速されたエミュレーションである。上で議論されるように、レガシーメインフレームシステムは、プレフィックス変換として公知の技法を実装し、プレフィックス変換は、エミュレートされるシステムにおける各プロセッサが、0−4095バイトの範囲内の同じ物理アドレスを使用してメモリの異なる物理ブロックにアクセスすることを可能にする。4プロセッサシステムの例が、図7に図示されている。この例では、0のプレフィックス設定を有して示されるCPU0のための実際の物理アドレス0−4095が、絶対物理アドレス0−4095にマップされる。CPU1の場合、プレフィックス設定は、1として示され、実際の物理アドレス0−4095は、4Kのオフセットにおいて絶対システム物理アドレスの中へマップされる。同様に、2および3のプレフィックス設定をそれぞれ有するCPU2およびCPU3は、0−4095からのそれらの実際の物理アドレスを有し、それらの実際の物理アドレスは、それぞれ、8Kおよび12Kのオフセットにおいて絶対システム物理アドレス空間の中へマップされる。この説明図では、各CPUのためのプレフィックスエリアは、4Kバイトであり、プレフィックス設定は、4Kのインクリメントを示す整数によって表される。異なるサイズのプレフィックスエリアのための他のインクリメントも使用され得る。代替として、プレフィックス設定は、この例では、4K、8K、および12K等のオフセットアドレス、またはプレフィックスレジスタの中に記憶されたオフセットアドレスビットの組に記憶され得る。連続アドレスが、例証を容易にするために図7に示されている。しかしながら、プレフィックスアドレスは、アドレス空間内の他の場所にあり得、メモリ内の連続場所を指し示す必要はない。プレフィックス変換は、複数のプロセッサが、互いのデータを上書きすることなく、それらのそれぞれのブロック0場所で状態情報を管理することを可能にするが、インタラプトおよびコンテキスト切り替えの場合、プレフィックスエリアデータを交換して管理する必要性が、そのようなインタラプトまたはコンテキスト切り替えをハンドリングすることに関連付けられるオーバーヘッドを増加させる。
レガシーシステム内のプレフィックスエリアは、ハードウェアにおいて設定され、物理CPUに関連付けられるので、仮想アドレス指定によって管理されることができない。エミュレートされた環境では、プレフィックスエリアは、実アドレスに固定される必要はない。しかしながら、そのようなレガシーシステムのハードウェア挙動をエミュレートするエミュレーションシステムは、エミュレートされた物理記憶域内のプレフィックスエリアをエミュレートするであろう。そのようなシステムは、プレフィックスエリアのコピー、修正、および以降の復元をエミュレートする必要性に起因して、インタラプトまたはコンテキスト切り替えをエミュレートするときに有意なオーバーヘッドを経験する。例えば、CPUレジスタおよびプログラムステータスワードの状態だけではなく、エミュレーションにおけるプレフィックス記憶エリアの状態も保存することが、計算リソースを消費し、システム性能に悪影響を及ぼすので、プレフィックス変換の使用は、状態変化に関連付けられるオーバーヘッドを増加させる。そのようなエミュレーションシステムでは、より迅速なインタラプトハンドリングおよびコンテキスト切り替えを可能にするために、プレフィックス記憶エリアをコピーすることに関連付けられるオーバーヘッドを低減または排除することが有益であろう。
上で説明されるように、新規のシステムの実施形態は、タスクまたはプロセスによって使用される各記憶域キーのために別個のマッピングを用いて、固有の仮想アドレスマッピングの組を各タスクまたはプロセスに割り当てる。新規のシステムの一側面では、プレフィックスエリアも、エミュレートされる実CPUアドレス空間およびエミュレートされる絶対システムアドレス空間内ではなく、エミュレートされた仮想アドレス空間内で管理される。
一例では、プレフィックスエリアのコピーが、所与のタスクの記憶域キーの各々に関連付けられる仮想アドレスマッピングの各々の中に記憶される。このアプローチは、タスクが開始されるときにプレフィックスエリアの複数のコピーを書き込むことを要求するが、実記憶域のブロック0または絶対物理記憶域内の設定された場所ではなくて、仮想記憶域の中にプレフィックスエリアを記憶することが、システム性能を改良する。System390TMシステムにおいて、またはSystem390TMシステムの物理記憶域をエミュレートするエミュレーションシステムにおいて、インタラプトもしくはコンテキスト切り替えは、プレフィックスエリアをメモリ内の異なる場所にコピーする必要性、およびタスクが再開するときにプレフィックスエリアを復元する必要性に起因して、増加したオーバーヘッドをもたらす。多数のコンテキスト切り替えを伴うプロダクション環境で、かつ大量の入出力を行うアプリケーションの場合、この余分なデータをコピーすることに関連付けられる性能ペナルティが著しい。
上で解説されるように、レガシーメインフレーム環境内の一般的なプロセスに関連付けられるタスクの組は、共有仮想アドレス空間内で動作する。マルチプロセッサシステムでは、タスクは、同じCPUまたは別個のCPUに割り当てられ得る。本発明の実施形態によると、各タスクは、各記憶域キーのために1つ、それ自身の仮想アドレス空間の組を割り当てられ、それ自身の仮想CPUを割り当てられる。各仮想CPUは、別個のLINUX(登録商標)スレッドとして実装され得る。エミュレートされるシステムが物理アドレスではなく仮想アドレスをエミュレートするので、エミュレーションシステムは、タスクを、レガシーシステムにおいて生じるであろうCPUへのタスクの割当と一致している仮想CPUに関連付ける必要はない。実際に、エミュレートされるCPUが仮想であるので、エミュレータは、レガシーハードウェアと同程度にリソース配分において制約される必要はない。
一実施形態によると、タスクが開始し、仮想CPUが開始されるとき、記憶域初期化ルーチンは、記憶域が特定のタスクのために有効であることを示すように、記憶域キー値およびビット設定を含む制御バイトのテーブルの組を初期化する。タスクに関連付けられる各記憶域キーのために1つのマッピングである仮想アドレスマッピングの組が必要とされるので、初期化ルーチンは、各利用可能記憶域キーに対応する項目を作成する。本実施形態では、記憶域がマップされた後、次いで、システムは、仮想アドレス0をプレフィックスページに再マップするために、かつプレフィックスページをアドレス0に戻して再マップするために、LINUX(登録商標) system call remap_file_pages()を使用する、ルーチン呼び出し再マッププレフィックスを呼び出す。
記憶域がタスクから配分解除されるとき、ルーチンは、mprotect()動作を使用するアクセスを禁止するように、そのネイティブ保護ステータスをPROT_NONEに設定し、対応するページフレームがそのタスクのために無効であることを示すために、対応する有効/無効ビットも
制御バイトの中で無効に設定する。
上で説明されるエミュレーションシステムは、レガシーメインフレームの仮想アドレスをエミュレートするが、実または絶対アドレスへの動的アドレス変換をエミュレートしないエミュレーションシステムの例である。システムは、各タスクへの異なる仮想アドレス空間の組のマッピング、およびエミュレートされた環境内で記憶域キー保護およびプレフィックス変換のエミュレーションの性能を改良する技法を通して、性能を改良する。x86標的プラットフォームおよびx86標的オペレーティングシステムを使用して、実施形態が説明される。他の標的プロセッサアーキテクチャまたはオペレーティングシステムも使用され得る。LINUX(登録商標)オペレーティングシステムにSIGSEGV信号を生成させるMMUの特徴を使用し、LINUX(登録商標)mprotect()動作を呼び出す記憶域キー保護を実装する技法が説明される。仮想アドレスに対応するページが、利用可能であること、利用可能でないこと、または、保護されていること、保護されていないことを検出する他の方法が、他のオペレーティングシステムおよびコンピュータプラットフォームを使用して実装され得る。
各タスクへの異なる仮想アドレス空間の組のマッピングの上で説明された技法は、上で説明されるロードモジュールコンパイラを使用してコンパイルされたプログラムの実行に適用されることもできる。そのようなシステムでは、ロードモジュールコンパイラによって出力される実行可能x86プログラムは、エミュレーションにおいて起動するプログラムが仮想アドレスの範囲を割り当てられるであろうことと同程度に、仮想アドレスの範囲を割り当てられる。一実施形態によると、レガシー動作環境は、エミュレーションプログラムの実行のためのみならず、ロードモジュールコンパイラを使用してx86プラットフォーム上で自然に実行するようにコンパイルされているプログラムの実行のためにもコンテナとして動作する。エミュレーションにおいて起動するタスクまたはプロセスに対して、レガシー動作環境は、LMCコンパイル型プロセスに関連付けられるレジスタ、キー、制御ブロック、およびプレフィックス情報を含むコンテキスト情報を維持する。
本発明の1つ以上の側面は、例えば、物理コンピュータ読み取り可能な媒体を備えている製造品(例えば、1つ以上のコンピュータプログラム製品)の中に含まれることができる。そのような媒体は、例えば、ソースまたはオブジェクトコード形式であり得るコンピュータプログラム命令、または、本発明の能力を提供するように構成される他のコマンドまたは論理を含む。製造品は、ディスクドライブ、光学ドライブ、半導体メモリ、テープドライブの中に含まれるか、または、別個であり得るかまたはコンピュータもしくはコンピュータシステムにインストールされ得る記憶デバイスの中に含まれることができる。
上で説明される例示的システムは、Intelプロセッサ上で見出されるメモリ管理ユニットを採用し、特定のタスクによって使用するための物理メモリの中へ設置され得るページを制御するためにLINUX(登録商標)オペレーティングシステムによって使用されるページテーブルの管理において保護キー検証を行うための特殊例外ハンドラを採用した。本明細書に開示される実施形態は、Intelプロセッサを伴うコンピュータを使用したが、AMD(CA,US)、IBM、Motorola(IL,US)、ARM(UK)、または他の供給源によって提供されるプロセッサ等の他のプロセッサが、本明細書に開示される本発明に影響を及ぼすことなく使用され得る。
プログラム命令を記憶および/または実行するためのシステムは、典型的には、システムバスもしくは他のデータチャネル、またはスイッチ、バッファ、ネットワーク、ならびにチャネルの配列を通してメモリに結合される少なくとも1つのプロセッサを含む。メモリは、プログラムの実行中に採用されるローカルメモリであるキャッシュメモリを含み得る。メインメモリは、ランダムアクセスメモリ(RAM)または当技術分野で公知である他の動的記憶デバイスであることができる。好ましくは、そのようなシステムは、メモリの持続性を確実にするためにバッテリバックアップを採用する。システムによって使用される読み取り専用メモリは、ROM、PROM、EPROM、Flash/EEPROM、または他の公知のメモリ技術であることができる。大容量記憶装置が、データまたはプログラム命令を記憶するために使用されることができる。大容量記憶装置の例は、ディスク、ディスクのアレイ、テープ、ソリッドステートデバイスを含み、直接アタッチ型、ネットワーク化アタッチ型、記憶エリアネットワーク、または当技術分野で公知である他の記憶域構成で構成され得る。リムーバブル記憶媒体は、テープ、ハードドライブ、フロッピー(登録商標)ディスク、ジップドライブ、フラッシュメモリおよびフラッシュメモリドライブ、光学ディスク等を含む。
多くの例が、本明細書で提供される。これらの例は、本発明の精神から逸脱することなく修正され得る。本明細書に説明される例および実施形態は、例として提供され、他の構成要素、ルーチン、またはモジュールも、使用され得る。

Claims (20)

  1. 保護キーメモリアクセス制御をサポートするように適合されていないプロセッサを有するコンピューティングシステムにおいて保護キーメモリアクセス制御を実装する方法であって、前記プロセッサは、メモリ管理ユニット(MMU)を含み、仮想メモリを管理するオペレーティングシステムを実行し、前記プロセッサは、タスクを備えるユーザプロセスを実行するように適合され、前記方法は、
    ブロックを含むアドレス化可能な仮想メモリの連続範囲を各ユーザプロセスに割り当てることと、
    各タスクに記憶域アクセスキーを割り当てることと、
    その割り当てられた記憶域アクセスキーを伴う特定のタスクに、前記アドレス化可能な仮想メモリの連続範囲における第1の仮想アドレスマッピングを割り当てることによって、その特定のタスクに割り当てられる前記記憶域アクセスキーを使用して特定のユーザプロセス内のその特定のタスクの実行を開始することと、
    前記特定のタスクによる後続のメモリアクセスに応答して、前記後続のメモリアクセスが前記特定のタスクによって以前に使用されたいずれの記憶域アクセスキーと異なる記憶域アクセスキーを使用する場合、前記特定のタスクが前記異なる記憶域アクセスキーを使用する権限を与えられているかどうかを決定し、前記特定のタスクが権限を与えられている場合、後続の仮想アドレスマッピングを前記特定のタスクおよび前記異なる記憶域アクセスキーに割り当てることと、
    前記特定のタスクによって使用される記憶域を配分または解放するコマンドに応答して、制御バイトを設定することであって、前記制御バイトを設定することは、記憶域キーデータと、各制御バイトに関連付けられたデータを備えるページが有効であるというインジケータとを設定することを含む、ことと、
    いずれの記憶域アクセスキーを使用する前記特定のタスクのコンピュータ命令の実行時、
    前記特定のタスクに関連付けられた仮想アドレスを生成することと、
    前記特定のタスクに関連付けられた前記仮想アドレスが前記仮想アドレスメモリの連続範囲内にあるかどうかを決定することと、
    前記アドレスが前記アドレス化可能な仮想メモリの連続範囲にある場合、
    セグメンテーション違反を前記MMUによって生成することと、
    前記記憶域アクセスキーが0の値を有すること、または前記タスクがその前記記憶域アクセスキーを使用して前記仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、
    前記例外ハンドラを検証すると、前記仮想メモリ内に記憶され、かつ前記タスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更し、前記関連付けられた仮想アドレスへのアクセスを可能にすることと、
    続いて、前記特定のタスクの前記コンピュータ命令を再実行し、前記ページへのアクセスを可能にすることと
    を含む、方法。
  2. 前記ブロックは、4Kブロックを備える、請求項1に記載の方法。
  3. 前記セグメンテーション違反は、前記仮想アドレスに対応する前記ページが物理メモリ内に存在しないことを示すことを含む、請求項1に記載の方法。
  4. 前記セグメンテーション違反は、前記タスクが、読み取り専用アクセス許可設定を伴ってメモリ内に存在する前記ページに書き込もうとしていることを示すことを含む、請求項1に記載の方法。
  5. 前記セグメンテーション違反は、前記タスクが、マッチングアクセス許可設定なしに前記ページを読み込もうとしていることを示すことを含む、請求項1に記載の方法。
  6. 前記特定のユーザプロセスの前記特定のタスクの第1および後続の実行に関連付けられたプレフィックスデータは、異なる物理アドレス内にあるが、同じ論理アドレスにおいて記憶されている、請求項1に記載の方法。
  7. 前記仮想アドレスメモリ内に記憶され、かつ前記タスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更することは、対応するページテーブル項目のビット0の値を設定し、前記データを備える物理ページがメモリ内に存在していることを示すことを含む、請求項1に記載の方法。
  8. MPROTECT()関数を呼び出し、前記仮想アドレスメモリ内に記憶され、かつ前記特定のタスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更することをさらに含む、請求項1に記載の方法。
  9. ネイティブ保護設定を変更することは、アクセス制御ビットを変更することを含む、請求項1に記載の方法。
  10. 前記セグメンテーション違反に応答して、前記仮想アドレスメモリ内に記憶され、かつ前記特定のタスクに関連付けられている、前記ページの状態を非存在から存在に変更するためのルーチンを実行することをさらに含む、請求項1に記載の方法。
  11. コンピューティングシステムであって、前記システムは、
    保護キーメモリアクセス制御をサポートするように適合されていないプロセッサであって、前記プロセッサは、メモリ管理ユニット(MMU)を含み、アドレス化可能な仮想メモリを管理するオペレーティングシステムを実行し、前記プロセッサは、タスクを備えるユーザプロセスを実行するように適合されている、プロセッサと、
    命令を記憶している非一過性のメモリと
    を備え、
    前記命令は、前記プロセッサ上で実行されると、前記プロセッサに、
    ブロックを含むアドレス化可能な仮想メモリの連続範囲をユーザプロセスに割り当て、記憶域キーを各ブロックに割り当てることと、
    各タスクに記憶域アクセスキーを割り当てることと、
    その割り当てられた記憶域アクセスキーを伴う特定のタスクに、前記アドレス化可能な仮想メモリの連続範囲における第1の仮想アドレスマッピングを割り当てることによって、その特定のタスクに割り当てられる特定の記憶域アクセスキーを使用して特定のユーザプロセス内のその特定のタスクの実行を開始することと、
    前記特定のタスクによる後続のメモリアクセスに応答して、前記後続のメモリアクセスが前記特定のタスクによって以前に使用されたいずれの記憶域アクセスキーと異なる記憶域アクセスキーを使用する場合、前記特定のタスクが前記異なる記憶域アクセスキーを使用する権限を与えられているかどうかを決定し、前記特定のタスクが権限を与えられている場合、後続の仮想アドレスマッピングを前記特定のタスクおよび前記異なる記憶域アクセスキーに割り当てることと、
    前記特定のタスクによって使用される記憶域を配分または解放するコマンドに応答して、制御バイトを設定することであって、前記制御バイトを設定することは、記憶域キーデータと、各制御バイトに関連付けられたデータを備えるページが有効であるというインジケータとを設定することを含む、ことと、
    いずれの記憶域アクセスキーを使用する前記特定のタスクのコンピュータ命令の実行時、
    前記特定のタスクに関連付けられたアドレス内の仮想アドレスを生成することと、
    前記特定のタスクに関連付けられた前記仮想アドレスが前記仮想アドレスメモリの連続範囲内にあるかどうかを決定することと、
    前記アドレスが前記アドレス化可能な仮想メモリの連続範囲にある場合、
    セグメンテーション違反を前記MMUによって生成することと、
    前記記憶域アクセスキーが0の値を有すること、または前記タスクがその前記記憶域アクセスキーを使用して前記アドレス化可能な仮想メモリ内の前記仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、
    前記例外ハンドラを検証すると、前記仮想メモリ内に記憶され、かつ前記タスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更し、前記関連付けられた仮想アドレスへのアクセスを可能にすることと、
    続いて、前記特定のタスクの前記コンピュータ命令を再実行し、前記ページへのアクセスを可能にすることと
    を行わせる、システム。
  12. 前記ブロックは、4Kブロックを備える、請求項11に記載のシステム。
  13. 前記セグメンテーション違反は、前記仮想アドレスに対応する前記ページが物理メモリ内に存在しないという指示を含む、請求項11に記載のシステム。
  14. 前記セグメンテーション違反は、前記タスクが、読み取り専用アクセス許可設定を伴ってメモリ内に存在する前記ページに書き込もうとしているという指示を含む、請求項11に記載のシステム。
  15. 前記セグメンテーション違反は、前記タスクが、マッチングアクセス許可設定なしに前記ページを読み込もうとしているという指示を含む、請求項11に記載のシステム。
  16. 前記特定のユーザプロセスの前記特定のタスクの第1および後続の実行に関連付けられたプレフィックスデータは、異なる物理アドレス内にあるが、同じ論理アドレスにおいて記憶されている、請求項11に記載のシステム。
  17. 前記仮想アドレスメモリ内に記憶され、かつ前記タスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更するために、対応するページテーブル項目のビット0の値は、前記データを備える物理ページがメモリ内に存在していることを示すように設定される、請求項11に記載のシステム。
  18. 命令であって、前記命令は、前記プロセッサ上で実行されると、前記プロセッサに、MPROTECT()関数を呼び出し、前記仮想アドレスメモリ内に記憶され、かつ前記特定のタスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更させる、命令を記憶している前記非一過性のメモリをさらに備える、請求項11に記載のシステム。
  19. 前記命令は、前記プロセッサに、アクセス制御ビットを変更することによってネイティブ保護設定を変更させる、請求項11に記載のシステム。
  20. 前記セグメンテーション違反に応答して、前記仮想アドレスメモリ内に記憶され、かつ前記特定のタスクに関連付けられている、前記ページの状態を非存在から存在に変更するためのルーチンを実行することをさらに含む、請求項11に記載のシステム。
JP2018532157A 2015-12-15 2015-12-15 仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換 Active JP6518015B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2015/059646 WO2017103651A1 (en) 2015-12-15 2015-12-15 Protection key management and prefixing in virtual address space legacy emulation system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2019079548A Division JP6708860B2 (ja) 2019-04-18 2019-04-18 仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換

Publications (3)

Publication Number Publication Date
JP2018538630A JP2018538630A (ja) 2018-12-27
JP2018538630A5 JP2018538630A5 (ja) 2019-02-14
JP6518015B2 true JP6518015B2 (ja) 2019-05-22

Family

ID=55069923

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018532157A Active JP6518015B2 (ja) 2015-12-15 2015-12-15 仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換

Country Status (9)

Country Link
US (4) US9779034B2 (ja)
EP (2) EP3584708B1 (ja)
JP (1) JP6518015B2 (ja)
AU (1) AU2015417223B2 (ja)
CA (1) CA3005949C (ja)
PL (2) PL3204861T3 (ja)
PT (2) PT3204861T (ja)
SG (1) SG11201804301UA (ja)
WO (1) WO2017103651A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10339333B2 (en) * 2016-07-20 2019-07-02 Montage Technology Co., Ltd. Method and apparatus for controlling application to access memory
US10303621B1 (en) * 2017-03-07 2019-05-28 Amazon Technologies, Inc. Data protection through address modification
US10261913B2 (en) * 2017-04-20 2019-04-16 Alibaba Group Holding Limited Persistent memory for key-value storage
US10324659B2 (en) * 2017-05-24 2019-06-18 International Business Machines Corporation Detection of over-access of memory shared among multiple processes
GB2570326B (en) * 2018-01-22 2020-06-10 Advanced Risc Mach Ltd Multiple guard tag setting instruction
US11762566B2 (en) 2018-01-22 2023-09-19 Arm Limited Programmable mapping of guard tag storage locations
US10795679B2 (en) 2018-06-07 2020-10-06 Red Hat, Inc. Memory access instructions that include permission values for additional protection
CN109144894B (zh) * 2018-08-01 2023-04-07 浙江大学 基于数据冗余的内存访问模式保护方法
CA3118057A1 (en) * 2018-11-02 2020-05-07 Lzlabs Gmbh Selective substitution of legacy load module programs with classes for execution in a java virtual machine
US10705983B1 (en) 2019-03-01 2020-07-07 International Business Machines Corporation Transparent conversion of common virtual storage
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire
US20240134666A1 (en) 2021-02-26 2024-04-25 Lzlabs Gmbh Hybrid just in time load module compiler with performance optimizations
KR102494791B1 (ko) 2021-11-08 2023-02-06 숭실대학교산학협력단 컨테이너 환경에서 알려지지 않은 바이너리 검사 및 차단 방법 및 장치
CN115238297B (zh) * 2022-09-23 2023-01-31 北京安帝科技有限公司 多层级权限控制内存保护方法和装置

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE37305E1 (en) * 1982-12-30 2001-07-31 International Business Machines Corporation Virtual memory address translation mechanism with controlled data persistence
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
US4945480A (en) * 1988-02-10 1990-07-31 International Business Machines Corporation Data domain switching on program address space switching and return
US5283868A (en) * 1989-05-17 1994-02-01 International Business Machines Corp. Providing additional system characteristics to a data processing system through operations of an application program, transparently to the operating system
US5075845A (en) * 1989-12-22 1991-12-24 Intel Corporation Type management and control in an object oriented memory protection mechanism
US5075842A (en) * 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5577231A (en) * 1994-12-06 1996-11-19 International Business Machines Corporation Storage access authorization controls in a computer system using dynamic translation of large addresses
US5745676A (en) * 1995-12-04 1998-04-28 International Business Machines Corporation Authority reduction and restoration method providing system integrity for subspace groups and single address spaces during program linkage
US5761734A (en) * 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US7543290B2 (en) * 2001-04-11 2009-06-02 Mellanox Technologies Ltd. Multiple queue pair access with single doorbell
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US7278030B1 (en) * 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US7111145B1 (en) * 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers
US7421689B2 (en) * 2003-10-28 2008-09-02 Hewlett-Packard Development Company, L.P. Processor-architecture for facilitating a virtual machine monitor
US20060036830A1 (en) * 2004-07-31 2006-02-16 Dinechin Christophe De Method for monitoring access to virtual memory pages
US7213125B2 (en) * 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US8091090B2 (en) * 2004-07-31 2012-01-03 Hewlett-Packard Development Company, L.P. Method for providing scratch registers for use by a virtual-machine monitor
US7200734B2 (en) * 2004-07-31 2007-04-03 Hewlett-Packard Development Company, L.P. Operating-system-transparent distributed memory
US7996833B2 (en) * 2004-07-31 2011-08-09 Hewlett-Packard Development Company, L.P. Method and system for replacing instructions and instruction blocks in computer code
US7330942B2 (en) * 2004-07-31 2008-02-12 Hewlett-Packard Development Company, L.P. Method for efficient virtualization of physical memory in a virtual-machine monitor
US8176487B2 (en) * 2007-08-02 2012-05-08 International Business Machines Corporation Client partition scheduling and prioritization of service partition work
US8645974B2 (en) * 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US8010763B2 (en) * 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8176280B2 (en) * 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8086811B2 (en) * 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
FR2968792B1 (fr) * 2010-12-13 2013-01-11 Bull Sas Procede, programme d'ordinateur et dispositif de gestion d'acces memoire dans une architecture multiprocesseurs de type numa
US8914458B2 (en) * 2012-09-27 2014-12-16 Mellanox Technologies Ltd. Look-ahead handling of page faults in I/O operations
US9052990B2 (en) * 2012-11-20 2015-06-09 International Business Machines Corporation Techniques for managing pinned memory
US9104469B2 (en) * 2013-06-11 2015-08-11 Vmware, Inc. Suspend-resume of virtual machines using de-duplication
US9734083B2 (en) * 2014-03-31 2017-08-15 International Business Machines Corporation Separate memory address translations for instruction fetches and data accesses
US10489309B2 (en) * 2014-10-21 2019-11-26 Intel Corporation Memory protection key architecture with independent user and supervisor domains
US9619270B2 (en) * 2015-06-27 2017-04-11 Vmware, Inc. Remote-direct-memory-access-based virtual machine live migration

Also Published As

Publication number Publication date
PL3204861T3 (pl) 2019-12-31
WO2017103651A1 (en) 2017-06-22
US20170168963A1 (en) 2017-06-15
AU2015417223A1 (en) 2018-06-14
US20180232319A1 (en) 2018-08-16
US9971707B2 (en) 2018-05-15
JP2018538630A (ja) 2018-12-27
CA3005949A1 (en) 2017-06-22
AU2015417223B2 (en) 2021-08-12
SG11201804301UA (en) 2018-06-28
US9779034B2 (en) 2017-10-03
US11210239B2 (en) 2021-12-28
US10552346B2 (en) 2020-02-04
PL3584708T3 (pl) 2022-09-26
EP3584708A1 (en) 2019-12-25
EP3204861A1 (en) 2017-08-16
EP3204861B1 (en) 2019-06-19
EP3584708B1 (en) 2022-05-11
CA3005949C (en) 2022-08-02
US20200151115A1 (en) 2020-05-14
US20170364455A1 (en) 2017-12-21
PT3204861T (pt) 2019-09-19
PT3584708T (pt) 2022-07-27

Similar Documents

Publication Publication Date Title
JP6518015B2 (ja) 仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換
US10241819B2 (en) Isolating data within a computer system using private shadow mappings
US8578483B2 (en) Systems and methods for preventing unauthorized modification of an operating system
US5577231A (en) Storage access authorization controls in a computer system using dynamic translation of large addresses
US9009727B2 (en) Virtualization with in-place translation
US20080077767A1 (en) Method and apparatus for secure page swapping in virtual memory systems
US20020046305A1 (en) Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
JP2011517797A (ja) ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジック、方法、およびシステム
US7506096B1 (en) Memory segment emulation model for virtual machine
JP7444853B2 (ja) メモリ・アクセスを制御するための装置及び方法
JP7291149B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
JP2021512405A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
JP6708860B2 (ja) 仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換
JP2024517627A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181217

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20181217

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20190110

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: 20190319

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190418

R150 Certificate of patent or registration of utility model

Ref document number: 6518015

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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