問題タブ [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.
x86 - 現在のビットがプロセスのページ テーブルのエントリに設定されている場合、それはどういう意味ですか?
参照されたページがプロセスの論理アドレス空間内にあるということですか? 参照されたページがメモリに常駐しているのではないかと考えていましたか?
linux - vmalloc - ページ フォールト時に別のプロセスのページ テーブルを更新する
Mel Gorman の本 Understanding the Linux Virtual Memory Manager を読んでいて、vmalloc() 領域へのアクセスが原因でプロセスのページ テーブルが更新される理由についての質問に出くわしました。このプロセスを説明するために彼が使用する図へのリンクを次に示します。
プロセスによって実行された vmalloc と、vmalloc() 領域にアクセスする別のプロセス
この場合に更新されるページ テーブルは、マスター リファレンス カーネル ページ テーブルであり、プロセス A のページ テーブルではありません。私の質問は、なぜプロセス B がプロセス A によって vmalloc() された領域にアクセスするのかということです。現実世界とは別のプロセスが割り当てたメモリ領域にプロセスがアクセスするシナリオは? 質問は基本的にこれに要約されます: プロセス A が仮想メモリを割り当てた場合、ある時点で、その仮想メモリによってバックアップされる物理メモリへの書き込みが開始されます。なぜ別のプロセスがそのメモリにアクセスしたいのでしょうか?
x86 - mmap はページ テーブルに格納されているフラグを変更しますか?
私の知る限りでは、
MMAP を使用して、マップされたメモリ領域の保護を変更できます。
たとえば、実行権限を追加したい場合
私のスタックページの1つに
これはもともと読み書き可能なパーミッションとして設定されています
データ実行ポリシー (DEP) のためです。
そして、この権限は、x86 アーキテクチャの W/XD などのページ テーブル フラグに反映されます。
だから私の質問は、MMAPを使用して特定のページの権限を変更すると、
カーネルにページテーブルフラグの変更を要求しますか?
TLBを自動的にフラッシュしますか?
ありがとう。
memory-management - 仮想アドレスがページテーブルに見つからない場合、カーネルは仮想アドレスをどのように変換しますか?
仮想アドレスがページテーブルに見つからない場合、カーネルは仮想アドレスをどのように変換しますか? ページはディスク上にありますが、カーネルはどこを正確に認識しているのでしょうか? (ディスク内の特定のアドレス)
ありがとう
memory-management - ページネーション、ページのサイズ、ページのテーブル - 操作メモリのサイズに関する結論
ページのサイズが に等しいと考えてみましょう
1 KB
。テーブルの 1 つのエントリには2B
. ページの表は 1 ページしか取りません (そう<= 1KB
)。運用メモリのサイズは であると結論付けることができます
<= 512 KB
か?
正解はNoですが、よくわかりません。私にとっては、答えはイエスです。私の推論を見て、私が間違っている場所を教えてください。
<=1024B/2B=512=2^9
テーブルには、ページのテーブルのエントリが含まれています。ページのサイズは1024B=2^10B
であるため、オフセットは<=10
ビット以下で済みます。ページ数には<=9
ビットが必要です -512=2^9
エントリがあるためです。したがって、9+10=19
. したがって<=2^19 bits
、アドレス指定を可能にします<= 2^19 B=2^9KB=512KB
。
どこが間違っていますか?
memory-management - ページサイズとページテーブルエントリサイズの違いは何ですか
ページ サイズとページ テーブル エントリ サイズの違いがわかりません。
私の理解では、ページサイズはページテーブルを均等に分割するために使用されます。Pages と呼ばれるブロックと同じサイズを使用して、メイン メモリをフレームに分割します。
ページ サイズ = フレーム サイズ。
絵が下手でごめんなさい。これは、ページ テーブルの視覚化です。
ページテーブルエントリサイズは、各ページエントリが占めるサイズです。そう、
ページ テーブル エントリ サイズ = ページ サイズ。
ただし、ページ テーブル エントリのサイズは、フレーム番号のビット数によって計算されます。
ページ サイズがページ テーブル エントリのサイズとどのように異なるのか、誰でも説明できますか? ページ テーブル エントリのサイズが、ページではなくフレームのビット数に基づいて計算されるのはなぜですか?
上記のすべてのコンポーネントでページテーブルがどれほど正確になるかを視覚化するのを手伝ってください