問題タブ [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.
c++ - QWidgets をレンダリングするときの大量のページ フォールト
Qt アプリケーションで大量のページ フォールトが発生していることに気付きました。ドッキング ウィジェット (下に数十個のウィジェットのウィジェット ツリーがある) のサイズを 2 秒間変更して再現し、AQTime を使用してその操作をトレースしました。この操作で 2000 のページ フォールトが発生します。何故ですか?
Windows XP 32 ビットで Qt 4.5.3 を使用する
更新: それらはソフト ページ フォールト
です。これをプレビューすると、コンボボックスをクリックしてこれらの項目の 1 つを選択するたびに、200 ページ フォールトが発生します。
assembly - アセンブリCALL命令、書き込み障害?
いくつかのオペコード逆アセンブリを使用するLinuxカーネルのページフォールトハンドラーで、x86アーキテクチャでは、CALLまたは0xE8命令が書き込みフォールトをスローし、ESIとEDIが両方ともNULLであることがわかります。CALLはメモリアドレスを取得し、EIPをその値に変更するだけであり、EIP + Relative_offsetであるため、ページを必要としないため、これには特定の理由があるのではないかと思いました。誰かがこれを片付けることができればそれは大いにありがたいです。
tlb - Intel プロセッサは TLB の無効化を遅らせることができますか?
これは、インテルのソフトウェア開発者マニュアル (注文番号: 325384-039US 2011 年 5 月) を参照して、セクション 4.10.4.4「無効化の遅延」で、TLB エントリの無効化の潜在的な遅延について説明しています。変更されました。
ソフトウェア開発者は、ページング構造エントリの変更とセクション4.10.4.2で推奨されている無効化命令の実行の間に、プロセッサが使用する可能性があることを理解する必要があります。ページング構造エントリの古い値または新しい値のいずれかに基づく変換. 次の項目は、遅延無効化の潜在的な結果のいくつかを説明しています: ページング構造エントリが変更され、R/W フラグが 0 から変更された場合1 にすると、このエントリによって変換が制御されるリニア アドレスへの書き込みアクセスで、ページ フォールト例外が発生する場合と発生しない場合があります。 "
線形アドレスのページ構造エントリが変更され (r/w フラグが 0 から 1 に反転)、その後、対応する TBL 無効化命令がすぐに呼び出される単純なケースを考えてみましょう。私の質問は、TLB の無効化の遅延の結果として、TLB の無効化を呼び出した後でも、問題の線形アドレスへの書き込みアクセスが失敗しない可能性があるということです (ページ フォールト)。
または、「遅延無効化」は、ページ構造が変更された線形アドレスの「無効化」命令が発行されていない場合にのみ、予測できない結果を引き起こす可能性がありますか?
c++ - Visual Studio からアプリケーションを起動するときのページフォールト
Visual Studio 2010 を使用して小さなプログラムを作成およびデバッグしています。問題は、Visual Studio 2010 からアプリケーションを起動するたびに、アプリケーションのプロセスで 1 秒あたり 100000 の範囲のページ フォールトが発生し、プログラムの速度が 10 倍以上低下することです。生成された実行可能ファイルをファイル システムから起動すると、起動の完了後にページ フォールトが生成されません。これは、デバッグと (すべての最適化が許可されている) リリース ビルドで発生します。例外はスローされません。
プログラム自体は約 200kib でコンパイルされ、実行時に約 10mib のデータを保持し、4gib 以上のメモリを使用できます。実行中のログ フレームワークのメイン スレッドとスレッドのみがあります。データは最初に 1 回読み込まれ、その後は結果のみが新しく割り当てられたメモリに格納され、最後にログに書き込まれます。
多くのディスク アクティビティはないようで、Windows リソース モニタはハード フォールトを示していませんが、タスク マネージャは増え続ける数を示しています。IDE を使用すると多少のパフォーマンスの低下が予想されることは承知していますが、これは少し過剰に思えます。何かアドバイス?
編集:
注: 新しいメモリの割り当て (解除) を減らすことで、カウントを約半分に減らすことができました。
Process Explorer は次のように述べています。
デバッガーに問題があるようです。付けなくても、期待通りに動作します。なぜこれほど大量のページ フォールトが発生し、すべてのビルドの速度が大幅に低下するのかはまだ疑問に思っています。
delphi - D2006 アプリで外部例外 C0000006 を取得する - Delphi に実行可能ファイル全体を強制的にロードさせるにはどうすればよいですか?
アプリを終了するときに、これが時々発生します。アプリはネットワーク経由で EXE を実行しています。EXE の一部がオンデマンドで読み込まれると、ページ フォールトになることは理解しています。
私は TDrawGrid の OnDrawCell メソッドでもそれを観察したので、それがどのようにページの読み込みを引き起こしたのか不思議です。また、例外が発生し続けました。
だから私の質問:
エラー C0000006 は他の原因で発生する可能性がありますか? アプリがメモリを管理する方法にかなり大きな変更を加えましたが、異常なことは何もありません。コードが動作していると確信しています。
起動時にアプリ自体をすべてメモリにロードするにはどうすればよいですか (Delphi 2006 では、Delphi の以降のバージョンのディレクティブがあることを理解しています)。
ティア
memory-management - セグメンテーションフォールトとページフォールト
セグメンテーションフォールトとページフォールトの違いや関係は何だろうと思っていましたか?
セグメンテーション違反はセグメント化されたメモリモデルにのみ属しますか?
ページフォールトはページメモリモデルにのみ属しますか?
両方が「はい」の場合、x86やLinuxなどのほとんどのコンピューターシステムはセグメント化メモリモデルではなくページングメモリモデルを使用するため、GCC Cコンパイラがセグメンテーション違反エラーを報告することがあるのはなぜですか?
ありがとう、よろしく!
windows - デバイス ドライバーがページ フォールトを引き起こすのはなぜですか?
高速データ転送用にパラレル IO カードを使用する Windows コンソール アプリケーションがあります。(一般規格HPDI32ALT )
私のプロセスはユーザー モードで実行されていますが、デバイスの API の背後のどこかにカーネル モード ドライバーのアクティビティ (PCI DMA 転送、デバイス ステータス レジスタの読み取りなど) があると確信しています。動作モデルはおおよそ次のとおりです。
- 起動時: API から IO バッファーへのポインターを要求します。
- 私のメインループで:
- API のブロックがデバイスのバッファ内の空き領域を待機中 (低水準点)
- 送信データで IO バッファを満たす
- デバイスに IO バッファへのポインタを渡すことにより、デバイスへの送信を開始します (この間、API は PCI バス上の DMA を使用してデータをカードに移動します)。
- IO が完了するのを待っている API のブロック
アプリケーションは、適切なデータ レートと持続的なスループットで長時間正常に動作しているように見えますが、sys internals ツールのプロセス エクスプローラーでプロセスを確認すると、多数のページ フォールト (1 秒あたり約 6k) が見られます。カードに ~30MB/s を移動しています。
私は十分な RAM を持っており、ページ フォールトがディスク IO に関連していないことを十分に確信しています。
ページ フォールトの原因について何か考えはありますか? また、受信モードで同一の IO カードを使用しているこのアプリケーションの受信側もあります。API を受信モードで使用しても、多数のページ フォールトは発生しません。
IO バッファをカーネル モードに移動すると、ページ フォールトが発生する可能性がありますか?
erlang - Erlangはページフォールトを引き起こします
ここで説明するスクリプトをユーザーと一緒に実行すると、すべてがうまくいきます。
ルートとして実行すると、クラッシュしました。
エラーは再現可能です。
私の質問は次のとおりです。
誰かがそこで何が起こっているのか私に説明しようとすることができますか?
erlangランタイムまたは私のOSに問題がありますか?
誰かがこのエラーを再現できますか?
カーネルを使用してubuntunattyでerlang5.7.4を実行しています
フェノムX4で。
windows - Windows DDK サンプルは、ページ アウトをどのように処理しますか? サンプルでそれを処理するコードはあまり見られません
Windows DDK サンプルがページ アウトを処理しないのはなぜですか? それらはページング不可ですか?
c++ - g++ を使用した C++ プログラムでのマイナー ページ フォールトの回避
このパズルを解こうとしています: Shipping Coding Puzzle . これは私がこれまでに思いついたコードです:
このロジックにはいくつかのバグがあるかもしれません。しかし、私の質問はロジックとは関係ありません。このコードを送信すると、正常に実行されますが、マイナー ページ フォールトの数が409
. リーダー ボードを見ると、誰かがマイナー ページ フォールトのある C++ コードを提出しています69
。これらのマイナーなページ フォールトを制御する方法はありますか? いくつかの g++ フラグを使用している可能性がありますか? 現在、私のメイク ファイルは非常に単純です: g++ -o MyExe MyExe.cc
.