(57)【要約】  本出願は、カーネル空間及びユーザ空間のメモリ管理のための方法及びシステムを提供する。カーネル空間及びユーザ空間のメモリ管理のための例示的システムは、カーネル空間に対応する第１のルートページテーブルインデックスを保存するように構成された第１の記憶ユニットを含み得る。このシステムは、ユーザ空間に対応する第２のルートページテーブルインデックスを保存するように構成された第２の記憶ユニットも含み得る。このシステムは、第１のレジスタ及び第２のレジスタと通信可能に結合され、並びにオペレーティングシステムカーネルのために、第１のルートページテーブルインデックスに従って第１の仮想アドレスを第１の物理アドレスに変換し、及びユーザプロセスのために、第２のルートページテーブルインデックスに従って第２の仮想アドレスを第２の物理アドレスに変換するように構成された制御ユニットをさらに含み得る。
2020531951.tif 000002
【特許請求の範囲】
【請求項１】
カーネル空間及びユーザ空間のメモリ管理のためのシステムであって、
前記カーネル空間に対応する第１のルートページテーブルインデックスを保存するように構成された第１の記憶ユニットと、
前記ユーザ空間に対応する第２のルートページテーブルインデックスを保存するように構成された第２の記憶ユニットと、
前記第１の記憶ユニット及び前記第２の記憶ユニットと通信可能に結合され、並びに
オペレーティングシステムカーネルのために、前記第１のルートページテーブルインデックスに従って第１の仮想アドレスを第１の物理アドレスに変換すること、及び
ユーザプロセスのために、前記第２のルートページテーブルインデックスに従って第２の仮想アドレスを第２の物理アドレスに変換すること、
を行うように構成された制御ユニットと、
を含む、システム。
【請求項２】
前記カーネル空間及び前記ユーザ空間が、同じ物理メモリ空間に対応し、前記同じ物理メモリ空間が、物理メモリ空間全体又は前記物理メモリ空間全体の一部である、請求項１に記載のシステム。
【請求項３】
前記第１の仮想アドレスが、
第１のページディレクトリインデックス、第１のページテーブルインデックス、及び第１のページオフセット、又は
第１のページディレクトリインデックス及び第１のページオフセット、
を含み、並びに
前記第２の仮想アドレスが、
第２のページディレクトリインデックス、第２のページテーブルインデックス、及び第２のページオフセット、又は
第２のページディレクトリインデックス、第２のページテーブルインデックス、及び第２のページオフセット、
を含む、請求項１又は２に記載のシステム。
【請求項４】
前記制御ユニットが、前記第１の仮想アドレスを前記第１の物理アドレスに変換するように構成されることは、
前記第１のルートページテーブルインデックス及び前記第１のページディレクトリインデックスに従って第１のベースアドレスを取得することと、
前記第１のベースアドレス及び前記第１のページテーブルインデックスに従って第１のエントリアドレスを取得することと、
前記第１のエントリアドレスに従って第１の物理ページインデックスを取得することと、
前記第１の物理アドレスとなるように前記第１の物理ページインデックス及び前記第１のページオフセットを組み合わせることと、
を行うように構成されることを含む、請求項３に記載のシステム。
【請求項５】
前記制御ユニットが、前記第１の仮想アドレスを前記第１の物理アドレスに変換するように構成されることは、
前記カーネル空間のページサイズを示す第１のページサイズインジケータを取得することを行うように構成されることを含み、前記カーネル空間の前記ページサイズが、第１又は第２のカーネル空間ページサイズを含み、
前記第１のカーネル空間ページサイズを示す前記第１のページサイズインジケータに応答して、前記制御ユニットが、前記第１の仮想アドレスを前記第１の物理アドレスに変換するように構成されることは、
前記第１のルートページテーブルインデックス及び前記第１のページディレクトリインデックスに従って第１のベースアドレスを取得することと、
前記第１のベースアドレス及び前記第１のページテーブルインデックスに従って第１のエントリアドレスを取得することと、
前記第１のエントリアドレスに従って第１の物理ページインデックスを取得することと、
前記第１の物理アドレスとなるように前記第１の物理ページインデックス及び前記第１のページオフセットを組み合わせることと、
を行うように構成されることをさらに含む、請求項３に記載のシステム。
【請求項６】
前記第２のカーネル空間ページサイズを示す前記第１のページサイズインジケータに応答して、前記制御ユニットが、前記第１の仮想アドレスを前記第１の物理アドレスに変換するように構成されることは、
前記第１のルートページテーブルインデックス及び前記第１のページディレクトリインデックスに従って前記第１のエントリアドレスを取得することと、
第１のアドレスに従って前記第１の物理ページインデックスを取得することと、
前記第１の物理アドレスとなるように前記第１の物理ページインデックス及び前記第１のページオフセットを組み合わせることと、
を行うように構成されることをさらに含む、請求項５に記載のシステム。
【請求項７】
前記制御ユニットが、前記第１の仮想アドレスを前記第１の物理アドレスに変換するように構成されることは、
前記第１の物理アドレスのページが実行可能でないことを示す第１の実行不可インジケータを取得するように構成されることをさらに含む、請求項１〜６の何れか一項に記載のシステム。
【請求項８】
前記制御ユニットが、前記第２の仮想アドレスを前記第２の物理アドレスに変換するように構成されることは、
前記第２のルートページテーブルインデックス及び前記第２のページディレクトリインデックスに従って第２のベースアドレスを取得することと、
前記第２のベースアドレス及び前記第２のページテーブルインデックスに従って第２のエントリアドレスを取得することと、
前記第２のエントリアドレスに従って第２の物理ページインデックスを取得することと、
前記第２の物理アドレスとなるように前記第２の物理ページインデックス及び前記第２のページオフセットを組み合わせることと、
を行うように構成されることを含む、請求項３〜７の何れか一項に記載のシステム。
【請求項９】
前記制御ユニットが、前記第２の仮想アドレスを前記第２の物理アドレスに変換するように構成されることは、
前記ユーザ空間のページサイズを示す第２のページサイズインジケータを取得することことを行うように構成されることを含み、前記ユーザ空間の前記ページサイズが、第１又は第２のユーザ空間サイズを含み、
前記第１のユーザ空間サイズを示す前記第２のページサイズインジケータに応答して、前記制御ユニットが、前記第２の仮想アドレスを前記第２の物理アドレスに変換するように構成されることは、
前記第２のルートページテーブルインデックス及び前記第２のページディレクトリインデックスに従って第２のベースアドレスを取得することと、
前記第２のベースアドレス及び前記第２のページテーブルインデックスに従って第２のエントリアドレスを取得することと、
前記第２のエントリアドレスに従って第２の物理ページインデックスを取得することと、
前記第２の物理アドレスとなるように前記第２の物理ページインデックス及び前記第２のページオフセットを組み合わせることと、
を行うように構成されることをさらに含む、請求項３〜７の何れか一項に記載のシステム。
【請求項１０】
前記第２のユーザ空間サイズを示す前記第２のページサイズインジケータに応答して、前記制御ユニットが、前記第２の仮想アドレスを前記第２の物理アドレスに変換するように構成されることは、
前記第２のルートページテーブルインデックス及び前記第２のページディレクトリインデックスに従って前記第２のエントリアドレスを取得することと、
前記第２のエントリアドレスに従って前記第２の物理ページインデックスを取得することと、
前記第２の物理アドレスとなるように前記第２の物理ページインデックス及び前記第２のページオフセットを組み合わせることと、
を行うように構成されることをさらに含む、請求項９に記載のシステム。
【請求項１１】
前記制御ユニットが、前記第２の仮想アドレスを前記第２の物理アドレスに変換するように構成されることは、
前記第２の物理アドレスのページが実行可能でないことを示す第２の実行不可インジケータを取得するように構成されることをさらに含む、請求項１〜８の何れか一項に記載のシステム。
【請求項１２】
前記制御ユニットが、前記第１の仮想アドレスを前記第１の物理アドレスに変換するように構成されることは、
第１のユーザ空間アクセスインジケーションを取得することと、
前記第２のルートページテーブルインデックス及び前記第１のページディレクトリインデックスに従って、第２のベースアドレスを取得することと、
前記第２のベースアドレス及び前記第１のページテーブルインデックスに従って第２のエントリアドレスを取得することと、
前記第２のエントリアドレスに従って第２の物理ページインデックスを取得することと、
前記第２の物理アドレスとなるように前記第２の物理ページインデックス及び前記第１のページオフセットを組み合わせることと、
を行うように構成されることを含む、請求項３に記載のシステム。
【請求項１３】
前記制御ユニットが、前記第２の仮想アドレスを前記第２の物理アドレスに変換するように構成されることは、
第２のユーザ空間アクセスインジケーションを取得することと、
一般保護違反を設定することと、
を行うように構成されることを含む、請求項１〜８の何れか一項に記載のシステム。
【請求項１４】
前記制御ユニットが、前記第１の仮想アドレスを前記第１の物理アドレスに変換するように構成されることは、
前記第１の物理アドレスとなるように前記第１の仮想アドレスを直接変換するように構成されることを含む、請求項１〜３の何れか一項に記載のシステム。
【請求項１５】
前記制御ユニットが、前記第２の仮想アドレスを前記第２の物理アドレスに変換するように構成されることは、
前記第２の物理アドレスとなるように前記第２の仮想アドレスを直接変換するように構成されることを含む、請求項１〜８の何れか一項に記載のシステム。
【請求項１６】
カーネル空間及びユーザ空間のメモリ管理のための方法であって、
前記カーネル空間に対応する第１のルートページテーブルインデックスを取得することであって、前記第１のルートテーブルインデックスが、前記ユーザ空間に対応する第２のルートページテーブルインデックスとは異なる、取得することと、
オペレーティングシステムカーネルのために、前記第１のルートページテーブルインデックスに従って第１の仮想アドレスを第１の物理アドレスに変換することと、
を含む、方法。
【請求項１７】
前記カーネル空間及び前記ユーザ空間が、同じ物理メモリ空間に対応し、前記同じ物理メモリ空間が、物理メモリ空間全体又は前記物理メモリ空間全体の一部である、請求項１６に記載の方法。
【請求項１８】
前記第１の仮想アドレスが、
第１のページディレクトリインデックス、第１のページテーブルインデックス、及び第１のページオフセット、又は
第１のページディレクトリインデックス及び第１のページオフセット、
を含む、請求項１６又は１７に記載の方法。
【請求項１９】
前記第１の仮想アドレスを前記第１の物理アドレスに変換することが、
前記第１のルートページテーブルインデックス及び前記第１のページディレクトリインデックスに従って第１のベースアドレスを取得することと、
前記第１のベースアドレス及び前記第１のページテーブルインデックスに従って第１のエントリアドレスを取得することと、
前記第１のエントリに従って第１の物理ページインデックスを取得することと、
前記第１の物理アドレスとなるように前記第１の物理ページインデックス及び前記第１のページオフセットを組み合わせることと、
を含む、請求項１８に記載の方法。
【請求項２０】
前記第１の仮想アドレスを前記第１の物理アドレスに変換することが、
前記カーネル空間のページサイズを示す第１のページサイズインジケータを取得することを含み、前記カーネル空間の前記ページサイズが、第１又は第２のカーネル空間ページサイズを含み、
前記第１のカーネル空間ページサイズを示す前記第１のページサイズインジケータに応答して、前記第１の仮想アドレスを前記第１の物理アドレスに変換することが、
前記第１のルートページテーブルインデックス及び前記第１のページディレクトリインデックスに従って第１のベースアドレスを取得することと、
前記第１のベースアドレス及び前記第１のページテーブルインデックスに従って第１のエントリアドレスを取得することと、
前記第１のエントリアドレスに従って第１の物理ページインデックスを取得することと、
前記第１の物理アドレスとなるように前記第１の物理ページインデックス及び前記第１のページオフセットを組み合わせることと、
をさらに含む、請求項１８に記載の方法。
【請求項２１】
前記第２のカーネル空間ページサイズを示す前記第１のページサイズインジケータに応答して、前記第１の仮想アドレスを前記第１の物理アドレスに変換することが、
前記第１のルートページテーブルインデックス及び前記第１のページディレクトリインデックスに従って前記第１のエントリアドレスを取得することと、
前記第１のアドレスに従って前記第１の物理ページインデックスを取得することと、
前記第１の物理アドレスとなるように前記第１の物理ページインデックス及び前記第１のページオフセットを組み合わせることと、
を含む、請求項２０に記載の方法。
【請求項２２】
前記第１の仮想アドレスを前記第１の物理アドレスに変換することが、
前記第１の物理アドレスのページが実行可能でないことを示す第１の実行不可インジケータを取得することをさらに含む、請求項１６〜２１の何れか一項に記載の方法。
【請求項２３】
前記ユーザ空間に対応する前記第２のルートページテーブルインデックスを取得することと、
ユーザプロセスのために、前記第２のルートページテーブルインデックスに従って第２の仮想アドレスを第２の物理アドレスに変換することと、
をさらに含む、請求項１６〜２２の何れか一項に記載の方法。
【請求項２４】
前記第２の仮想アドレスが、
第２のページディレクトリインデックス、第２のページテーブルインデックス、及び第２のページオフセット、又は
第２のページディレクトリインデックス、第２のページテーブルインデックス、及び第２のページオフセット、
を含む、請求項１６〜２３の何れか一項に記載の方法。
【請求項２５】
前記第２の仮想アドレスを前記第２の物理アドレスに変換することが、
前記第２のルートページテーブルインデックス及び前記第２のページディレクトリインデックスに従って第２のベースアドレスを取得することと、
前記第２のベースアドレス及び前記第２のページテーブルインデックスに従って第２のエントリアドレスを取得することと、
前記第２のエントリアドレスに従って第２の物理ページインデックスを取得することと、
前記第２の物理アドレスとなるように前記第２の物理ページインデックス及び前記第２のページオフセットを組み合わせることと、
を含む、請求項２４に記載の方法。
【請求項２６】
前記第２の仮想アドレスを前記第２の物理アドレスに変換することが、
前記ユーザ空間のページサイズを示す第２のページサイズインジケータを取得することを含み、前記ユーザ空間の前記ページサイズが、第１又は第２のユーザ空間サイズを含み、
前記第１のユーザ空間サイズを示す前記第２のページサイズインジケータに応答して、前記第２の仮想アドレスを前記第２の物理アドレスに変換することが、
前記第２のルートページテーブルインデックス及び前記第２のページディレクトリインデックスに従って第２のベースアドレスを取得することと、
前記第２のベースアドレス及び前記第２のページテーブルインデックスに従って第２のエントリアドレスを取得することと、
前記第２のエントリアドレスに従って第２の物理ページインデックスを取得することと、
前記第２の物理アドレスとなるように前記第２の物理ページインデックス及び前記第２のページオフセットを組み合わせることと、
をさらに含む、請求項２４に記載の方法。
【請求項２７】
前記第２のユーザ空間サイズを示す前記第２のページサイズインジケータに応答して、前記第２の仮想アドレスを前記第２の物理アドレスに変換することが、
前記第２のルートページテーブルインデックス及び前記第２のページディレクトリインデックスに従って前記第２のエントリアドレスを取得することと、
前記第２のエントリアドレスに従って前記第２の物理ページインデックスを取得することと、
前記第２の物理アドレスとなるように前記第２の物理ページインデックス及び前記第２のページオフセットを組み合わせることと、
を含む、請求項２６に記載の方法。
【請求項２８】
前記第２の仮想アドレスを前記第２の物理アドレスに変換することが、
前記第２の物理アドレスのページが実行可能でないことを示す第２の実行不可インジケータを取得することをさらに含む、請求項２３〜２７の何れか一項に記載の方法。
【請求項２９】
前記第１の仮想アドレスを前記第１の物理アドレスに変換することが、
前記第１の物理アドレスとなるように前記第１の仮想アドレスを直接変換することを含む、請求項１６〜１８の何れか一項に記載の方法。
【請求項３０】
前記第２の仮想アドレスを前記第２の物理アドレスに変換することが、
前記第２の物理アドレスとなるように前記第２の仮想アドレスを直接変換することを含む、請求項２３、２４、又は２８の何れか一項に記載の方法。
【請求項３１】
前記第１の仮想アドレスが、
第１のページディレクトリインデックス、第１のページテーブルインデックス、及び第１のページオフセット、又は
第１のページディレクトリインデックス、及び第１のページオフセット、
を含み、
前記第２の仮想アドレスが、
第２のページディレクトリインデックス、第２のページテーブルインデックス、及び第２のページオフセット、又は
第２のページディレクトリインデックス、第２のページテーブルインデックス、及び第２のページオフセット、
を含み、並びに
前記第１の仮想アドレスを前記第１の物理アドレスに変換することが、
第１のユーザ空間アクセスインジケーションを取得することと、
前記第２のルートページテーブルインデックス及び前記第１のページディレクトリインデックスに従って第２のベースアドレスを取得することと、
前記第２のベースアドレス及び前記第１のページテーブルインデックスに従って第２のエントリアドレスを取得することと、
前記第２のエントリアドレスに従って第２の物理ページインデックスを取得することと、
前記第２の物理アドレスとなるように前記第２の物理ページインデックス及び前記第１のページオフセットを組み合わせることと、
を含む、請求項２３に記載の方法。
【請求項３２】
前記第２の仮想アドレスを前記第２の物理アドレスに変換することが、
第２のユーザ空間アクセスインジケーションを取得することと、
一般保護違反を設定することと、
を含む、請求項２３又は２４に記載の方法。
【請求項３３】
命令のセットを保存する非一時的コンピュータ可読媒体であって、前記命令のセットは、カーネル空間及びユーザ空間のメモリ管理のための方法を装置に行わせるために、前記装置の１つ又は複数のプロセッサによって実行可能であり、前記方法が、
前記カーネル空間に対応する第１のルートページテーブルインデックスを取得することであって、第１のルートテーブルインデックスが、前記ユーザ空間に対応する第２のルートページテーブルインデックスとは異なる、取得することと、
オペレーティングシステムカーネルのために、前記第１のルートページテーブルインデックスに従って第１の仮想アドレスを第１の物理アドレスに変換することと、
を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
[001]  本出願は、メモリ管理に関し、より詳細には、コンピュータにおけるカーネル空間及びユーザ空間のメモリ管理のための方法及びシステムに関する。
【背景技術】
【０００２】
背景
[002]  従来のコンピュータでは、メモリに保存された命令及び／又はデータは、仮想アドレスを使用してアドレス指定され得る。プロセスが命令及び／又はデータにアクセスする必要がある場合、仮想アドレスをメモリの物理アドレスに変換し、それに応じて命令及び／又はデータを取り出す必要がある場合がある。オペレーティングシステム（ＯＳ）カーネルは、仮想アドレスを物理アドレスに変換するための１つ又は複数のページテーブルを使用し得る。例えば、Linuxカーネルは、４キロバイト（ＫＢ）のページサイズを用いて、３２ビットの仮想アドレスを３２ビットの物理アドレスに変換するための３レベルページテーブルを使用し得る。
【０００３】
[003]  現在、ＯＳカーネルは、当該ＯＳカーネル（又は別のＯＳカーネル）及びユーザプロセスのために、仮想アドレスをカーネル空間及びユーザ空間にそれぞれ分けることができる。カーネル空間は、一般に、高い中央処理装置（ＣＰＵ）特権レベルで処理されるが、ユーザ空間は、低いＣＰＵ特権レベルで対処され得る。ＯＳカーネル及びユーザプロセスはそれぞれ、独自のルートページテーブルインデックスを有し得るが、それらは一般に、仮想−物理アドレスマッピングに関して同じページテーブルを共有する。しかし、このような設計は、メモリ空間を効率的に利用していない場合がある。さらに、セキュリティ上の懸念を生じ得る。例えば、攻撃者が、ＯＳカーネル及びユーザプロセス間の共通のページテーブルを用いて、ユーザ空間で悪意あるプログラムを実行するようにＯＳカーネルをだまし得る。また、別の態様では、一般的なページテーブルエントリは、３２ビットコンピュータシステムにおいてウイルス防護を強化するためのNo-eXcute（ＮＸ）ビットなどの新たなフィーチャのために利用可能な余裕がない場合がある。マルウェア、スパイウェア、及び／又はウイルスに対する防護を強化するために、カーネル空間及びユーザ空間のメモリ管理のための新しい方法及びシステムを持つことが望ましい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
概要
[004]  本開示の実施形態は、コンピュータ、装置、又はシステムにおけるカーネル空間及びユーザ空間のメモリ管理のための改良された方法及びシステムを提供する。
【課題を解決するための手段】
【０００５】
[005]  これらの実施形態は、カーネル空間及びユーザ空間のメモリ管理のためのシステムを含む。このシステムは、カーネル空間に対応する第１のルートページテーブルインデックスを保存するように構成された第１の記憶ユニットを含み得る。このシステムは、ユーザ空間に対応する第２のルートページテーブルインデックスを保存するように構成された第２の記憶ユニットも含み得る。このシステムは、第１のレジスタ及び第２のレジスタと通信可能に結合され、並びにオペレーティングシステムカーネルのために、第１のルートページテーブルインデックスに従って第１の仮想アドレスを第１の物理アドレスに変換し、及びユーザプロセスのために、第２のルートページテーブルインデックスに従って第２の仮想アドレスを第２の物理アドレスに変換するように構成された制御ユニットをさらに含み得る。
【０００６】
[006]  これらの実施形態は、カーネル空間及びユーザ空間のメモリ管理のための方法も含む。この方法は、カーネル空間に対応する第１のルートページテーブルインデックスを取得することを含み得る。この方法は、ユーザ空間に対応する第２のルートページテーブルインデックスを取得することも含み得る。この方法は、オペレーティングシステムカーネルのために、第１のルートページテーブルインデックスに従って第１の仮想アドレスを第１の物理アドレスに変換することをさらに含み得る。さらに、この方法は、ユーザプロセスのために、第２のルートページテーブルインデックスに従って第２の仮想アドレスを第２の物理アドレスに変換することを含み得る。
【０００７】
[007]  また、これらの実施形態は、命令を保存する非一時的コンピュータ可読媒体を含み、当該命令は、カーネル空間及びユーザ空間のメモリ管理のための方法を行うために装置の１つ又は複数のプロセッサによって実行可能である。この方法は、カーネル空間に対応する第１のルートページテーブルインデックスを取得することを含み得る。この方法は、ユーザ空間に対応する第２のルートページテーブルインデックスを取得することも含み得る。この方法は、オペレーティングシステムカーネルのために、第１のルートページテーブルインデックスに従って第１の仮想アドレスを第１の物理アドレスに変換することをさらに含み得る。さらに、この方法は、ユーザプロセスのために、第２のルートページテーブルインデックスに従って第２の仮想アドレスを第２の物理アドレスに変換することを含み得る。
【０００８】
[008]  開示した実施形態のさらなる目的及び利点は、一部は以下の説明に記載され、及び一部は、その説明から明らかとなり、又は実施形態の実施によって学ばれ得る。開示した実施形態の目的及び利点は、特許請求の範囲に記載した要素及び組み合わせによって実現及び達成され得る。
【０００９】
[009]  上述の概要及び以下の詳細な説明は、単なる例示及び説明のためのものであり、請求される本発明の制約ではないことが理解されるものとする。
【００１０】
図面の簡単な説明
[010]  これより、本開示の例示的実施形態を示す添付の図面に言及する。
【図面の簡単な説明】
【００１１】
【図１】[011]本開示の幾つかの実施形態による、カーネル空間及びユーザ空間のメモリ管理のための例示的コンピュータシステムのブロック図を示す。
【図２Ａ】[012]本開示の幾つかの実施形態による、カーネル空間のメモリ管理のための例示的方法の模式図である。
【図２Ｂ】[013]本開示の幾つかの実施形態による、カーネル空間の例示的なページマッピングの模式図である。
【図３Ａ】[014]本開示の幾つかの実施形態による、カーネル空間のメモリ管理のための例示的方法の模式図である。
【図３Ｂ】[015]本開示の幾つかの実施形態による、カーネル空間の例示的なページマッピングの模式図である。
【図４Ａ】[016]本開示の幾つかの実施形態による、ユーザ空間のメモリ管理のための例示的方法の模式図である。
【図４Ｂ】[017]本開示の幾つかの実施形態による、ユーザ空間の例示的なページマッピングの模式図である。
【図５Ａ】[018]本開示の幾つかの実施形態による、ユーザ空間のメモリ管理のための例示的方法の模式図である。
【図５Ｂ】[019]本開示の幾つかの実施形態による、ユーザ空間の例示的なページマッピングの模式図である。
【図６】[020]本開示の幾つかの実施形態による、例示的メモリ管理方法のフローチャートである。
【発明を実施するための形態】
【００１２】
詳細な説明
[021]  これより、例示的実施形態に詳細に言及し、それらの例を添付の図面に示す。以下の説明は、別段の表示がなければ、異なる図面の同一の番号が、同一又は類似の要素を表す添付の図面を参照する。例示的実施形態の以下の説明に記載する実施態様は、本発明に合致する全ての実施態様を表すわけではない。実際、それらは、添付の特許請求の範囲に記載されるような本発明に関する態様に合致した装置及び方法の単なる例である。
【００１３】
[022]  本開示の実施形態は、コンピュータ、装置、又はシステムにおけるカーネル空間及びユーザ空間のメモリ管理のための改良された方法及びシステムを提供する。本明細書に記載の実施形態は、カーネル空間及びユーザ空間のメモリ管理のためにそれぞれのルートページテーブルインデックスを保存するための専用レジスタをＯＳカーネル及びユーザプロセスにそれぞれ割り当てることができる。ＯＳカーネル及びユーザプロセスには、ページディレクトリ、ページテーブル、及び仮想−物理アドレスマッピングに関するページテーブルエントリもそれぞれ与えられる。ＯＳカーネル及びユーザプロセスの仮想−物理アドレスマッピングは、物理メモリ空間全体にそれぞれマッピングされ得る。例えば、ＯＳカーネル及びユーザプロセスは、３２ビットコンピュータシステムにおける４ギガバイト（ＧＢ）の物理メモリ空間全体に対応する４ＧＢのカーネル空間及びユーザ空間をそれぞれ有し得る。代替的に、ＯＳカーネル及びユーザプロセスの仮想−物理アドレスマッピングは、物理メモリ空間全体の一部にそれぞれマッピングされてもよい。例えば、ＯＳカーネル及びユーザプロセスは、６４ビットコンピュータシステムにおける１６エクサバイト（ＥＢ）（すなわち、１６×１０９ＧＢ）の物理メモリ空間全体の一部に対応する３２ＧＢのカーネル空間及びユーザ空間をそれぞれ有し得る。それによって、メモリ空間の使用を向上させ、且つ関連のセキュリティの脆弱性を除去することができる。
【００１４】
[023]  それに応じて、ＯＳカーネルは、ＯＳカーネル及びユーザプロセスに関してそれぞれ仮想アドレスを物理アドレスに変換することによって、マルウェア、スパイウェア、及び／又はウイルスから防護され得る。加えて、仮想アドレスから物理アドレスへのこれらの変換は、個別に行われるが、一般的なページテーブルエントリは、３２ビットコンピュータシステムにおいてウイルス防護を強化するためのNo-eXecute（ＮＸ）ビットなどの新たなフィーチャのために生み出された余裕を持ち得る。それに応じて、コンピュータシステムのセキュリティが強化及び向上され得る。
【００１５】
[024]  幾つかの実施形態によれば、本明細書に記載の動作、技術、及び／又はコンポーネントは、１つ又は複数の専用コンピューティングデバイスを含み得る電子デバイスによって実施され得る。専用コンピューティングデバイスは、本明細書に記載の動作、技術、及び／又はコンポーネントを行うために配線接続されてもよく、或いは本明細書に記載の動作、技術、及び／又はコンポーネントを行うために永続的にプログラム化された１つ又は複数の特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのデジタル電子デバイスを含んでもよく、或いはファームウェア、メモリ、他のストレージ、又は組み合わせにおけるプログラム命令に従って、本開示の上記機能を実現するようにプログラム化された１つ又は複数のハードウェアプロセッサを含んでもよい。このような専用コンピューティングデバイスは、本開示の技術及び他のフィーチャを達成するために、カスタムハードワイヤードロジック、ＡＳＩＣ、又はＦＰＧＡをカスタムプログラミングと組み合わせることもできる。専用コンピューティングデバイスは、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルドデバイス、ネットワーキングデバイス、又は本開示の技術及び他のフィーチャを実施するためにハードワイヤード及び／又はプログラムロジックを組み込むその他のデバイスでもよい。
【００１６】
[025]  １つ又は複数の専用コンピューティングデバイスは、一般に、iOS、Android（登録商標）、Blackberry（登録商標）、Chrome OS、Windows（登録商標） XP、Windows Vista、Windows 7、Windows 8、Windows Server、Windows CE、Unix（登録商標）、Linux（登録商標）、SunOS、Solaris、VxWorks、又は他の互換性があるオペレーティングシステムなどのオペレーティングシステムソフトウェアによって制御及び調整され得る。他の実施形態では、コンピューティングデバイスは、所有オペレーティングシステムによって制御され得る。オペレーティングシステムは、実行するコンピュータプロセスの制御及びスケジューリングを行い、メモリ管理を行い、ファイルシステム、ネットワーキング、Ｉ／Ｏサービスを提供し、並びに特にグラフィカルユーザインタフェース（「ＧＵＩ」）などのユーザインタフェース機能を提供する。
【００１７】
[026]  図１は、本開示の幾つかの実施形態による、カーネル空間及びユーザ空間のメモリ管理のための例示的コンピュータシステム１００のブロック図を示す。幾つかの実施形態では、コンピュータシステム１００は、メモリ１１０、プロセッサ１２０、ストレージ１３０、及び入出力（Ｉ／Ｏ）インタフェース１４０を含み得る。
【００１８】
[027]  メモリ１１０は、プロセッサ１２０が演算を行う必要があり得るあらゆるタイプの情報を保存するために設けられた適宜のタイプのマスストレージを含み得る。例えば、メモリ１１０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含んでもよく、及びコンピュータシステム１００のメインメモリとなるように構成されてもよい。幾つかの実施形態では、メモリ１１０は、揮発性若しくは不揮発性、磁気、半導体、テープ、光学式、取り外し可能、固定型、若しくは他のタイプのストレージデバイス、又は有形及び／又は非一時的コンピュータ可読媒体でもよい。非一時的媒体の一般的形態には、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、固体ドライブ、磁気テープ、又はその他の磁気データストレージ媒体、ＣＤ−ＲＯＭ、その他の光学式データストレージ媒体、孔のパターンを有した物理的媒体、ＲＡＭ、ＰＲＯＭ、及びＥＰＲＯＭ、ＦＬＡＳＨ (商標登録)−ＥＰＲＯＭ又はその他のフラッシュメモリ、ＮＶＲＡＭ、キャッシュ、その他のメモリチップ又はカートリッジ、並びに上記のネットワークバージョンが含まれる。
【００１９】
[028]  幾つかの実施形態では、メモリ１１０は、本出願で開示する例示的メモリ管理方法を行うためにプロセッサ１２０によって実行され得る１つ又は複数のコンピュータプログラムを保存するように構成され得る。例えば、メモリ１１０は、本開示に記載するようにメモリのカーネル空間及びユーザ空間を管理するためにプロセッサ１２０によって実行され得る１つ又は複数のプログラムを保存するように構成され得る。別の例として、メモリ１１０は、メモリ管理、プロセス管理、資源配分、Ｉ／Ｏデバイス管理、プロセス間通信、マルチタスクスケジューリング、システムコール及び割込み処理、並びにセキュリティ又は防護管理などのコンピュータシステム１００のシステム全体を動作させるために、プロセッサ１２０によって実行され得るＯＳカーネルを保存するように構成され得る。
【００２０】
[029]  幾つかの実施形態では、メモリ１１０は、プロセッサ１２０がアクセスする情報及びデータを保存するようにも構成され得る。例えば、メモリ１１０は、ユーザプロセスを実行する際にプロセッサ１２０がアクセスし得る音声、映像、又は文書データを保存するように構成され得る。幾つかの実施形態では、メモリ１１０が、プロセッサ１２０がアクセスしたいデータ又はプログラムを含まない可能性がある場合には、プロセッサ１２０によって実行されるＯＳカーネルが、メモリ１１０から外に幾つかのページを移動させ、及びストレージ１３０からメモリ１１０内に必要とされるデータ又はプログラムを移動させることができる。このプロシージャは、スワッピングと呼ばれる場合もあり、プロセッサ１２０にとって必要とされるデータ又はプログラムがメモリ１１０内で利用可能であることを確実にするために使用され得る。
【００２１】
[030]  物理アドレスは、メモリ１１０の位置を指す又はアドレス指定するメモリアドレスでよく、それに応じてプロセッサ１２０がメモリ１１０内のその位置にあるデータ又はプログラムにアクセスすることを可能にし得る。例えば、３２ビットのＯＳは、３２ビットのメモリアドレスを含み得る。３２ビットのメモリアドレスは、メモリ１１０の最大４ギガバイト（ＧＢ）を指し得る。
【００２２】
[031]  一方、仮想アドレスは、プロセスに関する仮想メモリを指す又はアドレス指定するメモリアドレスでよい。ＯＳカーネルは、ＯＳカーネル自体、別のＯＳカーネル、又は各ユーザプロセスなどの各プロセスに関する仮想メモリの生成及び管理を行い得る。仮想メモリにより、プロセスは、共有物理メモリ空間を管理する必要をなくすことができ、メモリの分離によるセキュリティの向上を得ることができ、及びページング技術を用いた場合に物理的に利用可能となり得るよりも多くのメモリを概念的に使用することができ得る。例えば、３２ビットのMicrosoft Windowsは、４ＧＢの仮想メモリを含み得る。３２ビットのWindowsの各プロセスは、それのメモリとして４ＧＢの仮想アドレス空間を使用し得る。各プロセスは、共有物理メモリ空間を管理する必要がなくてもよく、及び仮想アドレスから物理アドレスへの変換を管理する必要がなくてもよい。
【００２３】
[032]  幾つかのプロセスに関して、仮想アドレスは、メモリ１１０の物理アドレスにマッピングされ得る。代替的に、仮想アドレスは、メモリ１１０及び／又はストレージ１３０の物理アドレスにマッピングされ得る。ＯＳカーネルは、それのメモリ管理機能により、各プロセスに関する仮想アドレス及び物理アドレス間の変換を管理し得る。ＯＳカーネルは、各プロセスに関する仮想アドレスを対応する物理アドレスに変換するための１つ又は複数のページテーブルを生成することができる。例えば、ｘ８６中央処理装置（ＣＰＵ）上で走り、且つ４ＫＢのページサイズを使用する３２ビットのLinuxカーネルは、各プロセスに関して、それのメインメモリ内で３レベルページテーブル構造の生成及び管理を行い得る。３つのレベルは、ページディレクトリ、ページテーブル、及びページテーブルエントリのレベルを含み得る。ＯＳカーネルは、各プロセスに関するルートページテーブルインデックスを保持することができ、このようなルートページテーブルインデックス及び３レベルページテーブルを使用して、仮想アドレスをメモリ１１０の物理アドレスに変換することができる。
【００２４】
[033]  プロセッサ１２０は、マイクロプロセッサ、デジタル信号プロセッサ、コントローラ、又はマイクロコントローラを含み得る。プロセッサ１２０は、ＯＳカーネル及びユーザプロセスのためにカーネル空間及びユーザ空間をそれぞれ管理するように構成され得る。プロセッサ１２０は、図１に示すように、制御レジスタ１２２及び制御レジスタ１２４を含み得る。プロセッサ１２０は、制御レジスタ１２２内にカーネル空間に対応するルートページテーブルインデックスを保存するように構成され得る。カーネル空間に対応するルートページテーブルインデックスは、図２Ａに示すように、及び以下にさらに記載するように、仮想アドレスを物理アドレスに変換するためにＯＳカーネルに使用され得る。
【００２５】
[034]  プロセッサ１２０は、制御レジスタ１２４内にユーザ空間に対応する別のルートページテーブルインデックスを保存するように構成されてもよい。ユーザ空間に対応するルートページテーブルインデックスは、図３Ａに示すように、及び以下に記載するように、仮想アドレスを物理アドレスに変換するためにユーザプロセスに使用され得る。各ユーザプロセスは、ユーザ空間に対応するそれのルートページテーブルインデックスを有し得る。プロセッサ１２０は、プロセッサ１２０が別のユーザプロセスを実行するように構成され得る場合にはいつでも、別のルートページテーブルインデックスを用いて制御レジスタ１２４を更新するように構成され得る。
【００２６】
[035]  上記の通り、制御レジスタ１２２及び制御レジスタ１２４は、ＯＳカーネル及びユーザプロセスのルートページテーブルインデックスを保存するための記憶ユニットとなるように構成され得る。ＯＳカーネルに関して仮想アドレスから物理アドレスへの変換がある場合、制御レジスタ１２２は、ＯＳカーネルのルートページテーブルインデックスを保存するための記憶ユニットとして構成され得る。一方、ユーザプロセスに関して仮想アドレスから物理アドレスへの変換がある場合はいつでも、制御レジスタ１２４は、ユーザプロセスのルートページテーブルインデックスを保存するための記憶ユニットとして構成され得る。幾つかの実施形態では、制御レジスタ１２２は、ユーザプロセスのルートページテーブルインデックスを保存するように構成されなくてもよい。幾つかの実施形態では、制御レジスタ１２４は、ＯＳカーネルのルートページテーブルインデックスを保存するように構成されなくてもよい。
【００２７】
[036]  例えば、本開示による新たなプロセッサは、ＯＳカーネル及びユーザプロセスそれぞれのルートページテーブルインデックスを保存するためのＯＳカーネル用の制御レジスタ３（ＣＲ３Ｋ）及びユーザプロセス用の別の制御レジスタ３（ＣＲ３Ｕ）を含み得る。ＣＲ３Ｋ及びＣＲ３Ｕは、２つの別個のレジスタである。カーネルＯＳが起動すると、カーネルＯＳに関する仮想−物理マッピングを使用可能にする前に、ＣＰＵは、最初にページング使用不能モードで動作し得る。カーネル空間が物理メモリの空間全体にマッピングされ得るので、ＯＳカーネルは、カーネル空間からシステムの物理メモリへの１対１マッピングをセットアップし得る。例えば、３２ＧＢの物理メモリを有する６４ビットシステムでは、ＯＳカーネルは、その仮想アドレス空間の最初の３２ＧＢを３２ＧＢ物理メモリにマッピングし得る。初期化後に、ＯＳカーネルは、ＯＳカーネルのルートページテーブルインデックスをＣＲ３Ｋに書き込み、ＣＰＵをページング使用可能モードに切り替える。ＯＳカーネルは、仮想−物理アドレスマッピングの動作を開始する。
【００２８】
[037]  ＯＳカーネルは、各ユーザプロセスのページテーブルの管理及びセットアップを行う責任も負う。ユーザプロセスが開始されると、ＯＳカーネルは、ユーザプロセスに関するページディレクトリ、ページテーブル、及びページテーブルエントリをセットアップする。ユーザ空間も物理メモリの空間全体にマッピングされ得るので、ユーザプロセスは、柔軟性があり、且つ効率的な仮想−物理アドレスマッピングを有し得る。ユーザプロセスに関する初期化後に、ＯＳカーネルは、ユーザプロセスのルートページテーブルインデックスをＣＲ３Ｕに書き込むとともに、プロセスのタスク空間にそれを保存する。コンテクスト切換えがＯＳカーネルのスケジューラで生じると、別のユーザプロセスが、現在のユーザプロセスを置換する必要がある。ＣＰＵは、別のユーザプロセスのルートページテーブルインデックスを読み出すことができ、それをＣＲ３Ｕに書き込む。次いで、ＣＰＵは、別のユーザプロセスを実行するために切り替わる。
【００２９】
[038]  幾つかの実施形態では、ｘ８６ＣＰＵは、それの制御レジスタ３（ＣＲ３）にＯＳカーネルのルートページテーブルインデックスを保存するように構成され得る。また、ｘ８６ＣＰＵは、それの制御レジスタ４（ＣＲ４）にユーザプロセスのルートページテーブルインデックスを保存するように構成されてもよい。
【００３０】
[039]  代替的に、コンピュータシステム１００内であるが、プロセッサ１２０の外にある２つの記憶ユニット（不図示）が、ＯＳカーネル及びユーザプロセスそれぞれに関する仮想アドレスを物理アドレスに変換するためのＯＳカーネル及びユーザプロセスのルートページテーブルインデックスを保存するように構成され得る。例えば、キャッシュの２つの３２ビット空間が、Linuxカーネル及びユーザプロセスのルートページテーブルインデックスを保存するための２つの記憶ユニットとなるように構成されてもよい。別の例として、メモリ１１０の２つの３２ビット空間が、Linuxカーネル及びユーザプロセスのルートページテーブルインデックスを保存するための記憶ユニットとなるように構成されてもよい。幾つかの実施形態では、コンピュータシステム１００内であるが、プロセッサ１２０の外にある２つの記憶ユニット（不図示）の一方が、ＯＳカーネル又はユーザプロセスに関する仮想アドレスを物理アドレスに変換するためのＯＳカーネル又はユーザプロセスのルートページテーブルインデックスを保存するように構成され得る。他方の記憶ユニットは、プロセッサ１２０における制御レジスタでもよい。例えば、制御レジスタ１２２は、Linuxカーネルのルートページテーブルインデックスを保存するように構成され得るが、メモリ１１０の３２ビット空間は、ユーザプロセスのルートページテーブルインデックスを保存するように構成され得る。
【００３１】
[040]  プロセッサ１２０は、ＯＳカーネル及び／又はユーザプロセスに関して本開示全体のメモリ管理を行うためのメモリ管理ユニットを含み得る。
【００３２】
[041]  ストレージ１３０は、プロセッサ１２０が演算を行う必要があり得るあらゆるタイプの情報を保存するために設けられた適宜のタイプのマスストレージを含み得る。ストレージ１３０は、揮発性若しくは不揮発性、磁気、半導体、テープ、光学式、取り外し可能、固定型、若しくは他のタイプのストレージデバイス、又は有形及び／又は非一時的コンピュータ可読媒体でもよい。ストレージ１３０は、本出願で開示する例示的メモリ管理方法を行うためにプロセッサ１２０によって実行され得る１つ又は複数のコンピュータプログラムを保存するように構成され得る。例えば、ストレージ１３０は、上記のように、ＯＳカーネル及びユーザプロセスに関して仮想アドレスを物理アドレスに変換するためにプロセッサ１２０によって実行され得る１つ又は複数のプログラムを保存するように構成され得る。
【００３３】
[042]  ストレージ１３０は、プロセッサ１２０によって使用される情報及びデータを保存するようにさらに構成され得る。例えば、ストレージ１３０は、メモリ１１０が保存できない可能性があるデータを保存するように構成され得る。メモリ１１０が一杯になった場合、メモリ１１０内の一部のデータが、ストレージ１３０へとスワッピングされ得る。
【００３４】
[043]  Ｉ／Ｏインタフェース１４０は、コンピュータシステム１００と他の装置との間の通信を容易にするように構成され得る。例えば、Ｉ／Ｏインタフェース１４０は、別の装置、例えば別のコンピュータからデータ又は命令を受信するように構成され得る。Ｉ／Ｏインタフェース１４０は、他の装置、例えばラップトップコンピュータ又はスピーカにデータ又は命令を出力するようにも構成され得る。
【００３５】
[044]  プロセッサ１２０は、カーネル空間及びユーザ空間のメモリ管理のためのそれぞれのルートページテーブルインデックスを保存するための専用レジスタＣＲ３Ｋ及びＣＲ３ＵをＯＳカーネル及びユーザプロセスにそれぞれ割り当てるように構成され得る。プロセッサ１２０は、ＯＳカーネル及びユーザプロセスに関するページディレクトリ、ページテーブル、及びページテーブルエントリをそれぞれ構築し、及び取り出すようにも構成され得る。専用ＣＲ３Ｋ及びＣＲ３Ｕと、各ページテーブルとを用いて、プロセッサ１２０は、カーネル空間及びユーザ空間を物理メモリ空間全体にマッピングするように構成され得る。例えば、プロセッサ１２０は、カーネル空間及びユーザ空間の両方を３２ビットシステムの４ＧＢの物理メモリ空間全体にマッピングするように構成され得る。つまり、カーネル空間及びユーザ空間は共に、４ＧＢの空間である。代替的に、プロセッサ１２０は、カーネル空間及びユーザ空間を物理メモリ空間全体の一部にマッピングするように構成され得る。例えば、プロセッサ１２０は、６４ビットコンピュータシステムにおける１６エクサバイト（ＥＢ）（すなわち、１６×１０９ＧＢ）の物理メモリ空間全体の一部に対応する３２ＧＢのカーネル空間及びユーザ空間をマッピングするように構成され得る。
【００３６】
[045]  プロセッサ１２０は、仮想−物理アドレスマッピングのためにＯＳカーネル又はユーザプロセスから仮想アドレスを取得するように構成され得る。ＯＳカーネルから仮想アドレスを取得した後に、プロセッサ１２０は、デフォルト結果としてカーネル空間にアクセスすることを決定するように構成され得る。ユーザプロセスから仮想アドレスを取得した後に、プロセッサ１２０は、デフォルト結果としてユーザ空間にアクセスすることを決定するように構成され得る。幾つかの実施形態では、プロセッサ１２０は、ＯＳカーネルのために、ユーザ空間アクセスインジケーションを取得するように構成され得る。ＯＳカーネルからユーザ空間アクセスインジケーションを取得した後に、プロセッサ１２０は、ユーザ空間にアクセスすることを決定するように構成され得る。
【００３７】
[046]  図２Ａ及び２Ｂは、本開示の幾つかの実施形態による、カーネル空間のメモリ管理の例示的方法、及び例示的な対応するページマッピングの模式図である。ＯＳカーネルに関する仮想アドレスは、ページディレクトリインデックス、ページテーブルインデックス、及びページオフセットを含み得る。例えば、図２Ａに示すように、３２ビットのＯＳカーネルに関する仮想アドレス２７０は、ページディレクトリインデックス２７１、ページテーブルインデックス２７２、及びページオフセット２７３を含み得る。
【００３８】
[047]  ページディレクトリインデックス２７１は、ページディレクトリのインデックスでよく、ページテーブルのベースアドレスを含み得るページディレクトリを指すルートアドレスと共に使用され得る。図２Ａでは、制御レジスタ１２２が、例えば、ＯＳカーネルに関するルートページテーブルインデックスをルートアドレス２１０として保存し得る。ページディレクトリインデックス２７１は、ページテーブル２４０のベースアドレス２３０を含むページディレクトリ（ＰＤ）２２３を指すルートアドレス２１０と共に使用され得る。
【００３９】
[048]  ページテーブルインデックス２７２は、ページテーブルのインデックスでよく、ページテーブルエントリのエントリアドレスを含み得るページテーブル（ＰＴ）を指すベースアドレス２３０と共に使用され得る。例えば、ページテーブルインデックス２７２は、図２Ａに示すように、ページテーブルエントリ２６０のエントリアドレス２５０を含み得るページテーブル２４２を指すベースアドレス２３０と共に使用され得る。
【００４０】
[049]  ページオフセット２７３は、ページのオフセットでよく、変換された物理アドレスにおいてページオフセットとして使用され得る。例えば、仮想アドレス２７０のページオフセット２７３は、図２Ａに示すように、物理アドレス２９０のページオフセット２９３としてそのまま使用され得る。
【００４１】
[050]  ＯＳカーネルに関して仮想アドレスを物理アドレスに変換するために、プロセッサ１２０は、記憶ユニットにＯＳカーネルのルートページテーブルインデックスを保存するように構成され得る。例えば、プロセッサ１２０は、Linuxカーネルに関するルートページテーブルインデックスを制御レジスタ１２２に保存するように構成され得る。プロセッサ１２０は、図２Ａに示すように、ページディレクトリ２２０において、ある位置（例えばページディレクトリ２２１）を指すルートアドレス２１０として、保存されたルートページテーブルインデックスを使用するように構成され得る。プロセッサ１２０は、制御レジスタ１２２に保存されたルートページテーブルインデックスをページディレクトリインデックス２７１と組み合わせることによって、ページテーブルのベースアドレスを含み得るページディレクトリを見つけ出すようにも構成され得る。例えば、プロセッサ１２０は、図２Ｂに示すように、ルートアドレス２１０を仮想アドレス２７０のページディレクトリインデックス２７１と組み合わせることによって、ページディレクトリ２２３を見つけ出すように構成され得る。つまり、プロセッサ１２０は、図２Ａ及び２Ｂに示すように、ページディレクトリ２２０における開始位置としてページディレクトリ２２１を使用し、及びページディレクトリインデックス２７１をオフセットとして使用することによって、ページディレクトリ２２３を見つけ出すように構成される。
【００４２】
[051]  ページディレクトリ２２３は、３レベルページテーブル構造の次のレベルであるページテーブルのベースアドレスを指すベースアドレスを含み得る。図２Ｂに示すように、ページディレクトリ２２３は、３レベルページテーブルの次のレベルのページテーブルを指す４ＫＢのベースアドレス２２３−１を含む。プロセッサ１２０は、図２Ａに示すように、ページディレクトリ２２３のコンテンツを読み出すことによって、ページテーブル２４０内のページテーブル２４１を指すベースアドレス２３０を取得するようにさらに構成され得る。
【００４３】
[052]  プロセッサ１２０は、見つけ出されたページディレクトリ２２３に保存されたベースアドレスをページテーブルインデックス２７２と組み合わせることによって、ページテーブルエントリのエントリアドレスを含むページテーブルを見つけ出すようにも構成され得る。例えば、プロセッサ１２０は、図２Ｂに示すように、ベースアドレス２３０（すなわち、４ＫＢのベースアドレス２２３−１）を仮想アドレス２７０のページテーブルインデックス２７２と組み合わせることによって、ページテーブル２４２を見つけ出すように構成され得る。つまり、プロセッサ１２０は、図２Ａ及び２Ｂに示すように、ページテーブル２４０における開始位置としてページテーブル２４１を使用し、及びページテーブルインデックス２７２をオフセットとして使用することによって、ページテーブル２４２を見つけ出すように構成される。
【００４４】
[053]  ページテーブル２４２は、３レベルページテーブル構造における次のレベルであるページテーブルエントリ中のある位置を指すエントリアドレスを含み得る。図２Ｂに示すように、ページテーブル２４２は、３レベルページテーブルの次のレベルのページテーブルエントリを指す４ＫＢのエントリアドレス２４２−１を含む。プロセッサ１２０は、図２Ａに示すように、ページテーブル２４２のコンテンツを読み出すことによって、ページテーブルエントリ２６０のページテーブルエントリ２６２を指すエントリアドレス２５０を取得するように構成され得る。
【００４５】
[054]  プロセッサ１２０は、ページテーブルエントリ２６２のコンテンツを読み出すことによって、物理ページインデックスを取得するようにさらに構成され得る。図２Ｂに示すように、ページテーブルエントリ２６２は、４ＫＢの物理ページインデックス２６２−１及びページ属性２６２−２を含む。エントリアドレス２５０に従って、プロセッサ１２０は、図２Ａ及び２Ｂに示すように、物理ページインデックス２９１となるページテーブルエントリ２６２の４ＫＢの物理ページインデックス２６２−１を読み出すように構成され得る。
【００４６】
[055]  プロセッサ１２０は、ＯＳカーネルに関する物理アドレスとなるように、物理ページインデックス及びページオフセットを組み合わせるようにさらに構成され得る。例えば、プロセッサ１２０は、ＯＳカーネルに関する物理アドレス２９０となるように、取得された物理ページインデックス２９１（すなわち、４ＫＢの物理ページインデックス２６２−１）及びページオフセット２９３（すなわち、ページオフセット２７３）を組み合わせるように構成され得る。それに応じて、プロセッサ１２０は、変換された物理アドレス２９０でメモリ１１０にアクセスすることにより、ＯＳカーネルに関する必要とされるデータ又は命令を取得するように構成され得る。
【００４７】
[056]  幾つかの実施形態では、プロセッサ１２０は、カーネル空間のページサイズ又はカーネル空間ページサイズを示すページサイズインジケータを取得するように構成され得る。図２Ｂに示すように、ページテーブルエントリ２６２は、ページ属性２６２−２を含む。プロセッサ１２０は、ページテーブルエントリ２６２におけるページ属性２６２−２を読み出すように構成され得る。ページ属性２６２−２は、カーネル空間のページサイズを示すビット（例えば、ビット７）を含み得る。例えば、ページ属性２６２−２のビット７が「１」である場合、カーネル空間のページサイズは、４ＫＢでもよい。ページ属性２６２−２のビット７が「０」である場合、カーネル空間のページサイズは、４メガバイト（ＭＢ）でもよい。
【００４８】
[057]  カーネル空間が第１のページサイズを含むことをページサイズインジケータが示す場合、プロセッサ１２０は、上記のように、仮想アドレスを物理アドレスに変換するように構成され得る。例えば、ページ属性２６２−２のビット７が、カーネル空間の４ＫＢのページサイズを示す「１」である場合、プロセッサ１２０は、上記のように、並びに図２Ａ及び２Ｂに示すように、仮想アドレス２７０を物理アドレス２９０に変換するように構成され得る。ページ属性２６２−２のビット７が、カーネル空間の４ＭＢのページサイズを示す「０」である場合、プロセッサ１２０は、以下に記載するように、並びに図３Ａ及び３Ｂに示すように、仮想アドレス３７０を物理アドレス３９０に変換するように構成され得る。
【００４９】
[058]  カーネル空間のページサイズを示すビットは、ページディレクトリ又はページテーブルの１つに含まれてもよい。例えば、ページサイズビットは、図２Ｂのページディレクトリ２２３の予約フィールド２２３−２又はページテーブル２４２の予約フィールド２４２−２に含まれ得る。例えば、予約フィールド２４２−２のビット７が、ページサイズビットとして使用され得る。プロセッサ１２０は、予約フィールド２４２−２のビット７を読み出し、それに応じてカーネル空間のページサイズを取得するように構成され得る。
【００５０】
[059]  図２Ｂを参照すると、ページテーブルエントリ２６２は、物理ページインデックス２６２−１及びページ属性２６２−２を含む。プロセッサ１２０は、上記のように仮想アドレスを物理アドレスに変換するために物理ページインデックス２６２−１を使用するように構成され得る。物理ページインデックス２６２−１は、例えば、３２ビットコンピュータシステムのカーネル空間において４ＫＢのページをアドレス指定するためのページテーブルエントリ２６２の最上位ビット（ＭＳＢ）の２０ビットを含み得る。
【００５１】
[060]  ページ属性２６２−２は、例えば、３２ビットコンピュータシステムにおけるページテーブルエントリ２６２の最下位ビット（ＬＳＢ）の１２ビットを含み得る。ページ属性２６２−２のこれらの１２ビットは、変換された物理アドレスのページの属性を示すように構成され得る。例えば、ページ属性２６２−２のビット７は、カーネル空間のページサイズを示すように構成され得る。例えば、上記のように、ページ属性２６２−２のビット７が「１」である場合、カーネル空間のページサイズは、４ＫＢとなるように構成され得る。ページ属性２６２−２のビット７が「０」である場合、カーネル空間のページサイズは、４ＭＢとなるように構成され得る。プロセッサ１２０は、上記のように、ページ属性２６２−２のビット７に応じて、仮想アドレスを物理アドレスに変換するように構成され得る。
【００５２】
[061]  ３種類以上のページサイズが必要とされる場合、ページ属性２６２−２は、カーネル空間のページサイズを示す２ビット（例えば、ビット９及びビット７）を含み得る。図面では、未使用と示されているが、このような使用のために、ページ属性２６２−２のビット９がさらに構成され得る。例えば、ページ属性２６２−２のビット９及びビット７が「１１」である場合、カーネル空間のページサイズは、４ＫＢでもよい。ページ属性２６２−２のビット９及びビット７が「１０」である場合、カーネル空間のページサイズは、４ＭＢでもよい。ページ属性２６２−２のビット９及びビット７が「０１」である場合、カーネル空間のページサイズは、１６ＭＢでもよい。ページ属性２６２−２のビット９及びビット７が「００」である場合、カーネル空間のページサイズは、６４ＭＢでもよい。プロセッサ１２０は、上記に類似したページ属性２６２−２のビット９及びビット７に応じて仮想アドレスを物理アドレスに変換するように構成され得る。
【００５３】
[062]  また、ページ属性２６２−２は、変換された物理アドレスのページが実行不可であることを示すＮＸインジケータ（例えば、ビット２）を含み得る。例えば、ページ属性２６２−２のビット２が「１」である場合、変換された物理アドレス２９０のページは、実行可能でなくてもよい。プロセッサ１２０は、上記のようにページ属性２６２−２のビット２に応じて、変換された物理アドレス２９０のページを実行しないように、又はそのページにアクセスしないように構成され得る。
【００５４】
[063]  カーネル空間のページサイズを示すビットは、ページディレクトリ又はページテーブルの１つに含まれてもよい。例えば、ページサイズビットが、図２Ｂのページディレクトリ２２３の予約フィールド２２３−２又はページテーブル２４２の予約フィールド２４２−２に含まれ得る。例えば、予約フィールド２４２−２のビット７が、ページサイズビットとして使用され得る。プロセッサ１２０は、予約フィールド２４２−２のビット７を読み出し、それに応じてカーネル空間のページサイズを取得するように構成され得る。
【００５５】
[064]  ページサイズを示すビットに類似して、ＮＸインジケータは、ページディレクトリ又はページテーブルの１つに含まれてもよい。例えば、ＮＸビットは、図２Ｂのページディレクトリ２２３の予約フィールド２２３−２又はページテーブル２４２の予約フィールド２４２−２に含まれ得る。プロセッサ１２０は、それに応じて変換された物理アドレスのページに関するＮＸビットを読み出すように構成され得る。
【００５６】
[065]  幾つかの実施形態では、プロセッサ１２０は、仮想アドレスを物理アドレスに直接変換するように構成され得る。つまり、仮想アドレスは、物理アドレスと同一である。例えば、図２Ａの仮想アドレス２７０は、図に示されるようにページディレクトリ２２０、ページテーブル２４０、及びページテーブルエントリ２６０を通して変換されることなく、直接物理アドレス２９０となるように変換され得る。仮想アドレスから物理アドレスへの直接変換は、ＯＳカーネルがメモリ１１０に素早く且つ効率的にアクセスする助けとなり得る。
【００５７】
[066]  カーネル空間が第２のページサイズを含むことをページサイズインジケータが示す場合、プロセッサ１２０は、図３Ａ及び３Ｂに示すように、仮想アドレスを物理アドレスに変換するように構成され得る。例えば、図３Ｂのページ属性３６２−２のビット７が、カーネル空間の４ＭＢのページサイズを示す「０」である場合に、プロセッサ１２０は、図３Ａに示すように、ページディレクトリ３２０及びページテーブルエントリ３６０を含む２レベルページテーブルを通して、仮想アドレス３７０を物理アドレス３９０に変換するように構成され得る。
【００５８】
[067]  図３Ａ及び３Ｂは、本開示の幾つかの実施形態による、カーネル空間のメモリ管理の例示的方法、及び例示的な対応するページマッピングの模式図である。ＯＳカーネルに関する仮想アドレスは、ページディレクトリインデックス及びページオフセットを含み得る。例えば、図３Ａに示すように、３２ビットのＯＳカーネルに関する仮想アドレス３７０は、ページディレクトリインデックス３７１及びページオフセット３７３を含み得る。
【００５９】
[068]  ページディレクトリインデックス３７１は、ページディレクトリのインデックスでよく、ページテーブルエントリのエントリアドレスを含み得るページディレクトリを指すルートアドレスと共に使用され得る。図３Ａでは、制御レジスタ１２２は、例えば、ルートアドレス３１０としてＯＳカーネルに関するルートページテーブルインデックスを保存するように構成され得る。ページディレクトリインデックス３７１は、ページテーブルエントリ３６０のエントリアドレス３５０を含むページディレクトリ（ＰＤ）３２３を指すルートアドレス３１０と共に使用され得る。
【００６０】
[069]  ページオフセット３７３は、ページのオフセットでよく、変換された物理アドレスにおいてページオフセットとして使用され得る。例えば、仮想アドレス３７０のページオフセット３７３は、図３Ａに示すように、物理アドレス３９０のページオフセット３９３としてそのまま使用され得る。
【００６１】
[070]  ＯＳカーネルに関して仮想アドレスを物理アドレスに変換するために、プロセッサ１２０は、記憶ユニットにＯＳカーネルのルートページテーブルインデックスを保存するように構成され得る。例えば、プロセッサ１２０は、図３Ａにおいて、Linuxカーネルに関するルートページテーブルインデックスを制御レジスタ１２２に保存するように構成され得る。プロセッサ１２０は、図３Ａに示すように、ページディレクトリ３２０において、ある位置（例えばページディレクトリ３２１）を指すルートアドレス３１０として、保存されたルートページテーブルインデックスを使用するように構成され得る。プロセッサ１２０は、制御レジスタ１２２に保存されたルートページテーブルインデックスをページディレクトリインデックス３７１と組み合わせることによって、ページテーブルのエントリアドレスを含むページディレクトリを見つけ出すようにも構成され得る。例えば、プロセッサ１２０は、図３Ｂに示すように、ルートアドレス３１０を仮想アドレス３７０のページディレクトリインデックス３７１と組み合わせることによって、ページディレクトリ３２３を見つけ出すように構成され得る。つまり、プロセッサ１２０は、図３Ａ及び３Ｂに示すように、ページディレクトリ３２０における開始位置としてページディレクトリ３２１を使用し、及びページディレクトリインデックス３７１をオフセットとして使用することによって、ページディレクトリ３２３を見つけ出すように構成される。
【００６２】
[071]  ページディレクトリ３２３は、２レベルページテーブル構造の次のレベルであるページテーブルエントリ中のある位置を指すエントリアドレスを含み得る。図３Ｂに示すように、ページディレクトリ３２３は、２レベルページテーブルの次のレベルのページテーブルエントリを指す４ＭＢのエントリアドレス３２３−１を含む。プロセッサ１２０は、図３Ａに示すように、ページディレクトリ３２３のコンテンツを読み出すことによって、ページテーブルエントリ３６０のページテーブルエントリ３６２を指すエントリアドレス３５０を取得するように構成され得る。
【００６３】
[072]  プロセッサ１２０は、ページテーブルエントリ３６２のコンテンツを読み出すことによって、物理ページインデックスを取得するようにも構成され得る。図３Ｂに示すように、ページテーブルエントリ３６２は、４ＭＢの物理ページインデックス３６２−１、ページ属性３６２−２、及び予約フィールド３６２−３を含む。エントリアドレス３５０に従って、プロセッサ１２０は、図３Ａ及び３Ｂに示すように、物理ページインデックス３９１となるページテーブルエントリ３６２の４ＭＢの物理ページインデックス３６２−１を読み出すように構成され得る。
【００６４】
[073]  プロセッサ１２０は、ＯＳカーネルに関する物理アドレスとなるように、物理ページインデックス及びページオフセットを組み合わせるようにさらに構成され得る。例えば、プロセッサ１２０は、ＯＳカーネルに関する物理アドレス３９０となるように、取得された物理ページインデックス３９１（すなわち、４ＭＢの物理ページインデックス３６２−１）及びページオフセット３９３（すなわち、ページオフセット３７３）を組み合わせるように構成され得る。それに応じて、プロセッサ１２０は、変換された物理アドレス３９０でメモリ１１０にアクセスすることにより、ＯＳカーネルに関する必要とされるデータ又は命令を取得するように構成され得る。
【００６５】
[074]  図３Ｂを参照すると、ページテーブルエントリ３６２は、物理ページインデックス３６２−１及びページ属性３６２−２を含む。プロセッサ１２０は、上記のように仮想アドレスを物理アドレスに変換するために物理ページインデックス３６２−１を使用するように構成され得る。物理ページインデックス３６２−１は、例えば、３２ビットコンピュータシステムのカーネル空間において４ＭＢのページをアドレス指定するためのページテーブルエントリ３６２の最上位ビット（ＭＳＢ）の１０ビットを含み得る。
【００６６】
[075]  ページ属性３６２−２は、例えば、３２ビットコンピュータシステムにおけるページテーブルエントリ３６２の最下位ビット（ＬＳＢ）の１２ビットを含み得る。ページ属性３６２−２のこれらの１２ビットは、変換された物理アドレスのページの属性を示すように構成され得る。例えば、ページ属性３６２−２のビット７は、カーネル空間のページサイズを示すように構成され得る。例えば、上記のように、ページ属性３６２−２のビット７が「０」である場合、カーネル空間のページサイズは、４ＭＢとなるように構成され得る。ページ属性３６２−２のビット７が「０」である場合、カーネル空間のページサイズは、４ＫＢとなるように構成され得る。プロセッサ１２０は、上記のように、ページ属性３６２−２のビット７に応じて、仮想アドレスを物理アドレスに変換するように構成され得る。
【００６７】
[076]  ３種類以上のページサイズが必要とされる場合、ページ属性３６２−２は、カーネル空間のページサイズを示す２ビット（例えば、ビット９及びビット７）を含み得る。図面では、未使用と示されているが、このような使用のために、ページ属性３６２−２のビット９がさらに構成され得る。例えば、ページ属性３６２−２のビット９及びビット７が「１１」である場合、カーネル空間のページサイズは、４ＫＢでもよい。ページ属性３６２−２のビット９及びビット７が「１０」である場合、カーネル空間のページサイズは、４ＭＢでもよい。ページ属性３６２−２のビット９及びビット７が「０１」である場合、カーネル空間のページサイズは、１６ＭＢでもよい。ページ属性３６２−２のビット９及びビット７が「００」である場合、カーネル空間のページサイズは、６４ＭＢでもよい。プロセッサ１２０は、上記に類似したページ属性３６２−２のビット９及びビット７に応じて仮想アドレスを物理アドレスに変換するように構成され得る。
【００６８】
[077]  また、ページ属性３６２−２は、変換された物理アドレスのページが実行不可であることを示すＮＸインジケータ（例えば、ビット２）を含み得る。例えば、ページ属性３６２−２のビット２が「１」である場合、変換された物理アドレス３９０のページは、実行可能でなくてもよい。プロセッサ１２０は、上記のようにページ属性３６２−２のビット２に応じて、変換された物理アドレス３９０のページを実行しないように、又はそのページにアクセスしないように構成され得る。
【００６９】
[078]  代替的に、カーネル空間のページサイズを示すビットは、ページディレクトリ又はページテーブルエントリの１つに含まれてもよい。例えば、ページサイズビットが、図３Ｂのページディレクトリ３２３の予約フィールド３２３−２又はページテーブルエントリ３６２の予約フィールド３６２−２に含まれ得る。例えば、予約フィールド３２３−２のビット７が、ページサイズビットとして使用され得る。プロセッサ１２０は、予約フィールド３２３−２のビット７を読み出し、それに応じてカーネル空間のページサイズを取得するように構成され得る。
【００７０】
[079]  ページサイズを示すビットに類似して、ＮＸインジケータは、ページディレクトリ又はページテーブルエントリの１つに含まれてもよい。例えば、ＮＸビットは、図３Ｂのページディレクトリ３２３の予約フィールド３２３−２又はページテーブルエントリ３６２の予約フィールド３６２−２に含まれ得る。それに応じて、プロセッサ１２０は、変換された物理アドレスのページに関するＮＸビットを読み出すように構成され得る。実行不可インジケータは、ＯＳカーネルが、変換された物理アドレスのページにおいて悪意のあるコード又はウイルスを実行することを阻止する助けとなり得る。
【００７１】
[080]  幾つかの実施形態では、プロセッサ１２０は、仮想アドレスを物理アドレスに直接変換するように構成され得る。つまり、仮想アドレスは、物理アドレスと同一である。例えば、図３Ａの仮想アドレス３７０は、図に示されるようにページディレクトリ３２０及びページテーブルエントリ３６０を通して変換されることなく、直接物理アドレス３９０となるように変換され得る。仮想アドレスから物理アドレスへの直接変換は、ＯＳカーネルがメモリ１１０に素早く且つ効率的にアクセスする助けとなり得る。
【００７２】
[081]  ユーザプロセスに関して、プロセッサ１２０は、制御レジスタ１２４に保存されたルートページテーブルインデックスに従って、仮想アドレスを物理アドレスに変換するように構成され得る。例えば、プロセッサ１２０は、制御レジスタ１２４の保存されたルートページテーブルインデックスに従って、アプリケーションプログラムに関して、３２ビットの仮想アドレスをメモリ１１０の３２ビットの物理アドレスに変換するように構成され得る。
【００７３】
[082]  図４Ａ及び４Ｂは、本開示の幾つかの実施形態による、ユーザ空間のメモリ管理の例示的方法、及び例示的な対応するページマッピングの模式図である。ユーザプロセスに関する仮想アドレスは、ページディレクトリインデックス、ページテーブルインデックス、及びページオフセットを含み得る。例えば、図４Ａに示すように、３２ビットのユーザプロセスに関する仮想アドレス４７０は、ページディレクトリインデックス４７１、ページテーブルインデックス４７２、及びページオフセット４７３を含み得る。
【００７４】
[083]  ページディレクトリインデックス４７１は、ページディレクトリのインデックスでよく、ページテーブルのベースアドレスを含み得るページディレクトリを指すルートアドレスと共に使用され得る。図４Ａでは、制御レジスタ１２４が、例えば、ユーザプロセスに関するルートページテーブルインデックスをルートアドレス４１０として保存し得る。ページディレクトリインデックス４７１は、ページテーブル４４０のベースアドレス４３０を含むページディレクトリ（ＰＤ）４２３を指すルートアドレス４１０と共に使用され得る。
【００７５】
[084]  ページテーブルインデックス４７２は、ページテーブルのインデックスでよく、ページテーブルエントリのエントリアドレスを含み得るページテーブル（ＰＴ）を指すベースアドレス４３０と共に使用され得る。例えば、ページテーブルインデックス４７２は、図４Ａに示すように、ページテーブルエントリ４６０のエントリアドレス４５０を含み得るページテーブル４４２を指すベースアドレス４３０と共に使用され得る。
【００７６】
[085]  ページオフセット４７３は、ページのあるオフセットでよく、変換された物理アドレスにおいてページオフセットとして使用され得る。例えば、仮想アドレス４７０のページオフセット４７３は、図４Ａに示すように、物理アドレス４９０のページオフセット４９３としてそのまま使用され得る。
【００７７】
[086]  ユーザプロセスに関して仮想アドレスを物理アドレスに変換するために、プロセッサ１２０は、記憶ユニットにユーザプロセスのルートページテーブルインデックスを保存するように構成され得る。例えば、プロセッサ１２０は、Linuxカーネルに関するルートページテーブルインデックスを制御レジスタ１２４に保存するように構成され得る。プロセッサ１２０は、図４Ａに示すように、ページディレクトリ４２０において、ある位置（例えばページディレクトリ４２１）を指すルートアドレス４１０として、保存されたルートページテーブルインデックスを使用するように構成され得る。プロセッサ１２０は、制御レジスタ１２４に保存されたルートページテーブルインデックスをページディレクトリインデックス４７１と組み合わせることによって、ページテーブルのベースアドレスを含み得るページディレクトリを見つけ出すようにも構成され得る。例えば、プロセッサ１２０は、図４Ｂに示すように、ルートアドレス４１０を仮想アドレス４７０のページディレクトリインデックス４７１と組み合わせることによって、ページディレクトリ４２３を見つけ出すように構成され得る。つまり、プロセッサ１２０は、図４Ａ及び４Ｂに示すように、ページディレクトリ４２０における開始位置としてページディレクトリ４２１を使用し、及びページディレクトリインデックス４７１をオフセットとして使用することによって、ページディレクトリ４２３を見つけ出すように構成される。
【００７８】
[087]  ページディレクトリ４２３は、３レベルページテーブル構造の次のレベルであるページテーブルのベースアドレスを指すベースアドレスを含み得る。図４Ｂに示すように、ページディレクトリ４２３は、３レベルページテーブルの次のレベルのページテーブルを指す４ＫＢのベースアドレス４２３−１を含む。プロセッサ１２０は、図４Ａに示すように、ページディレクトリ４２３のコンテンツを読み出すことによって、ページテーブル４４０のページテーブル４４１を指すベースアドレス４３０を取得するようにさらに構成され得る。
【００７９】
[088]  プロセッサ１２０は、見つけ出されたページディレクトリ４２３に保存されたベースアドレスをページテーブルインデックス４７２と組み合わせることによって、ページテーブルエントリのエントリアドレスを含むページテーブルを見つけ出すようにも構成され得る。例えば、プロセッサ１２０は、図４Ｂに示すように、ベースアドレス４３０（すなわち、４ＫＢのベースアドレス４２３−１）を仮想アドレス４７０のページテーブルインデックス４７２と組み合わせることによって、ページテーブル４４２を見つけ出すように構成され得る。つまり、プロセッサ１２０は、図４Ａ及び４Ｂに示すように、ページテーブル４４０における開始位置としてページテーブル４４１を使用し、及びページテーブルインデックス４７２をオフセットとして使用することによって、ページテーブル４４２を見つけ出すように構成される。
【００８０】
[089]  ページテーブル４４２は、３レベルページテーブル構造における次のレベルであるページテーブルエントリ中のある位置を指すエントリアドレスを含み得る。図４Ｂに示すように、ページテーブル４４２は、３レベルページテーブルの次のレベルのページテーブルエントリを指す４ＫＢのエントリアドレス４４２−１を含む。プロセッサ１２０は、図４Ａに示すように、ページテーブル４４２のコンテンツを読み出すことによって、ページテーブルエントリ４６０のページテーブルエントリ４６２を指すエントリアドレス４５０を取得するように構成され得る。
【００８１】
[090]  プロセッサ１２０は、ページテーブルエントリ４６２のコンテンツを読み出すことによって、物理ページインデックスを取得するようにさらに構成され得る。図４Ｂに示すように、ページテーブルエントリ４６２は、４ＫＢの物理ページインデックス４６２−１及びページ属性４６２−２を含む。エントリアドレス４５０に従って、プロセッサ１２０は、図４Ａ及び４Ｂに示すように、物理ページインデックス４９１となるページテーブルエントリ４６２の４ＫＢの物理ページインデックス４６２−１を読み出すように構成され得る。
【００８２】
[091]  プロセッサ１２０は、ユーザプロセスに関する物理アドレスとなるように、物理ページインデックス及びページオフセットを組み合わせるようにさらに構成され得る。例えば、プロセッサ１２０は、ユーザプロセスに関する物理アドレス４９０となるように、取得された物理ページインデックス４９１（すなわち、４ＫＢの物理ページインデックス４６２−１）及びページオフセット４９３（すなわち、ページオフセット４７３）を組み合わせるように構成され得る。それに応じて、プロセッサ１２０は、変換された物理アドレス４９０でメモリ１１０にアクセスすることにより、ユーザプロセスに関する必要とされるデータ又は命令を取得するように構成され得る。
【００８３】
[092]  幾つかの実施形態では、プロセッサ１２０は、ユーザ空間のページサイズ又はユーザ空間ページサイズを示すページサイズインジケータを取得するように構成され得る。図４Ｂに示すように、ページテーブルエントリ４６２は、ページ属性４６２−２を含む。プロセッサ１２０は、ページテーブルエントリ４６２におけるページ属性４６２−２を読み出すように構成され得る。ページ属性４６２−２は、ユーザ空間のページサイズを示すビット（例えば、ビット７）を含み得る。例えば、ページ属性４６２−２のビット７が「１」である場合、ユーザ空間のページサイズは、４ＫＢでもよい。ページ属性４６２−２のビット７が「０」である場合、ユーザ空間のページサイズは、４ＭＢでもよい。
【００８４】
[093]  ユーザ空間が第１のページサイズを含むことをページサイズインジケータが示す場合、プロセッサ１２０は、上記のように、仮想アドレスを物理アドレスに変換するように構成され得る。例えば、ページ属性４６２−２のビット７が、ユーザ空間の４ＫＢのページサイズを示す「１」である場合、プロセッサ１２０は、上記のように、並びに図４Ａ及び４Ｂに示すように、仮想アドレス４７０を物理アドレス４９０に変換するように構成され得る。ページ属性４６２−２のビット７が、ユーザ空間の４ＭＢのページサイズを示す「０」である場合、プロセッサ１２０は、以下に記載するように、並びに図５Ａ及び５Ｂに示すように、仮想アドレス５７０を物理アドレス５９０に変換するように構成され得る。
【００８５】
[094]  カーネル空間のページサイズを示すビットは、ページディレクトリ又はページテーブルの１つに含まれてもよい。例えば、ページサイズビットは、図４Ｂのページディレクトリ４２３の予約フィールド４２３−２又はページテーブル４４２の予約フィールド４４２−２に含まれ得る。例えば、予約フィールド４４２−２のビット７が、ページサイズビットとして使用され得る。プロセッサ１２０は、予約フィールド４４２−２のビット７を読み出し、それに応じてユーザ空間のページサイズを取得するように構成され得る。
【００８６】
[095]  図４Ｂを参照すると、ページテーブルエントリ４６２は、物理ページインデックス４６２−１及びページ属性４６２−２を含む。プロセッサ１２０は、上記のように仮想アドレスを物理アドレスに変換するために物理ページインデックス４６２−１を使用するように構成され得る。物理ページインデックス４６２−１は、例えば、３２ビットコンピュータシステムのユーザ空間において４ＫＢのページをアドレス指定するためのページテーブルエントリ４６２の最上位ビット（ＭＳＢ）の２０ビットを含み得る。
【００８７】
[096]  ページ属性４６２−２は、例えば、３２ビットコンピュータシステムにおけるページテーブルエントリ４６２の最下位ビット（ＬＳＢ）の１２ビットを含み得る。ページ属性４６２−２のこれらの１２ビットは、変換された物理アドレスのページの属性を示すように構成され得る。例えば、ページ属性４６２−２のビット７は、ユーザ空間のページサイズを示すように構成され得る。例えば、上記のように、ページ属性４６２−２のビット７が「１」である場合、ユーザ空間のページサイズは、４ＫＢとなるように構成され得る。ページ属性４６２−２のビット７が「０」である場合、ユーザ空間のページサイズは、４ＭＢとなるように構成され得る。プロセッサ１２０は、上記のように、ページ属性４６２−２のビット７に応じて、仮想アドレスを物理アドレスに変換するように構成され得る。
【００８８】
[097]  ３種類以上のページサイズが必要とされる場合、ページ属性４６２−２は、ユーザ空間のページサイズを示す２ビット（例えば、ビット９及びビット７）を含み得る。図面では、未使用と示されているが、このような使用のために、ページ属性４６２−２のビット９がさらに構成され得る。例えば、ページ属性４６２−２のビット９及びビット７が「１１」である場合、ユーザ空間のページサイズは、４ＫＢでもよい。ページ属性４６２−２のビット９及びビット７が「１０」である場合、ユーザ空間のページサイズは、４ＭＢでもよい。ページ属性４６２−２のビット９及びビット７が「０１」である場合、ユーザ空間のページサイズは、１６ＭＢでもよい。ページ属性４６２−２のビット９及びビット７が「００」である場合、ユーザ空間のページサイズは、６４ＭＢでもよい。プロセッサ１２０は、上記に類似したページ属性４６２−２のビット９及びビット７に応じて仮想アドレスを物理アドレスに変換するように構成され得る。
【００８９】
[098]  また、ページ属性４６２−２は、変換された物理アドレスのページが実行不可であることを示すＮＸインジケータ（例えば、ビット２）を含み得る。例えば、ページ属性４６２−２のビット２が「１」である場合、変換された物理アドレス４９０のページは、実行可能でなくてもよい。プロセッサ１２０は、上記のようにページ属性４６２−２のビット２に応じて、変換された物理アドレス４９０のページを実行しないように、又はそのページにアクセスしないように構成され得る。
【００９０】
[099]  ユーザ空間のページサイズを示すビットは、ページディレクトリ又はページテーブルの１つに含まれてもよい。例えば、ページサイズビットが、図４Ｂのページディレクトリ４２３の予約フィールド４２３−２又はページテーブル４４２の予約フィールド４４２−２に含まれ得る。例えば、予約フィールド４４２−２のビット７が、ページサイズビットとして使用され得る。プロセッサ１２０は、予約フィールド４４２−２のビット７を読み出し、それに応じてユーザ空間のページサイズを取得するように構成され得る。
【００９１】
[0100]  ページサイズを示すビットに類似して、ＮＸインジケータは、ページディレクトリ又はページテーブルの１つに含まれてもよい。例えば、ＮＸビットは、図４Ｂのページディレクトリ４２３の予約フィールド４２３−２又はページテーブル４４２の予約フィールド４４２−２に含まれ得る。プロセッサ１２０は、それに応じて変換された物理アドレスに関するＮＸビットからページに関するＮＸビットを読み出すように構成され得る。
【００９２】
[0101]  幾つかの実施形態では、プロセッサ１２０は、仮想アドレスを物理アドレスに直接変換するように構成され得る。つまり、仮想アドレスは、物理アドレスと同一である。例えば、図４Ａの仮想アドレス４７０は、図に示されるようにページディレクトリ４２０、ページテーブル４４０、及びページテーブルエントリ４６０を通して変換されることなく、直接物理アドレス４９０となるように変換され得る。仮想アドレスから物理アドレスへの直接変換は、ユーザプロセスがメモリ１１０に素早く且つ効率的にアクセスする助けとなり得る。
【００９３】
[0102]  ユーザ空間が第２のページサイズを含むことをページサイズインジケータが示す場合、プロセッサ１２０は、図５Ａ及び５Ｂに示すように、仮想アドレスを物理アドレスに変換するように構成され得る。例えば、図５Ｂのページ属性５６２−２のビット７が、カーネル空間の４ＭＢのページサイズを示す「０」である場合に、プロセッサ１２０は、図５Ａに示すように、ページディレクトリ５２０及びページテーブルエントリ５６０を含む２レベルページテーブルを通して仮想アドレス５７０を物理アドレス５９０に変換するように構成され得る。
【００９４】
[0103]  図５Ａ及び５Ｂは、本開示の幾つかの実施形態による、ユーザ空間のメモリ管理の例示的方法、及び例示的な対応するページマッピングの模式図である。ユーザプロセスに関する仮想アドレスは、ページディレクトリインデックス及びページオフセットを含み得る。例えば、図５Ａに示すように、３２ビットのユーザプロセスに関する仮想アドレス５７０は、ページディレクトリインデックス５７１及びページオフセット５７３を含み得る。
【００９５】
[0104]  ページディレクトリインデックス５７１は、ページディレクトリのインデックスでよく、ページテーブルエントリのエントリアドレスを含み得るページディレクトリを指すルートアドレスと共に使用され得る。図５Ａでは、制御レジスタ１２４は、例えば、ルートアドレス５１０としてユーザプロセスに関するルートページテーブルインデックスを保存するように構成され得る。ページディレクトリインデックス５７１は、ページテーブルエントリ５６０のエントリアドレス５５０を含むページディレクトリ（ＰＤ）５２３を指すルートアドレス５１０と共に使用され得る。
【００９６】
[0105]  ページオフセット５７３は、ページのオフセットでよく、変換された物理アドレスにおいてページオフセットとして使用され得る。例えば、仮想アドレス５７０のページオフセット５７３は、図５Ａに示すように、物理アドレス５９０のページオフセット５９３としてそのまま使用され得る。
【００９７】
[0106]  ユーザプロセスに関して仮想アドレスを物理アドレスに変換するために、プロセッサ１２０は、記憶ユニットにユーザプロセスのルートページテーブルインデックスを保存するように構成され得る。例えば、プロセッサ１２０は、図５Ａにおいて、Linuxカーネルに関するルートページテーブルインデックスを制御レジスタ１２４に保存するように構成され得る。プロセッサ１２０は、図５Ａに示すように、ページディレクトリ５２０において、ある位置（例えばページディレクトリ５２１）を指すルートアドレス５１０として、保存されたルートページテーブルインデックスを使用するように構成され得る。プロセッサ１２０は、制御レジスタ１２４に保存されたルートページテーブルインデックスをページディレクトリインデックス５７１と組み合わせることによって、ページテーブルのエントリアドレスを含むページディレクトリを見つけ出すようにも構成され得る。例えば、プロセッサ１２０は、図５Ｂに示すように、ルートアドレス５１０を仮想アドレス５７０のページディレクトリインデックス５７１と組み合わせることによって、ページディレクトリ５２３を見つけ出すように構成され得る。つまり、プロセッサ１２０は、図５Ａ及び５Ｂに示すように、ページディレクトリ５２０における開始位置としてページディレクトリ５２１を使用し、及びページディレクトリインデックス５７１をオフセットとして使用することによって、ページディレクトリ５２３を見つけ出すように構成される。
【００９８】
[0107]  ページディレクトリ５２３は、２レベルページテーブル構造の次のレベルであるページテーブルエントリ中のある位置を指すエントリアドレスを含み得る。図５Ｂに示すように、ページディレクトリ５２３は、２レベルページテーブルの次のレベルのページテーブルエントリを指す４ＭＢのエントリアドレス５２３−１を含む。プロセッサ１２０は、図５Ａに示すように、ページディレクトリ５２３のコンテンツを読み出すことによって、ページテーブルエントリ５６０のページテーブルエントリ５６２を指すエントリアドレス５５０を取得するように構成され得る。
【００９９】
[0108]  プロセッサ１２０は、ページテーブルエントリ５６２のコンテンツを読み出すことによって、物理ページインデックスを取得するようにも構成され得る。図５Ｂに示すように、ページテーブルエントリ５６２は、４ＭＢの物理ページインデックス５６２−１、ページ属性５６２−２、及び予約フィールド５６２−３を含む。エントリアドレス５５０に従って、プロセッサ１２０は、図５Ａ及び５Ｂに示すように、物理ページインデックス５９１となるページテーブルエントリ５６２の４ＭＢの物理ページインデックス５６２−１を読み出すように構成され得る。
【０１００】
[0109]  プロセッサ１２０は、ユーザプロセスに関する物理アドレスとなるように、物理ページインデックス及びページオフセットを組み合わせるようにさらに構成され得る。例えば、プロセッサ１２０は、ユーザプロセスに関する物理アドレス５９０となるように、取得された物理ページインデックス５９１（すなわち、４ＭＢの物理ページインデックス５６２−１）及びページオフセット５９３（すなわち、ページオフセット５７３）を組み合わせるように構成され得る。それに応じて、プロセッサ１２０は、変換された物理アドレス５９０でメモリ１１０にアクセスすることにより、ユーザプロセスに関する必要とされるデータ又は命令を取得するように構成され得る。
【０１０１】
[0110]  図５Ｂを参照すると、ページテーブルエントリ５６２は、物理ページインデックス５６２−１及びページ属性５６２−２を含む。プロセッサ１２０は、上記のように仮想アドレスを物理アドレスに変換するために物理ページインデックス５６２−１を使用するように構成され得る。物理ページインデックス５６２−１は、例えば、３２ビットコンピュータシステムのユーザ空間において４ＭＢのページをアドレス指定するためのページテーブルエントリ５６２の最上位ビット（ＭＳＢ）の１０ビットを含み得る。
【０１０２】
[0111]  ページ属性５６２−２は、例えば、３２ビットコンピュータシステムにおけるページテーブルエントリ５６２の最下位ビット（ＬＳＢ）の１２ビットを含み得る。ページ属性５６２−２のこれらの１２ビットは、変換された物理アドレスのページの属性を示すように構成され得る。例えば、ページ属性５６２−２のビット７は、ユーザ空間のページサイズを示すように構成され得る。例えば、上記のように、ページ属性５６２−２のビット７が「０」である場合、ユーザ空間のページサイズは、４ＭＢとなるように構成され得る。ページ属性５６２−２のビット７が「０」である場合、ユーザ空間のページサイズは、４ＫＢとなるように構成され得る。プロセッサ１２０は、上記のように、ページ属性５６２−２のビット７に応じて、仮想アドレスを物理アドレスに変換するように構成され得る。
【０１０３】
[0112]  ３種類以上のページサイズが必要とされる場合、ページ属性５６２−２は、ユーザ空間のページサイズを示す２ビット（例えば、ビット９及びビット７）を含み得る。図面では、未使用と示されているが、このような使用のために、ページ属性５６２−２のビット９がさらに構成され得る。例えば、ページ属性５６２−２のビット９及びビット７が「１１」である場合、ユーザ空間のページサイズは、４ＫＢでもよい。ページ属性５６２−２のビット９及びビット７が「１０」である場合、ユーザ空間のページサイズは、４ＭＢでもよい。ページ属性５６２−２のビット９及びビット７が「０１」である場合、ユーザ空間のページサイズは、１６ＭＢでもよい。ページ属性５６２−２のビット９及びビット７が「００」である場合、ユーザ空間のページサイズは、６４ＭＢでもよい。プロセッサ１２０は、上記に類似したページ属性５６２−２のビット９及びビット７に応じて仮想アドレスを物理アドレスに変換するように構成され得る。
【０１０４】
[0113]  また、ページ属性５６２−２は、変換された物理アドレスのページが実行不可であることを示すＮＸインジケータ（例えば、ビット２）を含み得る。例えば、ページ属性５６２−２のビット２が「１」である場合、変換された物理アドレス５９０のページは、実行可能でなくてもよい。プロセッサ１２０は、上記のようにページ属性５６２−２のビット２に応じて、変換された物理アドレス５９０のページを実行しないように、又はそのページにアクセスしないように構成され得る。
【０１０５】
[0114]  代替的に、ユーザ空間のページサイズを示すビットは、ページディレクトリ又はページテーブルエントリの１つに含まれてもよい。例えば、ページサイズビットが、図５Ｂのページディレクトリ５２３の予約フィールド５２３−２又はページテーブルエントリ５６２の予約フィールド５６２−２に含まれ得る。例えば、予約フィールド５２３−２のビット７が、ページサイズビットとして構成され得る。プロセッサ１２０は、予約フィールド５２３−２のビット７を読み出し、それに応じてユーザ空間のページサイズを取得するように構成され得る。
【０１０６】
[0115]  ページサイズを示すビットに類似して、ＮＸインジケータは、ページディレクトリ又はページテーブルエントリの１つに含まれてもよい。例えば、ＮＸビットは、図５Ｂのページディレクトリ５２３の予約フィールド５２３−２又はページテーブルエントリ５６２の予約フィールド５６２−２に含まれ得る。それに応じて、プロセッサ１２０は、変換された物理アドレスのページのＮＸインジケータを読み出すように構成され得る。実行不可インジケータは、ＯＳカーネルが、変換された物理アドレスのページにおいて悪意のあるコード又はウイルスを実行することを阻止する助けとなり得る。
【０１０７】
[0116]  幾つかの実施形態では、プロセッサ１２０は、仮想アドレスを物理アドレスに直接変換するように構成され得る。つまり、仮想アドレスは、物理アドレスと同一である。例えば、図５Ａの仮想アドレス５７０は、図に示されるようにページディレクトリ５２０及びページテーブルエントリ５６０を通して変換されることなく、直接物理アドレス５９０となるように変換され得る。仮想アドレスから物理アドレスへの直接変換は、ユーザプロセスがメモリ１１０に素早く且つ効率的にアクセスする助けとなり得る。
【０１０８】
[0117]  幾つかの実施形態では、プロセッサ１２０は、ＯＳカーネルのユーザ空間へのアクセスの許容を示すユーザ空間アクセスインジケータを取得するように構成され得る。例えば、プロセッサ１２０は、その命令セットにおいて、ユーザ空間にアクセスするために使用される接頭語「ＵＳ」を含む１つ又は複数の命令を含み得る。接頭語「ＵＳ」を含む命令は、ユーザ空間アクセスインジケータとして使用され得る。「ＵＳ」の接頭語を有する命令が実行され得る場合、プロセッサ１２０は、ユーザ空間アクセスインジケーションを取得するように構成され得る。図２Ａを参照すると、プロセッサ１２０は、仮想アドレス２７０を使用してユーザ空間にアクセスするように構成され得る。
【０１０９】
[0118]  プロセッサ１２０は、ユーザ空間に関するルートページテーブルインデックス及び仮想アドレスのページディレクトリインデックスに従って、ユーザ空間に関するベースアドレスを取得するように構成され得る。例えば、図２Ａ及び４Ａを参照すると、プロセッサ１２０は、制御レジスタ１２４に保存されたルートページテーブルインデックスをページディレクトリインデックス２７１と組み合わせることによって、ページテーブルのベースアドレスを含み得るページディレクトリを見つけ出すように構成され得る。プロセッサ１２０は、ルートアドレス４１０を仮想アドレス２７０のページディレクトリインデックス２７１と組み合わせることによって、ページディレクトリ４２３を見つけ出すように構成され得る。つまり、プロセッサ１２０は、ページディレクトリ４２０における開始位置としてページディレクトリ４２１を使用し、及びページディレクトリインデックス２７１をオフセットとして使用することによって、ページディレクトリ４２３を見つけ出すように構成される。プロセッサ１２０は、ページディレクトリ４２３のコンテンツを読み出すことによって、ページテーブル４４０のページテーブル４４１を指すベースアドレス４３０を取得するようにさらに構成され得る。
【０１１０】
[0119]  プロセッサ１２０は、見つけ出されたページディレクトリ４２３に保存されたベースアドレスをページテーブルインデックス２７２と組み合わせることによって、ページテーブルエントリのエントリアドレスを含むページテーブルを見つけ出すようにも構成され得る。例えば、プロセッサ１２０は、ベースアドレス４３０（すなわち、４ＫＢのベースアドレス４２３−１）を仮想アドレス２７０のページテーブルインデックス２７２と組み合わせることによって、ページテーブル４４２を見つけ出すように構成され得る。つまり、プロセッサ１２０は、ページテーブル４４０における開始位置としてページテーブル４４１を使用し、及びページテーブルインデックス２７２をオフセットとして使用することによって、ページテーブル４４２を見つけ出すように構成される。プロセッサ１２０は、ページテーブル４４２のコンテンツを読み出すことによって、ページテーブルエントリ４６０のページテーブルエントリ４６２を指すエントリアドレス４５０を取得するようにさらに構成され得る。
【０１１１】
[0120]  プロセッサ１２０は、ページテーブルエントリ４６２のコンテンツを読み出すことによって、物理ページインデックスを取得するようにも構成され得る。エントリアドレス４５０に従って、プロセッサ１２０は、物理ページインデックス４９１となるページテーブルエントリ４６２の４ＫＢの物理ページインデックス４６２−１を読み出すように構成され得る。
【０１１２】
[0121]  プロセッサ１２０は、ユーザプロセスに関する物理アドレスとなるように、物理ページインデックス及びページオフセットを組み合わせるようにさらに構成され得る。例えば、プロセッサ１２０は、ＯＳカーネルがユーザ空間にアクセスする物理アドレスとなるように、取得された物理ページインデックス４９１（すなわち、４ＫＢの物理ページインデックス４６２−１）及びページオフセット２７３を組み合わせるように構成され得る。それに応じて、プロセッサ１２０は、変換された物理アドレスでメモリ１１０にアクセスすることにより、ユーザ空間からＯＳカーネルに関する必要とされるデータ又は命令を取得するように構成され得る。
【０１１３】
[0122]  幾つかの実施形態では、プロセッサ１２０は、ユーザプロセスのユーザ空間へのアクセスの許容を示すユーザ空間アクセスインジケータを取得するように構成され得る。例えば、プロセッサ１２０は、その命令セットにおいて、ユーザ空間にアクセスするために使用される接頭語「ＵＳ」を含む１つ又は複数の命令を含み得る。接頭語「ＵＳ」を含む命令は、ユーザ空間アクセスインジケータとして使用され得る。「ＵＳ」の接頭語を有する命令が実行される場合、「ＵＳ」の接頭語を有する命令が、ＯＳカーネルだけのものであるので、プロセッサ１２０は、一般保護違反を設定するように構成され得る。例えば、プロセッサ１２０は、警告メッセージ又はフラグを設定し、ユーザプロセスに関して「ＵＳ」の接頭語を有する命令を実行しないようにし得る。
【０１１４】
[0123]  図６は、本開示の幾つかの実施形態による例示的メモリ管理方法６００のフローチャートである。方法６００は、仮想アドレスを獲得すること（ステップ６１０）、カーネル空間又はユーザ空間にアクセスすることを決定すること（ステップ６２０）、カーネル空間に対応する第１のルートページテーブルインデックスを取得すること（ステップ６３１）、ユーザ空間に対応する第２のルートページテーブルインデックスを取得すること（ステップ６４１）、オペレーティングシステムカーネルのために第１のルートページテーブルインデックスに従って第１の仮想アドレスを第１の物理アドレスに変換すること（ステップ６３２）、及びユーザプロセスのために第２のルートページテーブルインデックスに従って第２の仮想アドレスを第２の物理アドレスに変換すること（ステップ６４２）を含む。方法６００は、カーネル空間又はユーザ空間のページサイズを示すページサイズインジケータを取得することも含み得る。方法６００は、変換された物理アドレスのページに関する実行不可インジケータを取得することも含み得る。方法６００は、ＯＳカーネル又はユーザプロセスに関するユーザ空間アクセスインジケーションを取得することをさらに含み得る。
【０１１５】
[0124]  ステップ６１０は、仮想アドレスを獲得することを含む。例えば、ステップ６１０の仮想アドレスを獲得することは、命令の復号後に仮想アドレスを取得することを含み得る。別の例として、ステップ６１０の仮想アドレスを獲得することは、仮想−物理アドレスマッピングのためにＯＳカーネル又はユーザプロセスから仮想アドレスを取得することを含み得る。
【０１１６】
[0125]  ステップ６２０は、カーネル空間又はユーザ空間にアクセスすることを決定することを含む。例えば、ステップ６１０においてＯＳカーネルから仮想アドレスを取得した後に、ステップ６２０においてカーネル空間又はユーザ空間にアクセスすることを決定することは、デフォルト結果としてカーネル空間にアクセスすることを決定することを含み得る。別の例として、ステップ６１０においてユーザプロセスから仮想アドレスを取得した後に、ステップ６２０においてカーネル空間又はユーザ空間にアクセスすることを決定することは、デフォルト結果としてユーザ空間にアクセスすることを決定することを含み得る。
【０１１７】
[0126]  幾つかの実施形態では、方法６００は、ＯＳカーネルに関するユーザ空間アクセスインジケーションを取得することを含み得る。ＯＳカーネルからユーザ空間アクセスインジケーションを取得した後に、ステップ６２０においてカーネル空間又はユーザ空間にアクセスすることを決定することは、ユーザ空間にアクセスすることを決定することを含み得る。
【０１１８】
[0127]  ステップ６３１は、カーネル空間に対応するルートページテーブルインデックスを取得することを含む。例えば、ステップ６３１におけるカーネル空間に対応するルートページテーブルインデックスを取得することは、上記で例示したように、制御レジスタ３（ＣＲ３）、ＯＳカーネルに関する制御レジスタ３（ＣＲ３Ｋ）などの記憶ユニット、又はキャッシュ、メインメモリ、若しくはストレージデバイスの記憶空間からルートページテーブルインデックスを取得することを含み得る。
【０１１９】
[0128]  幾つかの実施形態では、ステップ６３１においてカーネル空間に対応するルートページテーブルインデックスを取得することは、記憶ユニットからＯＳカーネルに対応するルートページテーブルインデックスを読み出すこと、及びそれをプロセッサの専用制御レジスタに保存することも含み得る。例えば、ステップ６３１においてカーネル空間に対応するルートページテーブルインデックスを取得することは、ＯＳカーネルに関するスタックからＯＳカーネルに対応するルートページテーブルインデックスをポップすること、及びそれをＣＲ３Ｋに保存することを含み得る。別の例として、ステップ６３１においてカーネル空間に対応するルートページテーブルインデックスを取得することは、ストレージ１３０からＯＳカーネルのルートページテーブルインデックスを含み得るデータのスワッピングを行うこと、及びそれをプロセッサ１２０の制御レジスタ１２２に保存することを含み得る。
【０１２０】
[0129]  ステップ６３２は、ＯＳカーネルに関するルートページテーブルインデックスに従って仮想アドレスを物理アドレスに変換することを含む。例えば、ステップ６３２においてＯＳカーネルに関して仮想アドレスを物理アドレスに変換することは、図２Ａ及び２Ｂに示すように、並びに上記のように、制御レジスタ１２２のルートページテーブルインデックスに従って、ＯＳカーネルに関して仮想アドレス２７０を物理アドレス２９０に変換することを含み得る。別の例として、ステップ６３２においてＯＳカーネルに関して仮想アドレスを物理アドレスに変換することは、図３Ａ及び３Ｂに示すように、並びに上記のように、ＯＳカーネルに関する制御レジスタ１２２に保存されたルートページテーブルインデックスに従って、仮想アドレス３７０を物理アドレス３９０に変換することを含み得る。
【０１２１】
[0130]  幾つかの実施形態では、ステップ６３２においてＯＳカーネルに関して仮想アドレスを物理アドレスに変換することは、ＯＳカーネルのルートページテーブルインデックス及び仮想アドレスのページディレクトリインデックスに従ってベースアドレスを取得することを含み得る。例えば、ステップ６３２においてベースアドレスを取得することは、図２Ａ及び２Ｂに示すように、ルートアドレス２１０を仮想アドレス２７０のページディレクトリインデックス２７１と組み合わせることによって、ページディレクトリ２２３を見つけ出すことを含み得る。ページディレクトリ２２３は、ページテーブル２４０のベースアドレスを含み得る。
【０１２２】
[0131]  ステップ６３２においてＯＳカーネルに関して仮想アドレスを物理アドレスに変換することは、ベースアドレス及びページテーブルインデックスに従ってエントリアドレスを取得することも含み得る。例えば、ステップ６３２においてエントリアドレスを取得することは、図２Ａ及び２Ｂに示すように、ベースアドレス２３０を仮想アドレス２７０のページテーブルインデックス２７２と組み合わせることによって、ページテーブル２４２を見つけ出すことを含み得る。ページテーブル２４２は、ページテーブルエントリ中のある位置を指すエントリアドレスを含み得る。ステップ６３２においてエントリアドレスを取得することは、ページテーブル２４２のコンテンツを読み出すことによって、ページテーブルエントリ２６０のページテーブルエントリ２６２を指すエントリアドレス２５０を取得することも含み得る。
【０１２３】
[0132]  ステップ６３２においてＯＳカーネルに関して仮想アドレスを物理アドレスに変換することは、エントリアドレスに従って物理ページインデックスを取得することをさらに含み得る。例えば、ステップ６３２において物理ページインデックスを取得することは、ページテーブルエントリ２６２のコンテンツを読み出すことによって、物理ページインデックス２９１を取得することを含み得る。
【０１２４】
[0133]  ステップ６３２においてＯＳカーネルに関して仮想アドレスを物理アドレスに変換することは、物理アドレスとなるように物理ページインデックス及びページオフセットを組み合わせることをさらに含み得る。例えば、ステップ６３２において物理ページインデックス及びページオフセットを組み合わせることは、図２Ａに示すように、物理アドレス２９０となるように、物理ページインデックス２９１及びページオフセット２９３を組み合わせることを含み得る。ページオフセット２９３は、仮想アドレス２７０のページオフセット２７３と同一になり得る。
【０１２５】
[0134]  ステップ６３２においてＯＳカーネルに関して仮想アドレスを物理アドレスに変換することは、仮想アドレスを物理アドレスに直接変換することも含み得る。つまり、仮想アドレスは、物理アドレスと同一である。例えば、図２Ａの仮想アドレス２７０は、図に示されるようにページディレクトリ２２０、ページテーブル２４０、及びページテーブルエントリ２６０を通して変換されることなく、直接物理アドレス２９０となるように変換され得る。
【０１２６】
[0135]  別の例として、ステップ６３２においてＯＳカーネルに関して仮想アドレスを物理アドレスに変換することは、図３Ａ及び３Ｂに示すように、並びに上記のように、仮想アドレス３７０を物理アドレス３９０に変換することを含み得る。
【０１２７】
[0136]  ステップ６４１は、ユーザ空間に対応するルートページテーブルインデックスを取得することを含む。例えば、ステップ６４１におけるユーザ空間に対応するルートページテーブルインデックスを取得することは、上記で例示したように、制御レジスタ４（ＣＲ４）、ユーザプロセスに関する制御レジスタ３（ＣＲ３Ｕ）などの記憶ユニット、又はキャッシュ、メインメモリ、若しくはストレージデバイスの記憶空間からルートページテーブルインデックスを取得することを含み得る。
【０１２８】
[0137]  幾つかの実施形態では、ステップ６４１におけるユーザ空間に対応するルートページテーブルインデックスを取得することは、記憶ユニットからユーザプロセスに対応するルートページテーブルインデックスを読み出すこと、及びそれをプロセッサの専用制御レジスタに保存することも含み得る。例えば、ステップ６４１においてユーザ空間に対応するルートページテーブルインデックスを取得することは、ユーザプロセスに関するスタックからユーザプロセスに対応するルートページテーブルインデックスをポップすること、及びそれをＣＲ３Ｕに保存することを含み得る。別の例として、ステップ６４１においてユーザ空間に対応するルートページテーブルインデックスを取得することは、ストレージ１３０からユーザプロセスのルートページテーブルインデックスを含み得るデータのスワッピングを行うこと、及びそれをプロセッサ１２０の制御レジスタ１２４に保存することを含み得る。
【０１２９】
[0138]  ステップ６４２は、ユーザプロセスに関するルートページテーブルインデックスに従って仮想アドレスを物理アドレスに変換することを含む。例えば、ステップ６４１においてユーザプロセスに関して仮想アドレスを物理アドレスに変換することは、図４Ａ及び４Ｂに示すように、並びに上記のように、制御レジスタ１２４に保存されたユーザプロセスのルートページテーブルインデックスに従って、仮想アドレス４７０を物理アドレス４９０に変換することを含み得る。別の例として、ステップ６４２においてユーザプロセスに関して仮想アドレスを物理アドレスに変換することは、図５Ａ及び５Ｂに示すように、並びに上記のように、ユーザプロセスに関する制御レジスタ１２４に保存されたルートページテーブルインデックスに従って、仮想アドレス５７０を物理アドレス５９０に変換することを含み得る。
【０１３０】
[0139]  ステップ６４２においてユーザプロセスに関して仮想アドレスを物理アドレスに変換することは、ユーザプロセスのルートページテーブルインデックス及び仮想アドレスのページディレクトリインデックスに従ってベースアドレスを取得することを含み得る。例えば、図４Ａ及び４Ｂに示すように、ステップ６４２においてベースアドレスを取得することは、ルートアドレス４１０を仮想アドレス４７０のページディレクトリインデックス４７１と組み合わせることによって、ページディレクトリ４２３を見つけ出すことを含み得る。ページディレクトリ４２３は、ページテーブル４４０のベースアドレスを含み得る。
【０１３１】
[0140]  ステップ６４２においてユーザプロセスに関して仮想アドレスを物理アドレスに変換することは、ベースアドレス及びページテーブルインデックスに従ってエントリアドレスを取得することも含み得る。例えば、ステップ６４２においてエントリアドレスを取得することは、図４Ａ及び４Ｂに示すように、ベースアドレス４３０を仮想アドレス４７０のページテーブルインデックス４７２と組み合わせることによって、ページテーブル４４２を見つけ出すことを含み得る。ページテーブル４４２は、ページテーブルエントリ中のある位置を指すエントリアドレスを含み得る。ステップ６４２においてエントリアドレスを取得することは、ページテーブル４４２のコンテンツを読み出すことによって、ページテーブルエントリ４６０中のページテーブルエントリ４６２を指すエントリアドレス４５０を取得することも含み得る。
【０１３２】
[0141]  幾つかの実施形態では、ステップ６４２においてユーザプロセスに関して仮想アドレスを物理アドレスに変換することは、エントリアドレスに従って物理ページインデックスを取得することをさらに含み得る。例えば、ステップ６４２において物理ページインデックスを取得することは、ページテーブルエントリ４６２のコンテンツを読み出すことによって、物理ページインデックス４９１を取得することを含み得る。
【０１３３】
[0142]  幾つかの実施形態では、ステップ６４２においてユーザプロセスに関して仮想アドレスを物理アドレスに変換することは、物理アドレスとなるように、物理ページインデックス及びページオフセットを組み合わせることをさらに含み得る。例えば、ステップ６４２において物理ページインデックス及びページオフセットを組み合わせることは、図４Ａに示すように、物理アドレス４９０となるように、物理ページインデックス４９１及びページオフセット４９２を組み合わせることを含み得る。ページオフセット４９２は、仮想アドレス４７０のページオフセット４７１と同一になり得る。
【０１３４】
[0143]  代替的に、ステップ６４２においてユーザプロセスに関して仮想アドレスを物理アドレスに変換することは、仮想アドレスを物理アドレスに直接変換することを含み得る。つまり、仮想アドレスは、物理アドレスと同一である。例えば、図４Ａの仮想アドレス４７０は、図に示されるようにページディレクトリ４２０、ページテーブル４４０、及びページテーブルエントリ４６０を通して変換されることなく、直接物理アドレス４９０となるように変換され得る。
【０１３５】
[0144]  別の例として、ステップ６４２においてユーザプロセスに関して仮想アドレスを物理アドレスに変換することは、図５Ａ及び５Ｂに示すように、並びに上記のように、仮想アドレス５７０を物理アドレス５９０に変換することを含み得る。
【０１３６】
[0145]  方法６００は、カーネル空間又はユーザ空間のページサイズを示すページサイズインジケータを取得することも含み得る。例えば、方法６００のページサイズインジケータを取得することは、図２Ｂに示すように、及び上記のように、ページテーブルエントリ２６２のページ属性２６２−２のビット７を読み出すことを含み得る。ページ属性２６２−２のビット７は、カーネル空間のページサイズを示す。例えば、ページ属性２６２−２のビット７が「１」である場合、カーネル空間のページサイズは、４ＫＢでもよい。ページ属性２６２−２のビット７が「０」である場合、カーネル空間のページサイズは、４ＭＢでもよい。
【０１３７】
[0146]  カーネル空間が第１のページサイズを含み得ることを取得されたページサイズインジケータが示し得る場合、ステップ６３２における仮想アドレスを物理アドレスに変換することは、図２Ａ及び２Ｂに示すように、並びに上記のように、仮想アドレスを物理アドレスに変換することを含み得る。例えば、ページ属性２６２−２のビット７が、カーネル空間の４ＫＢのページサイズを示す「１」である場合、ステップ６３２における仮想アドレスを物理アドレスに変換することは、上記のように、及び図２Ａに示すように、仮想アドレス２７０を物理アドレス２９０に変換することを含み得る。
【０１３８】
[0147]  カーネル空間が第２のページサイズを含み得ることを取得されたページサイズインジケータが示し得る場合、ステップ６３２における仮想アドレスを物理アドレスに変換することは、図３Ａに示すように、及び上記のように、仮想アドレスを物理アドレスに変換することを含み得る。例えば、ページ属性２６２−２のビット７が、カーネル空間の４ＭＢのページサイズを示す「０」である場合、ステップ６３２における仮想アドレスを物理アドレスに変換することは、図３Ａ及び３Ｂに示すように、並びに上記のように、２レベルページテーブル（ページディレクトリ３２０及びページテーブルエントリ３６０）を通して仮想アドレス３７０を物理アドレス３９０に変換することを含み得る。
【０１３９】
[0148]  別の例として、方法６００のページサイズインジケータを取得することは、図４Ｂに示すように、及び上記のように、ページテーブルエントリ４６２のページ属性４６２−２のビット７を読み出すことを含み得る。ページ属性４６２−２のビット７は、ユーザ空間のページサイズを示す。例えば、ページ属性４６２−２のビット７が「１」である場合、ユーザ空間のページサイズは、４ＫＢでもよい。ページ属性４６２−２のビット７が「０」である場合、ユーザ空間のページサイズは、４ＭＢでもよい。
【０１４０】
[0149]  ユーザ空間が第１のページサイズを含み得ることを取得されたページサイズインジケータが示し得る場合、ステップ６４２における仮想アドレスを物理アドレスに変換することは、図４Ａ及び４Ｂに示すように、並びに上記のように、仮想アドレスを物理アドレスに変換することを含み得る。例えば、ページ属性４６２−２のビット７が、ユーザ空間の４ＫＢのページサイズを示す「１」である場合、ステップ６４２における仮想アドレスを物理アドレスに変換することは、上記のように、及び図４Ａに示すように、仮想アドレス４７０を物理アドレス４９０に変換することを含み得る。
【０１４１】
[0150]  ユーザ空間が第２のページサイズを含み得ることを取得されたページサイズインジケータが示し得る場合、ステップ６４２における仮想アドレスを物理アドレスに変換することは、図５Ａ及び５Ｂに示すように、並びに上記のように、仮想アドレスを物理アドレスに変換することを含み得る。例えば、ページ属性５６２−２のビット７が、ユーザ空間の４ＭＢのページサイズを示す「０」である場合、ステップ６４２における仮想アドレスを物理アドレスに変換することは、図５Ａに示すように、及び上記のように、２レベルページテーブル（ページディレクトリ５２０及びページテーブルエントリ５６０）を通して仮想アドレス５７０を物理アドレス５９０に変換することを含み得る。
【０１４２】
[0151]  方法６００は、変換された物理アドレスのページに関する実行不可インジケータを取得することも含み得る。例えば、方法６００の実行不可インジケータを取得することは、図２Ｂに示すように、及び上記のように、ページテーブルエントリ２６２のページ属性２６２−２のビット２を読み出すことを含み得る。ページ属性２６２−２のビット２が「１」である場合、変換された物理アドレスのページは、実行可能でなくてもよい。方法６００は、ページのコンテンツにアクセスしないことを含むか、又はページのコンテンツにアクセスするが、それを実行しないことを含む。ページ属性２６２−２のビット２が「０」である場合、変換された物理アドレスのページは、実行可能でもよい。方法６００は、カーネル空間のページのコンテンツにアクセスすることを含んでもよく、及び／又はそれに応じてそれを実行し得る。
【０１４３】
[0152]  別の例として、方法６００の実行不可インジケータを取得することは、ユーザ空間に関する実行不可インジケータを取得することを含み得る。例えば、方法６００の実行不可インジケータを取得することは、上記のように、及び図４Ｂに示すように、ページテーブルエントリ４６２のページ属性４６２−２のビット２を読み出すことを含み得る。ページ属性４６２−２のビット２が「１」である場合、変換された物理アドレスのページは、実行可能でなくてもよい。方法６００は、ページのコンテンツにアクセスしないことを含むか、又はページのコンテンツにアクセスするが、それを実行しないことを含む。ページ属性４６２−２のビット２が「０」である場合、変換された物理アドレスのページは、実行可能でもよい。方法６００は、ユーザ空間のページのコンテンツにアクセスすることを含んでもよく、及び／又はそれに応じてそれを実行し得る。
【０１４４】
[0153]  方法６００は、ＯＳカーネル又はユーザプロセスに関するユーザ空間アクセスインジケーションを取得することをさらに含み得る。例えば、プロセッサ１２０は、その命令セットにおいて、ユーザ空間にアクセスするために使用される接頭語「ＵＳ」を含む１つ又は複数の命令を含み得る。接頭語「ＵＳ」を含む命令は、ＯＳカーネルにおけるユーザ空間アクセスインジケータとして使用され得る。「ＵＳ」の接頭語を有する命令が実行され得る場合、ステップ６３１においてルートページテーブルインデックスを取得することは、仮想アドレスを物理アドレスに変換するために制御レジスタ１２４のユーザ空間に対応するルートページテーブルインデックスを読み出すことを含み得る。例えば、ステップ６３１においてルートページテーブルインデックスを取得することは、制御レジスタ１２４からユーザ空間に対応するルートアドレス４１０を読み出すことを含み得る。そして、ステップ６３２において仮想アドレスを物理アドレスに変換することは、上記のように、ルートアドレス４１０及び図４Ａの３レベルページテーブル構造を使用して仮想アドレス２７０を物理アドレスに変換することを含み得る。
【０１４５】
[0154]  別の例として、プロセッサ１２０は、その命令セットにおいて、ユーザ空間にアクセスするために使用される接頭語「ＵＳ」を含む１つ又は複数の命令を含み得る。接頭語「ＵＳ」を含む命令は、ユーザプロセスにおいてユーザ空間アクセスインジケータとして使用され得る。ユーザプロセスに対して「ＵＳ」の接頭語を有する命令が実行され得る場合、「ＵＳ」の接頭語を有する命令が、ＯＳカーネルだけのものであり得るので、方法６００は、一般保護違反を設定することをさらに含み得る。例えば、方法６００は、警告メッセージ又はフラグを設定すること、及びユーザプロセスに対して「ＵＳ」の接頭語を有する命令を実行しないことを含み得る。
【０１４６】
[0155]  本開示の別の態様は、上述のように、カーネル空間及びユーザ空間のメモリ管理のための方法を装置に行わせるための、装置の１つ又は複数のプロセッサによって実行可能な命令のセットを保存する非一時的コンピュータ可読媒体に向けられる。コンピュータ可読媒体は、揮発性若しくは不揮発性、磁気、半導体、テープ、光学式、取り外し可能、固定型、又は他のタイプのコンピュータ可読媒体又はコンピュータ可読ストレージデバイスを含み得る。例えば、コンピュータ可読媒体は、開示したような、保存されたコンピュータ命令を有するストレージデバイス又はメモリモジュールでもよい。幾つかの実施形態では、コンピュータ可読媒体は、保存されたコンピュータ命令を有するディスク又はフラッシュドライブでもよい。
【０１４７】
[0156]  本開示は、上記に記載した及び添付の図面に示した正確な構造に限定されないこと、並びに様々な修正及び変更がその範囲から逸脱することなく行われ得ることが理解されるだろう。本出願の範囲は、添付の特許請求の範囲によってのみ限定されることが意図される。
【図１】
2020531951.tif 000003
【図２Ａ】
2020531951.tif 000004
【図２Ｂ】
2020531951.tif 000005
【図３Ａ】
2020531951.tif 000006
【図３Ｂ】
2020531951.tif 000007
【図４Ａ】
2020531951.tif 000008
【図４Ｂ】
2020531951.tif 000009
【図５Ａ】
2020531951.tif 000010
【図５Ｂ】
2020531951.tif 000011
【図６】
2020531951.tif 000012
【国際調査報告】
2020531951.tif 000013
2020531951.tif 000014