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

algorithm - ページ フォールトと LRU アルゴリズム

メインメモリは最大 4 ページまで保持できます。次の順序であるページで LRU アルゴリズムが使用された場合、最初にページ フォールトが発生するページはどれですか?

1,2,3,1,2,4,1,2,3

これは答えがないと思っていた試験問題です。メイン メモリには 4 ページを保持できますが、ページ 1、2、3、4 があるため、ページ フォールトが発生することはありません。

答えは4ページ目ですが、理由がわかりません。

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

python - このPythonコードで135k/秒のページフォールトが発生する原因は何ですか?(試行割りプライムふるい)

次のコードは作業スレッドで実行され、一時停止/レポートコマンドなどを受信して​​、うまくスピンします。RAMの使用に問題がなく、週末にハードドライブが溶けなかったため、これらはソフトフォールトだと思います。 、そしてそれは、数日前に起動したときに50ページフォールトしか発生していないので、結果を蓄積させた時間と関係があります。

「counter」属性は現在22,496,115であり、「results」には1,418,641個の要素があります。「結果」のスライスは、私が反対を感じていたので、1からリストを開始したために取得されます。

注:エラトステネスのふるいを使用してアルゴリズムを最適化し、おそらくページフォールトを削減できることは知っていますが、それは重要ではありません。正確な理由、または少なくとも最悪の犯罪者を特定しようとしています。ページフォールトなので、将来同じようなことをするのを避けることができます。このアルゴリズムは、「ばかげて高価で単純な作業スレッド」が必要な場合に、UIの応答性をテストするためだけに使用されます。

要求に応じた追加のセットアップピース:

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

windows - プロセスの合計ページ フォールトを取得する

タスク マネージャーと SysInternals Process Explorer の両方がプロセスのページ フォールトの合計量を表示しますが、私が見つけたすべてのパフォーマンス カウンターと WMI オブジェクトは 1 秒あたりのページ フォールトしか表示しません。

特定のプロセスの Page-Faults の合計量を表示する別の API または不明瞭なパフォーマンス カウンターはありますか? (Windows)

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

linux-kernel - x86で割り込みが無効になっている状態でmov命令がページフォールトを引き起こすとどうなりますか?

最近、カスタムLinuxカーネル(2.6.31.5、x86)ドライバーで、copy_to_userが定期的にバイトをユーザースペースにコピーしないという問題が発生しました。渡されたバイト数を返し、何もコピーしていないことを示します。コードを調べたところ、copy_to_userを呼び出しているときに、コードが割り込みを無効にしていて、コントラクトに違反していることがわかりました。これを修正した後、問題は発生しなくなりました。問題が発生する頻度は非常に低いため、割り込みを無効にすると問題が発生したことを証明する必要があります。

arch / x86 / lib /usercopy_32.crepから以下のコードスニペットを見ると; movslは、CXのカウントによって単語をユーザースペースにコピーします。サイズは終了時にCXで更新されます。movslが正しく実行されると、CXは0になります。CXはゼロではないので、movs?copy_to_userの定義と観察された動作に合わせるために、命令が実行されていない必要があります。

私が持っている2つのアイデアは次のとおりです。

  1. 割り込みが無効になっている場合、ページフォールトは発生せず、その後繰り返します。movs?何もせずにスキップされます。その場合、戻り値は、定義で指定され、観察された動作に応じて、CX、つまりユーザースペースにコピーされなかった量になります。
  2. ページフォールトは発生しますが、割り込みが無効になっているためLinuxはそれを処理できないため、ページフォールトハンドラーがこれをどのように行うかはわかりませんが、ページフォールトハンドラーは命令をスキップします。この場合も、CXは変更されずに残り、戻り値は正しくなります。

誰かが私にこの動作を指定するIntelマニュアルのセクションを指摘したり、役立つ可能性のある追加のLinuxソースを指摘したりできますか?

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

virtual-memory - これらの回答のうち、ページフォールトを最もよく表しているのはどれですか?

したがって、これは宿題の問題ではありません。これは、私の教授が中期的な勉強に役立つリソースとして投稿した前回の試験からの質問です。ただし、(私には)正解であると思われる2つの答えがあります。

A.)ページフォールトとは、置き換える物理ページをハードディスクに保存する必要があることを意味します。B.)要求された仮想は物理メモリにありません。

さて、ページフォールトとは、物理メモリページに保存されているデータが必要なデータではない場合であると理解しています。したがって、ハードドライブにアクセスして、正しいデータをロードする必要があります。また、ダーティフラグが1の場合は、物理メモリ内の以前のデータが変更されていることを意味するため、それをディスクに再保存する必要があります。

したがって、AとBの両方が正しいように思えますが、誰かがより良い選択肢が何であると思うかを教えてもらえないかと思いました。

私が選択を余儀なくされた場合、私はAと言います。

サイドノート 私は教授に答えについて電子メールを送りましたが、彼は応答するのが本当に苦手で、まだ私に電子メールを送り返していません。

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

caching - ページフォルトとダーティページ

CPU キャッシュについて読み始めましたが、2 つの質問があります。

1) CPU がページ フォールトを受け取り、制御をカーネル ハンドラに移したとします。ハンドラーは、ダーティとマークされたメモリ内のフレームを追い出すことを決定します。CPU キャッシュが有効で変更されたビットで書き戻されるとしましょう。現在、このフレームのメモリ コンテンツは古く、キャッシュには最新のデータが含まれています。カーネルはどのようにしてキャッシュを強制的にフラッシュしますか?

2) ページ テーブル エントリ (PTE) がダーティとしてマークされる方法は次のとおりです。TLB には、CPU がページの内容を変更するときに設定される変更ビットがあります。このビットは、コンテキスト スイッチで PTE にコピーされます。ページ フォールトが発生した場合、PTE はダーティではない可能性がありますが、TLB エントリには変更されたビットが設定されている可能性があります (まだコピーされていません)。この状況はどのように解決されますか?

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

linux - Linuxでのリアルタイムプロセスでのマイナーページフォールトの防止

プロセスを可能な限りリアルタイムで実行する必要があります。

すべての通信は、共有メモリ(メモリマップトファイル)を介して行われます。システムコールはまったくありません。共有メモリでのビジー待機を使用します。

プロセスはリアルタイムの優先順位で実行され、すべてのメモリがロックされmlockall(MCL_CURRENT|MCL_FUTURE)て成功し、プロセスはすべてのメモリをロックするのに十分ulimits です。

それを実行してperf stat -p PIDも、マイナーなページフォールトのカウントが表示されます。

私はこれをプロセスアフィニティありとなしの両方でテストしました。

質問:

マイナーなページフォールトでさえ、それらを完全に排除することは可能ですか?

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

linux - Linuxでのスタックの事前障害-単一または複数の障害が必要

Linuxでは、プロセスがシステムに(仮想)メモリを要求すると、vma(プロセスの仮想メモリの記述子)に登録されますが、すべての仮想の物理ページは呼び出し時に予約されません。後で、プロセスがこのページにアクセスすると、エラーが発生し(アクセスによりページフォールト割り込みが生成されます)、PF#ハンドラーが物理ページを割り当て、プロセスページテーブルを更新します。

2つのケースがあります。読み取りが書き込み保護されているゼロページ(特別なグローバル事前ゼロ化ページ)へのリンクに変わる可能性がある場合の障害。書き込みの失敗(ゼロページと、必要なだけでまだ物理的にマップされていないページの両方)は、実際のプライベート物理ページの割り当てになります。

mmap(および内部的にmmapでもあるbrk / sbrk)の場合、このメソッドはページごとです。すべてのmmapされた領域は、全体としてvmaに登録されます(開始アドレスと終了アドレスがあります)。ただし、スタックには開始アドレスしかないため、他の方法で処理されます(通常のプラットフォームでは高いアドレス、低いアドレスに成長します)。

質問は:

スタックの近くにある新しい未割り当てメモリにアクセスすると、PF#を取得して大きくなります。スタックの隣のページではなく、スタックから10ページまたは100ページ離れているページにアクセスした場合、この成長はどのように処理されますか?

例えば

このプログラムは、スタックに割り当てられた2つまたは50のプライベート物理ページを取得しますか?

カーネルに単一のページフォールトに数十の物理ページを割り当ててから、ページごとに数十のページフォールトを割り当てるように依頼することは有益だと思います(1つの割り込み+1つのコンテキストスイッチ+Nのページ割り当て要求に対する単純でキャッシュフレンドリーなループとNの割り込み+ N個のコンテキストスイッチ+N個のページ割り当て(mmコードがIcacheから削除される可能性がある場合)。

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

paging - 仮想メモリ-RAMとハードドライブのページを同時に表示しますか?

ページを同時に物理メモリと仮想メモリに配置できますか?

仮想メモリ上にあるアドレスを要求した場合、それは常にページフォールトをトリガーしますか?最初の質問が真の場合、ページが物理メモリにもない場合にのみページフォールトをトリガーする必要があります。そうですか?