問題タブ [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.
linux - Arm64 Linux ページ テーブル ウォーク
現在、私はいくつかの研究関連プログラムを開発しておりpte
、いくつかの特定のアドレスを見つける必要があります。私の開発環境は Juno r1 ボード (CPU は A53 と A57 ) で、arm64 Linux カーネルを実行しています。
次のような典型的なページ テーブル ウォーク コードをいくつか使用します。
ただし、プログラムpte
がアドレス (0xffffffc0008b2000) をチェックすると、常に空の が返されますpmd
。
私の推測ではpgd
、最初のステップで間違っていたと思います。私が確認したアドレスはカーネル空間のアドレスであるのに対し、使用すると(ユーザー空間)しか取得できないとティムズ ノーツが言っているのを見たので、 .current->mm
pgd of TTBR0
pgd
pgd of TTBR1
私の質問は次のとおりです。pte
カーネル空間アドレスの を取得したい場合、 を使用current->mm
して取得できpgd
ますか?
できない場合、代わりに他に試すことができるものはありますか?
どんな提案でも大歓迎です!ありがとうございました。
サイモン
cpu-architecture - 各レベルのページ テーブルの 1 つのエントリでカバーされる仮想メモリの総量は?
次のパラメータは、40 ビットの仮想アドレスと 1G バイトの物理 (メイン) メモリを使用するシステムに適用されます。ワードサイズは 64 ビット (8 バイト) です。アドレスはバイトを指し、バイト境界で整列されます。i ビット アドレスには次の表記を使用します。Ai-1...A2、A1、A0 ここで、Ai-1 はアドレスの最上位ビットで、A0 はアドレスの最下位ビットです。仮想アドレスは V39-V0 で示され、物理アドレスは P29-P0 で示されます。
これは私がこれまでに見つけたものです。
これは 40 ビットの仮想アドレスであり、ページ サイズは 64kB (2^16) であるため、16 ビットはオフセット用であり、40 から 16 を引きます。残りの 24 ビットは仮想ページ番号 (VPN) 用です。VPN は、それぞれ 8 ビットの 3 つのフィールドに分割されます。これで、3 レベルのページ テーブルができました。各テーブルには 2^8 エントリがあり、各テーブルのサイズは です2^8 * 4 bytes = 1024 bytes
。
ここからどのように進めて、各レベルのページ テーブルの 1 つのエントリによってカバーされる仮想メモリの総量を見つけますか?
operating-system - OS メモリ ページングの階層ページ テーブル
現在、OS のメモリ管理について勉強しています。
階層ページテーブル構造で、32 ビットマシンの場合4KB
、サイズpage-size
とサイズ。4B
page-entry
なぜアドレスはビットに分割されているのですか10-10-12
私は知っています20 - 12
、12
ビットはoffset
4kbyteの値です -> 2^12
しかし、なぜ 20 ビットが 10-10 になるのか
11-9や12-8は無理ですか?
operating-system - 階層ページ テーブルと逆テーブル
メモリのページ構造について読みましたが、いくつかのポイントを取得できません。
ページ テーブル: 私が理解したように、プロセス (Intel i5 など) にはページ テーブルと TLB がクリスタルに統合されていますが、そうではありませんか? ただし、このテーブルには仮想ページのアドレスが含まれていないため、OS は操作メモリにまだ 1 つのページ テーブルを持っている必要があります。そう?
逆テーブル: ページ テーブルがあることは理解しましたが、このテーブルには実際のメモリ ブロックのアドレスが含まれています。そして、私はもう何も得ませんでした。このテーブルは、プロセスまたは OS のどこにあり、操作メモリに提供されますか。ハッシュ関数とは何ですか? 写真から。PID - プロセス ID (何のためのものか)、p - ページ番号 (物理ページか仮想ページか。物理ページの場合、このテーブルは何のためか)。
Pls、私に Wiki などを紹介しないでください。私はすでにそれを読みましたが、入手できませんでした。誰かがそれをより明確に説明できますか?