問題タブ [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 投票する
1 に答える
713 参照

linux-kernel - ドライバー mmap 操作 ページテーブルの作成

ドライバーでの mmap 操作を理解しようとしています。mmap を行っている理由はわかっています。mmap の次の 2 つの実装と混同しています。

最初の例は、ページ テーブルを変更しない単純な実装ですが、2 番目の例は変更します。

では、2番目のアプローチの根拠は何ですか。最初の例も適切に機能します。

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

memory - 半分しか使用されていない場合、マルチレベルのページテーブルはページテーブル全体を保存しますか?

1024 エントリの 2 レベルのページ テーブルがあるとします。2 レベルのページ テーブルが 3 つだけ使用され、そのうちの 1 つが半分空であることを考慮してください。したがって、3 つのエントリを持つトップレベルのページ テーブルがあります。

では、ページ テーブル システムは RAM でどのくらいのメモリを占有するのでしょうか?

それぞれ4 ページ1024 * 32bits = 4kBytesずつ保存する必要がありますか、それとも使用する分だけ保存することを許可されていますか? (3 + 1024 * 2 + 1024 * (1/2)) * 32ビットだけ?

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

memory - 2 レベルのページ テーブルのサイズの計算

したがって、ページ サイズは4kb32ビット アドレス CPU で、実装された 2 レベルのページ テーブルがあります。

1081 ページを保存したいので、次のものが必要です。

  1. 1024第 2 レベルのページ テーブルのエントリ
  2. 57別の第 2 レベルのページ テーブルのエントリ
  3. 2エントリを保持するトップ レベルのページ テーブル。

さて、これらのページ テーブルのフル サイズをメモリに保存する必要がありますか?

  1. 最初のケースでは、次に使用します4bytes * 2 + 4bytes * 1024 + 4bytes * 57
  2. それ以外の場合は1 * 4bytes * 1024 + 2 * 4bytes * 1024

ヒントはありますか?

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

virtual-address-space - それぞれのレベル 2 ページ テーブル ビットとページ テーブル エントリを計算します。

  1. レベル 1 ページ テーブルはちょうど 1 ページのメモリを占有します
  2. 32 ビット仮想アドレス
  3. ページサイズ 8kb
  4. PTE 4 バイト

各フィールドは何ビットですか?
レベル 1 テーブルにはいくつのエントリがありますか?
レベル 2 テーブルにはいくつのエントリがありますか?
レベル 2 ページ テーブルがマップするページ数は?

試してみたところ、オフセットは 13、レベル 1 は 11、レベル 2 は 8 でした。残りの解決方法がわかりません。

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

operating-system - ページ テーブルにあるエントリの数を確認する方法

システムが 32 ビット アドレス空間を使用しており、各エントリが 32 ビットで、各ページが 8 KB であるとします。ページテーブルにはいくつの異なるエントリが含まれますか?

私の論理:32ビットのアドレス空間は、合計2 ^ 32のアドレスを意味するため、合計2 ^ 37ビットです。ページあたり 8 KB は、ページあたり合計 2^16 ビットを意味します。したがって、ページ テーブルには 2^37 / 2^16 = 2^21 のエントリがあります。

これは正しいです?

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

linux - 実行可能ファイルで使用した場合、mmap() はどのように機能しますか?

私はUbuntu 14.04 LTSに取り組んでいます。

  • 次の 2 つのファイルがありますfile1.cfile2.c
  • それらはそれぞれ と にコンパイルされexec1ますexec2file2.c静的ライブラリの関数を利用します。

exec1exec2を使用して仮想アドレス空間にマップしmmapます。次の行は からのものfile1.cです。

次の一連のイベントが発生します。

  1. exec1実行されます。
  2. exec1その仮想アドレス空間へのmmaps exec2(ここで正確に何が起こるのでしょうか?)
  3. exec2が実行されます (この段階でexec1は、バックグラウンドで実行され続けます。正確には何が起こっているのでしょうか?)

exec2PS:がディスク上にあり、それが?mmapによって編集されるとどうなるかを知りたい exec1に対応する仮想アドレス空間とページ テーブルはどのようにexec1変化しますか?
次に、exec2実際に実行されるとメインメモリに持ち込まれます。物事はどのように変化しますか?で使用される静的ライブラリ関数はメモリ内のどこにありますfile2.cか? 私はそのプロセスについて明確な考えを持っていません。誰でもこのトピックに光を当てることができますか?

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

operating-system - アドレスとページ テーブル サイズを決定する

この質問が何度も出されたことは承知していますが、いまだに苦労していると感じています。

物理アドレスと仮想アドレスがどのように見えるかを判断し、ページ テーブルのサイズを計算する必要があります。

私が持っているものが正しいかどうかはわかりませんが、これは私がこれまでに得たものです:

ページエントリ数は 2^20/2^10=2^10

ページテーブルのサイズを計算するにはどうすればよいですか? 各 PTE には仮想アドレスと物理アドレスの両方があるため、混乱しています。ページエントリ数*(物理アドレス+仮想アドレス)でしょうか? 現在のビットが設定されている場合、どのように違いますか?

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

operating-system - How does the OS update the appropriate page table when it evicts a victim page?

In an OS that uses virtual memory, each process has a page table. Each page table maps a process's virtual memory pages to the system's physical memory pages and indicates whether a given page is currently valid (loaded in memory) or not.

Suppose that memory is running low and the OS needs to choose a page to evict from physical memory. There are different algorithms for this. For example, FIFO, LRU. Once the OS chooses a page to evict, how does it invalidate any existing references to the page?

If the victim page is currently used by the active process, then the OS must invalidate the mapping in the current process's page table. If the victim page is currently used by another process, the OS must invalidate the mapping in the other process's page table. In any case, how does the OS determine which page table to update (if any), and how does it know where the mapping lives in that page table without doing a linear search?

There is a detailed description of x86 page table structure beginning at slide 22 of this presentation:

http://www.scs.stanford.edu/12au-cs140/notes/l8.pdf

I also found some helpful overviews of virtual memory:

http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/9_VirtualMemory.html http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/virtual.html

Similar Stack Overflow question without an answer:

how does linux update page table after context switch

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

operating-system - 特定の MMU は 32 ビットおよび 64 ビットの仮想アドレスで動作しますか?

新しいプロセスが起動すると、オペレーティング システムは MMU のレジスタをプロセスのページ テーブルで初期化します。仮想アドレス変換 MMU は仮想アドレスを取得し、それをコンパレータに渡し、物理アドレスを取得します (間違っていたら訂正してください)。したがって、ページ テーブルがハードウェアの一部である場合、1 つの MMU が 32 ビットおよび 64 ビットのオペレーティング システムでどのように機能するかを説明します。つまり、32 ビットの仮想アドレスを取得するようにプログラムされている場合、64 ビットの仮想アドレスを取得したときにどのように機能するかということです。

ありがとう。