問題タブ [memory-access]
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.
memory-management - メソッド呼び出しで、オブジェクト メンバーのアドレスはどのように計算されますか?
質問が少し一般的であることは知っていますが、すでに一般的な回答が必要です。だから私が理解しようとしているのは、オブジェクトのメンバー変数がメモリの観点からどのようにアクセスされるかということです。たとえば、そのオブジェクトでメソッドが呼び出されたときですか?
たとえば、私はこの単純なクラスを持っています。
初期化される前であっても、ランタイムはhooのメモリアドレスをどのように把握しますか? 以下のコードにも同じことが当てはまります。
ランタイムは、値を格納するためにここでフィールドのアドレスをどのように知るのでしょうか?
IMO、少なくともJavaの場合、これらの変数アドレスはクラスファイルのオフセットにマップされるため、このオフセットを渡されたオブジェクト参照に(仮想メソッドに)追加することで(仮想メモリ上の)正確な場所を把握できます。しかし、確かではありません...
何か案は?
c - 逆参照前に初期化されていないポインターに値を代入する
char ポインター (*pData など) が NULL に初期化されずに宣言されているコード スニペットを見つけました。
関数 SomeFuntionToAssignValue() を呼び出した後、pData を逆参照すると、いつでも「メモリ アクセス例外」エラーがスローされますか?
コンパイル中またはローカル テスト中 (ここでは、いつでも再ロードできるターゲットでテストが行われるため、通常はメモリ破損の可能性が減少します)、「メモリ アクセス例外」エラーは発生しませんでした。
しかし、ターゲットが少なくとも 1 週間リロードされなかったフィールド環境でのテスト中に、「メモリ アクセス例外」エラーがスローされました。
では、NOT を実行char *pData = NULL
すると「メモリ アクセス例外」エラーが発生する可能性はありますか?
x86 - 最新の x86/amd64 チップで L1、L2、L3 CPU キャッシュをオフにするにはどうすればよいですか?
x86/x86_64 アーキテクチャのすべての最新の高性能 CPU には、L1、L2、場合によっては L3 (非常にまれなケースでは L4) というデータ キャッシュの階層があり、メイン RAM から読み込んだデータはそれらのいくつかにキャッシュされます。
プログラマーは、一部またはすべてのキャッシュ レベルで一部のデータをキャッシュしないようにする場合があります (たとえば、16 GB の RAM を memset し、一部のデータをキャッシュに保持したい場合)。これは MOVNTDQA のようです ( https://stackoverflow.com/a/37092 http://lwn.net/Articles/255364/ )
しかし、キャッシュの一部またはすべてのレベルを完全に (ただし一時的に) オフにして、すべてのメモリをアクセス命令 (グローバルまたは一部のアプリケーション / RAM の領域) はメモリ階層を使用しますか? 例: L1 をオフにし、L1 と L2 をオフにしますか? または、すべてのメモリ アクセス タイプを「キャッシュされていない」UC (CR0 の CD+NW ビット??? SDM vol3a ページ423 424、425および「第 3 レベル キャッシュ無効化フラグ、IA32_MISC_ENABLE MSR のビット 6 (ベースのプロセッサでのみ使用可能) Intel NetBurst マイクロアーキテクチャ) — L1 および L2 キャッシュとは関係なく、L3 キャッシュを無効および有効にできます。")
このようなアクションは、AES キーの盗難、隠しキャッシュ チャネル、Meltdown/Spectre などのキャッシュ サイド チャネル攻撃/リークからデータを保護するのに役立つと思います。ただし、この無効化には膨大なパフォーマンス コストがかかります。
PS: 何年も前に技術ニュース Web サイトにそのようなプログラムが投稿されたことを覚えていますが、今は見つかりません。いくつかの魔法の値を MSR に書き込み、その後実行されるすべての Windows プログラムを非常に遅くするのは、単なる Windows exe でした。キャッシュは、再起動するか、「元に戻す」オプションでプログラムを開始するまでオフになっていました。