問題タブ [page-fault]

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 投票する
2 に答える
1242 参照

algorithm - 使用頻度の低いページ フォールトの計算

メモリ管理とページ置換アルゴリズムは初めてです。最近使用されていないアルゴリズムに関する質問を見つけて印刷しましたが、残念ながら、私の回答と思考プロセスが正しいかどうかを判断できません。

無料の教科書を読んだり、YouTube で例を見たりして、アルゴリズムの理解を深めようと懸命に努力しています。ただし、概念を理解しているかどうかを説明し、回答を改善し、思考プロセスを修正する方法について提案を提供していただければ幸いです。下の画像を見てください。太字の数字はページ フォールトで、星の付いた数字はページ ヒットです (21 ページ フォールトを計算しました)。 ここに画像の説明を入力

PS 横読みしづらくて申し訳ありませんが、数字を小さくせずに表全体を画像に収める唯一の方法です。

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

x86 - tlb に保存されているフラグが一致しない場合に発生する障害は何ですか?

私の理解が間違っていなければ、TLBは仮想アドレスから物理アドレスへのマッピングだけでなく、書き込み可能フラグ(W)、実行無効(XD)フラグなどの各ページのフラグも格納します。

私の質問は、ヒープやスタックなどの実行不可能なページを実行しようとすると、どのような障害が生成されるのでしょうか? ページフォルトですか?

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

bash - 「トップ」の障害列とは何ですか?

Xcode を (バージョン El Capitan に) ダウンロードしようとしていますが、スタックしているようです。「top」を実行すると、「storedownloadd」というプロセスが表示され、「STATE」列がスリープ、スタック、および実行を交互に繰り返します。「FAULTS」の数字は急速に増加し、その後にプラス記号が付きます。「FAULTS」列は現在 400,000 を超えており、増加しています。「トップ」以外には、ダウンロードのアクティビティの兆候は見られません。これは何かがおかしいことを示していますか? スクリーンショットは次のとおりです。

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

memory-management - プロセスの常駐メモリは増加していますが、メジャー ページ フォールトはありません

malloc() を使用して 50Mb のメモリを割り当て、ループを使用してすべてのページを「タッチ」して常駐させる、以下の小さな C プログラムを作成しました。

実際、プログラムは動作しているように見えます。つまり、最初の 5 秒間のスリープの後、「トップ コマンド」出力の常駐メモリがいっぱいになり始め、最終的にすべての仮想メモリが RAM に割り当てられます。

プログラムのページ フォールトに気付きましたが、小さなものしかありません。

主要なページ フォールトがあってはなりませんか? 私が理解している限り、malloc() を使用すると、50Mb の仮想アドレス空間が作成されます。各仮想ページに書き込む前の実際の常駐サイズは非常に小さいですが、書き込み後は要求された仮想メモリに等しくなります。

ページを「タッチ」すると(ページを居住させるために)、各ページがディスクからDRAMに移動されますよね?それでは、メジャー ページ フォールトが発生しないのはなぜでしょうか。

また、malloc() を 50m 実行し、住居のサイズに気付いたとき、わずか数キロバイトしかありません。残りのページはどこにありますか? それらはディスク上にありますか?

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

linux-kernel - userfaultfd ecample をコンパイルしたい

ユーザー空間のページ ハンドラを処理したい。
次の URL は、userfaultfd の使用法を示してい
ます https://www.cons.org/cracauer/cracauer-userfaultfd.html
しかし、このプログラムをコンパイルできません。
エラーは次のとおりです。

このプログラムをコンパイルできないのはなぜですか?
私の環境:
Ubuntu 16.04 64bit
gcc バージョン 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

0 投票する
0 に答える
469 参照

c - 私のプロセスが*実際に*取っているマイナーフォールトの数は?

私は次の単純なプログラムを持っています。これは基本的にmmapファイルを保存し、その中のすべてのバイトを合計します:

私はこのようにします:

ファイル名と、が渡されるかどうかを制御するpopulateor nopopulate1を渡します。終了する前にエンターを入力するのを待ちます(何かをチェックアウトする時間を与えます)。MAP_POPULATEmmap/proc/<pid>

ランダム データの 1 GB のテスト ファイルを使用しますが、実際には何でも使用できます。

MAP_POPULATEを使用すると、ページ キャッシュ内のファイルでメジャー フォールトがゼロになり、ページ フォールトが少数になることが予想されます。perf stat私は期待される結果を得る:

45 のエラーは、ランタイムとプロセスのオーバーヘッドから発生します (マッピングされたファイルのサイズには依存しません)。

ただし、/usr/bin/time最大 15,300 の軽微な障害が報告されます。

同じ ~15,300 の軽微な障害が、topおよび を調べることによって報告され/proc/<pid>/statます。

を使用しない場合MAP_POPULATE、 を含むすべての方法で、perf stat最大 15,300 のページ フォールトが発生することに同意します。1,000,000,000 / 4096 / 16 = ~15,250つまり、1GB が 4K ページに分割され、カーネル機能 (「フォールトアラウンド」) によってさらに 16 分の 1 に削減されます。障害発生時のページ キャッシュ。

ここにいるのは誰?の文書化された動作に基づいて、MAP_POPULATEによって返される図perf statは正しいものです。1 回のmmap呼び出しで、マッピング全体のページ テーブルが既に取り込まれているため、これに触れたときに軽微な障害が発生することはありません。


1実際には、以外の populate文字列はとして機能しnopopulateます。

0 投票する
0 に答える
62 参照

opencl - OpenCL は自動ページ移行をサポートしていますか?

CUDA の最近のイテレーションでは、ドライバーによって自動的に処理される転送 (障害) を使用して、ホストとデバイスの両方でアクセス可能な「メモリを割り当てる」ことができます。

現在、OpenCL はそのような機能を許可していますか? もしそうなら、実際にそれをサポートする実装はありますか?