【手続補正書】
【提出日】平成30年12月17日(2018.12.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
保護キーメモリアクセス制御をサポートするように適合されていないプロセッサを有するコンピューティングシステムにおいて保護キーメモリアクセス制御を実装する方法であって、前記プロセッサは、メモリ管理ユニット（ＭＭＵ）を含み、仮想メモリを管理するオペレーティングシステムを実行し、前記プロセッサは、タスクを備えるユーザプロセスを実行するように適合され、前記方法は、
ブロックを含むアドレス化可能な仮想メモリの連続範囲を各ユーザプロセスに割り当てることと、
各タスクに記憶域アクセスキーを割り当てることと、
その割り当てられた記憶域アクセスキーを伴う特定のタスクに、前記アドレス化可能な仮想メモリの連続範囲における第１の仮想アドレスマッピングを割り当てることによって、その特定のタスクに割り当てられる前記記憶域アクセスキーを使用して特定のユーザプロセス内のその特定のタスクの実行を開始することと、
前記特定のタスクによる後続のメモリアクセスに応答して、前記後続のメモリアクセスが前記特定のタスクによって以前に使用されたいずれの記憶域アクセスキーと異なる記憶域アクセスキーを使用する場合、前記特定のタスクが前記異なる記憶域アクセスキーを使用する権限を与えられているかどうかを決定し、前記特定のタスクが権限を与えられている場合、後続の仮想アドレスマッピングを前記特定のタスクおよび前記異なる記憶域アクセスキーに割り当てることと、
前記特定のタスクによって使用される記憶域を配分または解放するコマンドに応答して、制御バイトを設定することであって、前記制御バイトを設定することは、記憶域キーデータと、各制御バイトに関連付けられたデータを備えるページが有効であるというインジケータとを設定することを含む、ことと、
いずれの記憶域アクセスキーを使用する前記特定のタスクのコンピュータ命令の実行時、
前記特定のタスクに関連付けられた仮想アドレスを生成することと、
前記特定のタスクに関連付けられた前記仮想アドレスが前記仮想アドレスメモリの連続範囲内にあるかどうかを決定することと、
前記アドレスが前記アドレス化可能な仮想メモリの連続範囲にある場合、
セグメンテーション違反を前記ＭＭＵによって生成することと、
前記記憶域アクセスキーが０の値を有すること、または前記タスクがその前記記憶域アクセスキーを使用して前記仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、
前記例外ハンドラを検証すると、前記仮想メモリ内に記憶され、かつ前記タスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更し、前記関連付けられた仮想アドレスへのアクセスを可能にすることと、
続いて、前記特定のタスクの前記コンピュータ命令を再実行し、前記ページへのアクセスを可能にすることと
を含む、方法。
【請求項２】
前記ブロックは、４Ｋブロックを備える、請求項１に記載の方法。
【請求項３】
前記セグメンテーション違反は、前記仮想アドレスに対応する前記ページが物理メモリ内に存在しないことを示すことを含む、請求項１に記載の方法。
【請求項４】
前記セグメンテーション違反は、前記タスクが、読み取り専用アクセス許可設定を伴ってメモリ内に存在する前記ページに書き込もうとしていることを示すことを含む、請求項１に記載の方法。
【請求項５】
前記セグメンテーション違反は、前記タスクが、マッチングアクセス許可設定なしに前記ページを読み込もうとしていることを示すことを含む、請求項１に記載の方法。
【請求項６】
前記特定のユーザプロセスの前記特定のタスクの第１および後続の実行に関連付けられたプレフィックスデータは、異なる物理アドレス内にあるが、同じ論理アドレスにおいて記憶されている、請求項１に記載の方法。
【請求項７】
前記仮想アドレスメモリ内に記憶され、かつ前記タスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更することは、対応するページテーブル項目のビット０の値を設定し、前記データを備える物理ページがメモリ内に存在していることを示すことを含む、請求項１に記載の方法。
【請求項８】
ＭＰＲＯＴＥＣＴ（）関数を呼び出し、前記仮想アドレスメモリ内に記憶され、かつ前記特定のタスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更することをさらに含む、請求項１に記載の方法。
【請求項９】
ネイティブ保護設定を変更することは、アクセス制御ビットを変更することを含む、請求項１に記載の方法。
【請求項１０】
前記セグメンテーション違反に応答して、前記仮想アドレスメモリ内に記憶され、かつ前記特定のタスクに関連付けられている、前記ページの状態を非存在から存在に変更するためのルーチンを実行することをさらに含む、請求項１に記載の方法。
【請求項１１】
コンピューティングシステムであって、前記システムは、
保護キーメモリアクセス制御をサポートするように適合されていないプロセッサであって、前記プロセッサは、メモリ管理ユニット（ＭＭＵ）を含み、アドレス化可能な仮想メモリを管理するオペレーティングシステムを実行し、前記プロセッサは、タスクを備えるユーザプロセスを実行するように適合されている、プロセッサと、
命令を記憶している非一過性のメモリと
を備え、
前記命令は、前記プロセッサ上で実行されると、前記プロセッサに、
ブロックを含むアドレス化可能な仮想メモリの連続範囲をユーザプロセスに割り当て、記憶域キーを各ブロックに割り当てることと、
各タスクに記憶域アクセスキーを割り当てることと、
その割り当てられた記憶域アクセスキーを伴う特定のタスクに、前記アドレス化可能な仮想メモリの連続範囲における第１の仮想アドレスマッピングを割り当てることによって、その特定のタスクに割り当てられる特定の記憶域アクセスキーを使用して特定のユーザプロセス内のその特定のタスクの実行を開始することと、
前記特定のタスクによる後続のメモリアクセスに応答して、前記後続のメモリアクセスが前記特定のタスクによって以前に使用されたいずれの記憶域アクセスキーと異なる記憶域アクセスキーを使用する場合、前記特定のタスクが前記異なる記憶域アクセスキーを使用する権限を与えられているかどうかを決定し、前記特定のタスクが権限を与えられている場合、後続の仮想アドレスマッピングを前記特定のタスクおよび前記異なる記憶域アクセスキーに割り当てることと、
前記特定のタスクによって使用される記憶域を配分または解放するコマンドに応答して、制御バイトを設定することであって、前記制御バイトを設定することは、記憶域キーデータと、各制御バイトに関連付けられたデータを備えるページが有効であるというインジケータとを設定することを含む、ことと、
いずれの記憶域アクセスキーを使用する前記特定のタスクのコンピュータ命令の実行時、
前記特定のタスクに関連付けられたアドレス内の仮想アドレスを生成することと、
前記特定のタスクに関連付けられた前記仮想アドレスが前記仮想アドレスメモリの連続範囲内にあるかどうかを決定することと、
前記アドレスが前記アドレス化可能な仮想メモリの連続範囲にある場合、
セグメンテーション違反を前記ＭＭＵによって生成することと、
前記記憶域アクセスキーが０の値を有すること、または前記タスクがその前記記憶域アクセスキーを使用して前記アドレス化可能な仮想メモリ内の前記仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、
前記例外ハンドラを検証すると、前記仮想メモリ内に記憶され、かつ前記タスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更し、前記関連付けられた仮想アドレスへのアクセスを可能にすることと、
続いて、前記特定のタスクの前記コンピュータ命令を再実行し、前記ページへのアクセスを可能にすることと
を行わせる、システム。
【請求項１２】
前記ブロックは、４Ｋブロックを備える、請求項１１に記載のシステム。
【請求項１３】
前記セグメンテーション違反は、前記仮想アドレスに対応する前記ページが物理メモリ内に存在しないという指示を含む、請求項１１に記載のシステム。
【請求項１４】
前記セグメンテーション違反は、前記タスクが、読み取り専用アクセス許可設定を伴ってメモリ内に存在する前記ページに書き込もうとしているという指示を含む、請求項１１に記載のシステム。
【請求項１５】
前記セグメンテーション違反は、前記タスクが、マッチングアクセス許可設定なしに前記ページを読み込もうとしているという指示を含む、請求項１１に記載のシステム。
【請求項１６】
前記特定のユーザプロセスの前記特定のタスクの第１および後続の実行に関連付けられたプレフィックスデータは、異なる物理アドレス内にあるが、同じ論理アドレスにおいて記憶されている、請求項１１に記載のシステム。
【請求項１７】
前記仮想アドレスメモリ内に記憶され、かつ前記タスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更するために、対応するページテーブル項目のビット０の値は、前記データを備える物理ページがメモリ内に存在していることを示すように設定される、請求項１１に記載のシステム。
【請求項１８】
命令であって、前記命令は、前記プロセッサ上で実行されると、前記プロセッサに、ＭＰＲＯＴＥＣＴ（）関数を呼び出し、前記仮想アドレスメモリ内に記憶され、かつ前記特定のタスクに関連付けられている、前記ページに関連付けられたネイティブ保護設定を変更させる、命令を記憶している前記非一過性のメモリをさらに備える、請求項１１に記載のシステム。
【請求項１９】
前記命令は、前記プロセッサに、アクセス制御ビットを変更することによってネイティブ保護設定を変更させる、請求項１１に記載のシステム。
【請求項２０】
前記セグメンテーション違反に応答して、前記仮想アドレスメモリ内に記憶され、かつ前記特定のタスクに関連付けられている、前記ページの状態を非存在から存在に変更するためのルーチンを実行することをさらに含む、請求項１１に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２５
【補正方法】変更
【補正の内容】
【００２５】
相互および上記の実施形態と組み合わせられ得る、システムの追加の実施形態では、タスクは、該プロセスの第２のタスクを含み、第１および第２のタスクに関連付けられるプレフィックスデータは、異なる物理アドレスの中であるが、同じ論理アドレスにおいて記憶され、ネイティブ保護設定を変更することは、対応するページテーブル項目のビット０の値を設定し、物理ページがメモリの中に存在していることを示すことを含み、システムはさらに、ネイティブ保護設定を変更するように動作可能であるＭＰＲＯＴＥＣＴ（）関数を該システムのオペレーティングシステムの中に含む。
本願明細書は、例えば、以下の項目も提供する。
（項目１）
保護キーメモリアクセス制御をサポートするように適合されていないプロセッサを有するコンピューティングシステムにおいて保護キーメモリアクセス制御を実装する方法であって、前記プロセッサは、メモリ管理ユニット（ＭＭＵ）を含み、仮想メモリを管理するオペレーティングシステムを実行し、前記プロセッサは、ユーザプロセスおよびタスクを実行するように適合され、前記方法は、
各プロセスに、仮想アドレスメモリの連続範囲と連続アドレス空間内の各４Ｋブロックへの記憶域キーとを割り当てることと、
前記プロセスにおける各タスクに記憶域アクセスキーを割り当てることと、
その割り当てられたアクセスキーを伴うタスクに仮想アドレスマッピングを割り当てることによって、特定のアクセスキーを使用してそのタスクの実行を開始することと、
仮想アドレスマッピングを前記割り当てられた記憶域キーのための前記タスクに割り当てることと、
前記タスクによる後続のメモリアクセスに応答して、前記後続のメモリアクセスが前記タスクによって以前に使用されたアクセスキーと異なるアクセスキーを使用する場合、前記タスクが前記異なるアクセスキーを使用する権限を与えられているかどうかを決定し、前記第２のタスクが権限を与えられている場合、後続の仮想アドレスマッピングを前記タスクおよびキーに割り当てることと、
前記タスクによる記憶域を配分するコマンドまたは解放するコマンドに応答して、制御バイトを設定することであって、前記制御バイトを設定することは、前記記憶域キーデータと、各制御バイトに関連付けられたページが有効であるというインジケータとを設定することを含む、ことと、
前記アクセスキーを使用する前記タスクのコンピュータ命令の実行時、
前記タスクに関連付けられた前記アドレス空間内に仮想アドレスを生成することと、
前記第１のアドレスが前記第１のプロセスに関連付けられた前記アドレスの範囲内にあるかどうかを決定することと、
前記アドレスが前記第１のプロセスに関連付けられた前記アドレスの範囲内にある場合、
前記仮想アドレスに対応する前記ページが物理メモリの中に存在しないこと、または、前記タスクが読み取り専用アクセス許可設定を伴ってメモリの中に存在するページに書き込もうとしていることを示すセグメンテーション違反を前記ＭＭＵによって生成することと、
前記アクセスキー値が０であること、または前記タスクが前記アクセスキーを使用して前記仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、
前記例外ハンドラを検証すると、前記ＭＭＵにおいて、前記仮想アドレスを備えているデータのページに関連付けられるネイティブ保護設定を変更し、前記仮想アドレスへのアクセスを可能にすることと、
続いて、前記命令を再試行し、前記ＭＭＵによって、前記タスクの前記命令が前記データのページ内の仮想アドレスにアクセスすることを可能にすることと
を含む、方法。
（項目２）
前記タスクは、前記プロセスの第２のタスクを備えている、項目１に記載の方法。
（項目３）
前記第１および第２のタスクに関連付けられたプレフィックスデータは、異なる物理アドレスの中であるが、同じ論理アドレスにおいて記憶される、項目２に記載の方法。
（項目４）
前記変更することは、対応するページテーブル項目のビット０の値を設定し、前記物理ページがメモリの中に存在していることを示すことを含む、項目１に記載の方法。
（項目５）
ＭＰＲＯＴＥＣＴ（）関数を呼び出し、前記ネイティブ保護設定を変更することをさらに含む、項目１に記載の方法。
（項目６）
コンピューティングシステムであって、前記コンピューティングシステムは、
保護キーメモリアクセス制御をサポートするように適合されていないプロセッサであって、前記プロセッサは、メモリ管理ユニット（ＭＭＵ）を含み、仮想メモリを管理するオペレーティングシステムを実行し、前記プロセッサは、ユーザプロセスおよびタスクを実行するように適合されている、プロセッサと、
命令を記憶している非一過性のメモリと
を備え、
前記命令は、前記プロセッサ上で実行されると、
プロセスに、仮想アドレスメモリの連続範囲と連続アドレス空間内の各４Ｋブロックへの記憶域キーとを割り当てることと、
前記プロセスにおける各タスクに記憶域アクセスキーを割り当てることと、
その割り当てられたアクセスキーを伴うタスクに仮想アドレスマッピングを割り当てることによって、特定のアクセスキーを使用してそのタスクの実行を開始することと、
仮想アドレスマッピングを前記割り当てられた記憶域キーのための前記タスクに割り当てることと、
前記タスクによる後続のメモリアクセスに応答して、前記後続のメモリアクセスが前記タスクによって以前に使用されたアクセスキーと異なるアクセスキーを使用する場合、前記タスクが前記異なるアクセスキーを使用する権限を与えられているかどうかを決定することと、前記第２のタスクが権限を与えられている場合、後続の仮想アドレスマッピングを前記タスクおよびキーに割り当てることと、
前記タスクによる記憶域を配分するコマンドまたは解放するコマンドに応答して、制御バイトを設定することであって、前記制御バイトを設定することは、前記記憶域キーデータと、各制御バイトに関連付けられるページが有効であるというインジケータとを設定することを含む、ことと、
前記アクセスキーを使用する前記タスクのコンピュータ命令の実行時、
前記タスクに関連付けられた前記アドレス空間内に仮想アドレスを生成することと、
前記第１のアドレスが前記第１のプロセスに関連付けられた前記アドレスの範囲内にあるかどうかを決定することと、
前記アドレスが前記第１のプロセスに関連付けられた前記アドレスの範囲内にある場合、
前記仮想アドレスに対応する前記ページが物理メモリの中に存在しないこと、または、前記タスクが読み取り専用アクセス許可設定を伴ってメモリの中に存在するページに書き込もうとしていることを示すセグメンテーション違反を前記ＭＭＵによって生成することと、
前記アクセスキー値が０であること、または前記タスクが前記アクセスキーを使用して前記仮想アドレスにアクセスする権限を与えられていることを例外ハンドラによって検証することと、
前記例外ハンドラを検証すると、前記ＭＭＵにおいて、ゲスト仮想アドレスを備えているデータのページに関連付けられたネイティブ保護設定を変更し、前記仮想アドレスへのアクセスを可能にすることと、
続いて、前記命令を再試行し、前記ＭＭＵによって、前記タスクの前記命令が前記データのページ内の仮想アドレスにアクセスする可能にすることと
を前記プロセッサに行わせる、コンピューティングシステム。
（項目７）
前記タスクは、前記プロセスの第２のタスクを備えている、項目６に記載のシステム。
（項目８）
前記第１および第２のタスクに関連付けられたプレフィックスデータは、異なる物理アドレスの中であるが、同じ論理アドレスにおいて記憶される、項目６に記載のシステム。
（項目９）
前記ネイティブ保護設定を変更することは、対応するページテーブル項目のビット０の値を設定し、前記物理ページがメモリの中に存在していることを示すことを含む、項目６に記載のシステム。
（項目１０）
前記ネイティブ保護設定を変更するように動作可能であるＭＰＲＯＴＥＣＴ（）関数を前記システムの前記オペレーティングシステムの中にさらに備えている、項目６に記載のシステム。