問題タブ [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.

0 投票する
3 に答える
49017 参照

memory - 仮想メモリのページテーブルサイズを決定する

38ビットの仮想バイトアドレス、1KBのページ、512MBの物理メモリを備えた仮想メモリシステムについて考えてみます。有効、保護、ダーティ、および使用ビットが合計4ビットであり、すべての仮想ページが使用されていると仮定した場合、このマシンの各プロセスのページテーブルの合計サイズはどれくらいですか?(ディスクアドレスがページテーブルに保存されていないと仮定します。)

0 投票する
1 に答える
334 参照

virtualization - ハードウェア仮想化 - ハイパーバイザー クエリ

ゲスト OS のゲスト ページ テーブルに変更があった場合、ハイパーバイザーはどのように変更を反映しますか。ゲスト ページ マッピングとシャドウ ページ マッピングの間の対応はどのように維持されますか?

1 つの方法は、メモリ アドレスの書き込み保護です。ゲスト ページ テーブルへの書き込みがあるときはいつでも、シャドウ ページ テーブルへの対応する変更を保証する適切なハンドラーがあります。この分野でさらにいくつかの情報を得ることができますか?

0 投票する
2 に答える
15779 参照

memory-management - すべてのプロセスに独自のページ テーブルがありますか?

すべてのプロセスに独自のページ テーブルがありますか、それともページ エントリを 1 つの大きなページ テーブルに追加するだけですか?

0 投票する
1 に答える
12319 参照

operating-system - ページング: 基本、階層、ハッシュ、反転

オペレーティングシステムとページテーブルに関して、ページングとページテーブルには4つの一般的な方法があるようです

基本 - ページ番号とオフセットを格納する単一のページ テーブル

Hierarchical - 仮想アドレスを複数の部分に分割する多層テーブル

Hashed - 同じエントリへの複数のハッシュ マッピングを含むことが多いハッシュ ページ テーブル

Inverted - The logical address also includes the PID, page number and offset. Then the PID is used to find the page in to the table and the number of rows down the table is added to the offset to find the physical address for main memory. (Rough, and probably terrible definition)

I am just wondering what are the pros and cons of each method? It seems like basic is the easier method but may also take up more space in memory for a larger address space. What else?

0 投票する
2 に答える
1338 参照

windows - Windows メモリの仕組み - ページ テーブルとデータ

私は以下を理解しようとしていました:

  • ページテーブルは、ある時点で仮想メモリマネージャーによって仮想メモリと物理メモリの間の変換のために構築されることを知っています。システムには多くのプロセスが実行されているため、一度にアクティブなプロセスのみであっても、非アクティブなプロセスのページ テーブルがいつでもページ ファイルに移動されるかどうか疑問に思っていました。下位 2 GB の領域がウィンドウ用に予約されているという事実を考えると、ウィンドウがシステム上のすべてのプロセスのページ テーブルを保持することは理にかなっています。現在のプロセスが切り替えられた場合、ページファイルに移動することも理にかなっていますか?

  • 書き込み可能な (データ) ページについても同様です。ウィンドウは、すべてのプロセスのすべてのデータ ページをメモリ内に保持するか、ある時点でページ ファイルに移動します。私のマシンでは、タスク マネージャーは 1.5 GB の RAM が 3 GB のうち使用されており、1.5 は [パフォーマンス] タブのシステム キャッシュであるため、データはすべてのアプリケーションで物理メモリにとどまっていると理解しています。しかし、ページング ファイルに移動する必要がある場合はありますか?

0 投票する
2 に答える
717 参照

assembly - x86cr3およびlinuxswqpper_pg_dir

Linuxソースコード(バージョン2.6.18)の場合:

また、load_cr3(pgdir)およびwrite_cr3(x)マクロ:

cr3制御レジスタ全体がページディレクトリのアドレスを格納しているようです。ただし、Intel ia-32 Developer's_Manualを参照すると、別の話になります。インテルのマニュアルには次のように書かれています。

マニュアルによると、最上位20ビットはレジスタcr3全体ではなくページディレクトリのアドレスを格納しますcr3。また、ページディレクトリが正確に4kbであるため、アドレスの最下位12ビットは常にゼロであるため合理的です。

ちょっと変じゃないですか?cr3Linuxコードは、の最上位20ビットではなく、ページディレクトリのアドレスを割り当てるだけswapper_pg_dirです。レジスターは正確に何cr3を保存しますか、インテルのマニュアルが示唆するアドレスまたはフォーマットは何ですか?

次のリンクはIntelのマニュアルです:http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

0 投票する
2 に答える
34185 参照

virtual-machine - シャドウ ページ テーブル (VMM 用) は正確には何をしますか?

私の理解では、シャドウ ページ テーブルにより、VM 内の物理メモリをエミュレートする必要がなくなります。

すなわち。

それ以外の:

ゲスト OS -> VMM + 仮想物理メモリ -> ホスト OS -> ホスト ハードウェア

それはただ:

ゲスト OS -> VMM -> ホスト OS -> ホスト ハードウェア

シャドウ ページ テーブルは、プロセスがホスト ハードウェアのメモリに適切にアクセスできるようにするだけです。また、ページ フォールトがどのように機能するかもわかりません (または、すべての物理メモリがホストによって処理されるため、ホストがページ フォールトやスワップなどを処理します)。

0 投票する
2 に答える
277 参照

c - コピーオンライトで共有されなくなったページを見つける

Linux にプロセスがあり、そこからfork()別の同一のプロセスがあるとします。ing の後fork、元のプロセスがメモリへの書き込みを開始すると、Linux のコピー オン ライトメカニズムによって、フォークされたプロセスが使用するものとは異なる一意の物理メモリ ページがプロセスに与えられます。

実行のある時点で、元のプロセスのどのページが書き込み時にコピーされたかを知るにはどうすればよいですか?

SIGSEGV シグナル ハンドラーを使用して、最初からすべてのページへの読み取り専用アクセスを許可したくありません。これは、望ましくないオーバーヘッドを誘発するためです。

0 投票する
2 に答える
12047 参照

32-bit - マシンには32ビットアドレスと8KBマシンがあります

マシンのアドレス空間は32ビットで、ページサイズは8KBです。ページテーブルは完全にハードウェアであり、エントリごとに1つの32ビットワードがあります。プロセスがスケジュールされると、そのページテーブルがメモリからハードウェアに1ワード/100nsの速度でコピーされます。各プロセスが100ミリ秒(ページテーブルのロード時間を含む)実行される場合、CPU時間の何分の1がページテーブルのロードに費やされますか?

はい; これは宿題の問題です。私はそれを調べました、そして今のところ私はそれを見つけました

ページテーブルのサイズ(バイト)=エントリの数*エントリのサイズ。したがって、x = 32 * 8192(ビット)= 262144

私はこれが間違った答えであり、52であることを知っています。後者の式で使用する4288ms

ページテーブルをロードする時間/合計時間=CPU使用率

よくわからない解決策がここに掲載されています。

http://www.cs.inf.ethz.ch/ssw/exercises/solution_04.pdf

0 投票する
2 に答える
9123 参照

linux-kernel - ブート中の Linux カーネル空間のページ テーブル

Linux カーネルのページテーブル管理に混乱を感じていますか?

Linux カーネル空間で、ページ テーブルがオンになる前。カーネルは、1 対 1 のマッピング メカニズムを使用して仮想メモリで実行されます。ページ テーブルがオンになると、カーネルはページ テーブルを参照して、仮想アドレスを物理メモリ アドレスに変換します。質問は次のとおりです。

  1. この時点で、ページ テーブルをオンにした後、カーネル スペースはまだ 1GB (0xC0000000 から 0xFFFFFFFF まで) ですか?

  2. また、カーネル プロセスのページ テーブルでは、0xC0000000 ~ 0xFFFFFFFF の範囲のページ テーブル エントリ (PTE) のみがマップされます。カーネル コードがそこにジャンプしないため、PTE がこの範囲外にある場合はマップされませんか?

  3. ページテーブルをオンにする前後のマッピングアドレスは同じですか?

    例えば。ページ テーブルをオンにする前に、仮想アドレス 0xC00000FF が物理アドレス 0x000000FF にマップされ、ページ テーブルをオンにした後、上記のマッピングは変更されません。仮想アドレス 0xC00000FF は引き続き物​​理アドレス 0x000000FF にマップされます。異なる点は、ページ テーブルをオンにした後、CPU がページ テーブルを参照して仮想アドレスを物理アドレスに変換することだけです。これは以前は必要ありませんでした。

  4. カーネル空間のページ テーブルはグローバルであり、ユーザー プロセスを含むシステム内のすべてのプロセスで共有されますか?

  5. このメカニズムは、x86 32 ビットと ARM で同じですか?