問題タブ [page-tables]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
page-tables - 3 レベルのページ テーブルが必要な場合
64 ビット アドレスのマシンがあり、各ページ テーブル エントリには、割り当てられたフレームへのポインタのみが含まれているとします。3 レベルのページ テーブルが必要な場合、可能な最大フレーム サイズを計算するにはどうすればよいですか? 3 レベルのページ テーブルについて混乱しています。どのような状況で 3 レベルのページ テーブルが必要ですか? どんな助けでも大歓迎です。
c - Qemu アドレス変換について
これは私のセットアップです:
VM 内のユーザー空間プログラムで、値が「8」の変数をアドレス bf9ee1a0 に保存します。
vm 内のカーネル空間で virt_to_phys 関数を呼び出すと、アドレスに対応する ff9ee1a0 の物理アドレスを取得します。
qemu では、pte と pte_addr はそれぞれ a5913865 と bf955f78 です。x86_cpu_handle_mmu_fault 関数を使用し、特定の printf ステートメントを追加しました。私の理解では、os と qemu のマッピングは同じでなければなりません。つまり、bf9ee1a0 は a5913865 にマップする必要があります。
ここには多くのレベルの翻訳が関係していることを私は知っています。ゲスト仮想 — ゲスト物理 — ホスト仮想。
ここに私の質問があります: 1. データが実際に保存されている場所を知りたいですか?
では、virt_to_phys() は何を意味するのでしょうか?
制御レジスタで使用されるアドレスが、vm 内の os とページング用の qemu の両方で同じであることを確認しました。では、なぜこの不一致が生じるのでしょうか。
pte が qemu に持っているページの内容を印刷する必要がある場合、どのように printf ステートメントを使用してそれらを印刷しますか?
どんな洞察も大歓迎です。
memory - コピー オン ライト : 父と息子がページを変更した後のステータスは?
プロセスをフォークすると、最初は父と息子が同じメモリ ページを共有します。ただし、そのうちの 1 人がこのページに書き込むと、最初のページがこの変更の影響を受けないように複製されます。これは、おおよそコピーオンライトと呼ばれるものです。
私の質問は次のとおりです。プロセスを fork() してから、子がページを変更するとどうなりますか。ページは一度複製されますが、その後、父親もページを変更します。ページが再度複製されましたか? 父親は、息子だけがすでに複製されていることを「知っています」か?
よろしくお願いいたします。
virtualization - Intel EPT テーブルは 4 レベルのページ テーブルですか?
図はここから取られます。
Q1. EPT テーブルはゲスト ページ テーブルの全体のコピーを保持しているようで、4 レベルのページ テーブルになっています。あれは正しいですか?
Q2. ちょっと無駄なスペースじゃない?
Q3. EPT 違反とは正確には何ですか? つまり、ゲストは新しいゲスト仮想アドレス (gVA) にアクセスしようとしていますが、EPT テーブルにはまだレコードがないため、VMM にトラップされ、2 つの gVA および gPA エントリが EPT テーブルに追加されます。あれは正しいですか?
assembly - ロングモード時の CR3 レジスタの設定方法 (64 ビット)
私は自分のオペレーティング システム プロジェクトに取り組んでいます。スターター コードは既にロング モードにジャンプし、一時ページ テーブルをセットアップします。これで、自分のページテーブルをセットアップして埋め、必要な方法でメモリのマッピングを完了しました。ここで、CR3 レジスタに PML4T の物理アドレスを設定する必要があります。
これは、その命令の実行中にクラッシュします。GDB ステップバイステップ添付
編集:
virtual-memory - ページ フォールトが発生した場合、そのページを PT だけでなく TLB にも読み込みますか?
私は現在、仮想メモリについて学んでおり、TLB ミスとページ フォールトに関するいくつかの質問に遭遇しました。私の理解は次のとおりです。
TLBミスしたらPTへ。PT がヒットした場合は、PT エントリをメモリから TLB にコピーします。
TLB ミスがあり、PT に移動したときにもミスした場合は、ディスクに移動してページを PT にコピーします。
この時点でページを PT にコピーしましたが、TLB を更新しますか? たとえば、そのページを TLB にもコピーしますか? それともPTだけ更新しますか?
ありがとう!
linux - Linuxでプロセスのページテーブルの内容を取得するには?
作成したプロセスのトップレベルのページ テーブルを表示しようとしています。
Linux で記述したモジュール内のプロセスのページ テーブル コンテンツを取得するにはどうすればよいですか?
64 ビット Intel アーキテクチャの Windows 8 ホストで Ubuntu 14.04 LTS 仮想マシンを使用しています。
assembly - ページテーブルとページディレクトリの違い
マイクロプロセッサやマイクロコントローラのパラダイムでは、アドレス空間という用語をよく耳にします。アドレスは、物理メモリ (プライマリ) 内の特定のメモリ ブロックを参照するために使用されることを理解しています。
私が正しく、アドレス空間がそのようなすべてのアドレスのスーパーセットである場合。右?
仮想メモリ/ページングを使用することで、セカンダリ ストレージを使用してアドレス空間を拡張しています。
このパラダイムでは、ページ テーブル、ページ テーブル エントリ、およびページ ディレクトリとは正確には何ですか? 最初の p.memory は論理的にセグメント化されており、これらのセグメントはページに分割されていることを理解しています。では、ページテーブルとは正確には何ですか? ページを含むテーブル? また、ページ ディレクトリとは、ページ テーブルのスーパー テーブルとは何ですか?