Jump to content 日本-日本語

製品 >  ソフトウェア >  HP- UX Developer Edge

HP-UXメモリ管理 ホワイト・ペーパー バージョン1.4

仮想メモリから物理メモリへのマッピング
HP-UX/Integrityサーバー お問い合せ
コンテンツに進む

仮想メモリから物理メモリへのマッピング


PA-RISCハードウェアは、TLBを検索することで、仮想アドレスから物理アドレスへの変換を試みます。アドレスを解決できない場合、ページ・フォールト(命令TLBミス・フォールトの場合は割り込みタイプ6、データTLBミス・フォールトの場合は割り込みタイプ15)が生成されます。カーネルは、このフォールトを処理する必要があります。

HTBL


PA-RISCでは、ハッシュ・ページ・ディレクトリ・エントリ(hpde)のハッシュ・ページ・テーブル(htbl)を使用して、膨大な仮想アドレス空間内のアドレスが特定されます。ハッシュテーブルのアドレスは、制御レジスタ25(CR25)に含まれます(reg.hを参照)。

このテーブルの詳細は、「ページ・テーブルまたはPDIR」を、各テーブル・エントリの詳細は、「ハッシュ・ページ・ディレクトリ(hpdeおよびhpde2_0)構造」をそれぞれ参照してください。

注: 歴史的な理由から、このテーブルのエントリがpde、hpde、またはpdirと呼ばれることがあります。

htbl内のアドレスを検索する方法は次のとおりです。

  • 仮想スペースとオフセットがハッシュされて、htbl索引が生成される。
  • ハッシュ・アルゴリズムで生成された索引が、htblへの索引として使用される。テーブル内の各エントリはpdeと呼ばれ、型はstruct hpdeになっている。
  • 仮想スペースとオフセットがpdeの情報と比較されて、エントリが確認される。
  • 物理アドレスがpdeから検索されて、仮想アドレスから物理アドレスへの変換が完了する。
図22 htblエントリからページ・ディレクトリ・エントリへのマッピング
図22 htblエントリからページ・ディレクトリ・エントリへのマッピング

プロセス管理では、pregionまでのカーネル構造を使用してプロセスのスレッドが実行されます。uarea、proc構造、vas、およびpregionはプロセスごとのリソースです。つまり、複数のプロセス間で共有されず、これらの構造の重複しないコピーを各プロセスがもちます。

pregionより下のレベルは、システム全体のリソースです。これらの構造は、複数のプロセス間で共有されます(ただし、必ず共有する必要があるわけではありません)。

メモリ管理カーネル構造によりpregionが物理メモリにマッピングされ、仮想アドレスを物理メモリに変換するプロセッサー機能がサポートされます。次の表は、メモリ管理にかかわるカーネル構造を示しています。詳細については、後に説明します。

同じhtblエントリへの複数アドレスのハッシュ


どのハッシュ・アルゴリズムでも、複数のアドレスを同じhtbl索引にマッピングできます。htbl内のエントリは、実際にはpdeのリンク・リストの始点です。各エントリに、別のpdeを指し示すpde_nextポインタがありますが、リンク・リストの最後の項目である場合はヌルが含まれます。

実際には、htblに十分なエントリが含まれ、3つを超えるリンクを含むまでリンク・リストが成長することはほとんどありません。

各htblエントリが、base_pdirからhtblまでとpdir(htblの最後でもあります)からmax_pdirまで、pdeの2つの集合を指し示すことがあります。htbl全体と周囲のpdeをまとめてスパース(疎な)pdirと呼びます。htblは常に、そのサイズの倍数(つまり、nhtbl * sizeof(struct hpde)の倍数)となるアドレスから始まるように整列されます。

pdir_free_listまたはpd_fl2_0->headは、現在使用されていないが使用可能なスパースpdirエントリのリンク・リストを指し示します。pdir_free_list_tailまたはpd_fl2_0->tailは、このリンク・リスト上の最後のpdeを指し示します(これらの変数名は、PA-RISC 1.1のpdir実装とPA-RISC 2.0のpdir実装で少し異なります)。

図23 複数のアドレスを同じhtblエントリにハッシュする方法
図23 複数のアドレスを同じhtblエントリにハッシュする方法

物理アドレスから仮想アドレスへのマッピング


HP-UXでは、ハッシュ・ページ・ディレクトリを使用して仮想アドレスを物理アドレスに変換します。

物理アドレスから仮想アドレスへの変換には、pfn_to_virtテーブルが使用されます。これはpfdatテーブルと同様に2レベルのテーブルであり、物理メモリの各ページについて1つのpfn_to_virt_entry_tエントリを含む巨大な配列とみなすことができます。第1レベルのテーブルをpfn_to_virt_ptr[]と呼びます。

各pfn_to_virt_entry_tには、仮想ページのスペースとオフセット(1つのページへの単一変換の場合)またはエイリアス構造のリスト(物理ページに複数の仮想アドレス変換がある場合)のいずれかが含まれます。

図24 物理アドレスから仮想アドレスへの変換
図24 物理アドレスから仮想アドレスへの変換

pfn_to_virt_entry_tに、物理アドレスに対応するspace.offset(仮想アドレス)、または、それぞれがspace.offsetペアを持つエイリアス構造のリストへのポインタが含まれることがあります。

アドレス・エイリアシング


HP-UXは、ほとんどのプラットフォーム上でソフトウェア・アドレス・エイリアシングをサポートしています(ハードウェア・アドレス・エイリアシングは16MB境界で実装されますが、ソフトウェア・アドレス・エイリアシングはページ単位で(各ページは4KB)実装されます)。ソフトウェア・アドレス・エイリアシングは、別のオペレーティング・システムほど頻繁には使用されません。一般にHP-UXでは、複数の仮想アドレスに同じオブジェクトをマッピングすることはありません。

テキスト・セグメントを最初に変換する際、テキスト・セグメントにはエイリアスがありません。ただし、同じテキスト・セグメントにプロセスまたはスレッドが属する場合、もう一度変換が必要になることがあります。テキスト・セグメントを共有するプロセスでは、エイリアスを使用しません。「書き込み時コピー」を使用してデータ・ページを共有する専用テキスト・セグメントを持つプロセスでのみ、エイリアスが使用されます。ユーザー・ページのカーネル変換を追加するためにエイリアスが使用されることもあります。

複数の仮想アドレスを同じ物理アドレスに変換する場合、HP-UXではエイリアス構造を使用して仮想アドレスを追跡します。ページ・フレーム(pfn)のエイリアスが、pfn_to_virt_entry_tから始まるエイリアス・チェーンで維持されます(ラージ・ページでは、ページの基本pfnに対応するpfn_to_virt_entry_tからエイリアスがリンクされます)。pfn_to_virt_entry_tのスペース・フィールドが無効であり、オフセット・フィールドがゼロでない場合、ゼロでない値がエイリアス構造のリンク・リストの最初を指し示します。各エイリアス構造に、エイリアスのスペースとオフセット、およびpdeのアクセス権と保護ID用の一時保持フィールドが含まれます。エイリアスの基本pfnのpfdatのpf_lockによって、エイリアス・チェーンの読み取りと変更が防止されます。

特定のエイリアス・スペースおよびオフセットをhpdeで検索するために、hpdeチェーンとそれに対応するpd_lockに対してスペースとオフセットがハッシュされます。pd_lockが取得されると、vtopde()ルーチンがhpdeをウォークして、タグの一致を見つけます。

aa_entfreelistは、空きエイリアス・エントリの二重リンク・リストの先頭です。仮想アドレスから物理アドレスへのこの新しい変換の情報が保存されているaa_entfreelistから、エイリアス構造が取得されます。

グローバル変数max_aapdirに、システム上のエイリアスhpdeの総数が含まれます。エイリアスhpdeとして使用するためにページが割り当てられると、そのページは返されないため、max_aapdirの値が時間がたつにつれて増加することがありますが、減少することはありません。

使用可能なエイリアスhpdeの数は、aa_pdircntに保存されます。エイリアスhpdeが使用または予約されると(後で移動しなければならない場合に備えて、htbl hpdeをエイリアス・リンク・リストに入れる場合は、エイリアスhpdeが1つ予約されます)、aa_pdircntが減分されます。エイリアスhpdeがaa_pdirfreelistに戻されるか予約を解除されると、aa_pdircntが増分されます。

使用可能なエイリアス構造の数は、aa_entcntに保持されます。エイリアス構造のグループとして使用するためにページが割り当てられると、そのページは返されません。システム上のエイリアス構造の総数でなく、使用可能な構造の数のみが追跡されます。
最初のページへ 前のページへ 次のページへ

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

オンラインサポート
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項