問題タブ [address-space]
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# - UInt64 (C#) より大きい数値をどのように処理しますか?
C# では、UInt64 の最大値 (18,446,744,073,709,551,615) を大幅に超える数値を格納して計算するにはどうすればよいですか?
.net - .NET アプリのアドレス空間で dll イメージを並べ替えて、より連続した空き領域を利用できるようにすることはできますか?
代替テキスト http://www.freeimagehosting.net/uploads/67f98ad782.png
この画像は、アプリのアドレス空間の断片化を示しています。(サードパーティの) dll イメージ (紫) を強制的にまとめて断片化を解消 (または軽減) する方法はありますか?
このアプリは 32 ビット XP で動作します。明らかに、最終的に 64 ビット Windows 7 に移行すると、この問題はなくなります。
ありがとう!
windows - OS がアドレッシングに 64 ビット全体を使用できないのはなぜですか? なぜ 48 ビットだけなのですか?
「Linux カーネルについて」を読んでいます。
64 ビット アーキテクチャのページング
前のセクションで説明したように、2 レベルのページングは 32 ビット マイクロプロセッサで一般的に使用されています。ただし、2 レベルのページングは、64 ビット アーキテクチャを採用するコンピューターには適していません。その理由を説明するために、思考実験を使用してみましょう。
まず、標準のページ サイズを 4 KB と想定します。1 KB は 2 10アドレスの範囲をカバーするため、4 KB は 2 12 アドレスをカバーするため、オフセット フィールドは 12 ビットです。これにより、最大 52 ビットの線形アドレスが、テーブル フィールドとディレクトリ フィールドの間で分配されます。アドレス指定に 64 ビットのうち 48 ビットのみを使用することにした場合 (この制限により、快適な 256 TB のアドレス空間が得られます!)、残りの 48-12 = 36 ビットをテーブル フィールドとディレクトリ フィールドに分割する必要があります。これら 2 つのフィールドのそれぞれに 18 ビットを予約することにした場合、各プロセスのページ ディレクトリとページ テーブルの両方に 2 18エントリ、つまり 256,000 を超えるエントリが含まれるはずです。
「アドレス指定に64ビットのうち48ビットのみを使用することにした場合」。なんで?& なぜ 48 ビットだけなのですか? なぜ他の番号ではないのですか?
まあ、私は普通の PC ユーザーであり、プログラマーです。32ビットのアドレッシング、つまりプロセスごとの4GB(より正確には2GB / 3GB)のアドレス空間が限界であるとは信じがたいです。本当にこの制限に遭遇した場合。例を教えてください。
Windowsのこの制限は何ですか?
仮想メモリ != 物理メモリ & プロセッサ アドレス ピンは、仮想メモリとは何の関係もないことを知っています。これはまったく別の質問です。プロセッサのアドレス ピンの数 (= アドレス バスのサイズ) を知る方法。http://ark.intel.comプロセッサの仕様には、この仕様は含まれていません。
答え:
最初の質問に対する合理的な回答については、Paul Betts の回答を参照してください。
memory-management - 線形アドレスと物理アドレス
リニアアドレスとは?物理アドレスとどう違うのですか?
process - ユーザー空間からカーネル空間への切り替え中に4GB(VM)アドレス空間がどのように使用されるか
プロセスアドレス空間がプロセス/カーネルに分割される方法に関するオンラインスレッド/チュートリアルがあれば、私はたくさん見ました
例:私はprintfとして呼び出しているHelloworldプログラムをいくつか持っています(次に、カーネル空間に入るために書き込みシステム呼び出しを行います)
カーネルが Helloworld プログラム スタックをどのように使用しているかは疑問です。実行全体がどのように行われるか教えていただけますか...
./helloworld -> printf() -> システムコールの書き込み -> ディスプレイドライバー -> 書き込みから戻る -> helloworld に戻る
ありがとう、アマレンダー
sql - アドレス空間が連続している場合、IDENTITY列のルックアップは高速ですか?
IDENTITY
列( )を持つ非常に大きなテーブルがありbigint
、このテーブルが削除される可能性がある場合、アドレス空間(使用可能なID)の断片化により速度が低下しますSELECTS
か?
明確化:
アドレス空間の断片化とは、テーブルから行を削除するときに発生するディスク上の断片化ではなく、ID列の値に残っているギャップを意味します。
c++ - プログラムで使用される DLL で宣言された変数はどこに格納されますか?
インターフェイスを公開するプログラム(私のものではなく、ソースコードはありません)があるので、プログラムによって呼び出されるDLLを作成できます。ここで、私が作成したこの DLL で変数を宣言すると、これはどのメモリ空間に格納されるのでしょうか?
つまり、EXE のアドレス空間のメモリ空間に収まるだけですよね?ただし、EXEに関してDLLはどのようにロードされますか? DLL は 1 回だけメモリにロードされると思っていましたが、DLL でローカル変数を作成することとどのように関係しているのでしょうか? (オブジェクト、クラスなど)
windows - Windows が再起動せずに ASLR を適用しているかどうかを確認するにはどうすればよいですか?
私の知る限り、ASLR アドレス空間レイアウトのランダム化は、システムの起動ごと (再起動ごと) にのみランダムな再配置を行います。
アドレス空間レイアウトのランダム化 (ASLR)
ASLR は、システムの起動時に実行可能イメージをランダムな場所に移動するため、エクスプロイト コードが予測どおりに動作することが難しくなります。(...)
この場合、Windows を繰り返し再起動してランダム性が発生することを期待せずに、C++ モジュールまたはシステム モジュール(たとえば) に対して ASLR が発生していることを「テスト」または確認するにはどうすればよいでしょうか?kernel32.dll
operating-system - 子プロセス(fork()によって作成された)による親プロセスのヒープセクションへのアクセスは合法ですか?
子プロセスは親プロセスのヒープアドレス空間にアクセス(読み取りおよび書き込み)できますか?以下は、 http://www.ideone.com/R5vDTで試した、正常に実行されているプログラムです。
出力は次のとおりです。
COW(コピーオンライト)について読んだことがありますが、pが指すアドレスは書き込み操作後も同じです。1つのプロセスがアドレス空間外のメモリにアクセスしているため、オペレーティングシステムで例外が発生することはありませんか?
c - メモリ マップド ライブラリのファイル名 osx
現在のアプリケーションのすべてのメモリ マップ ライブラリのファイル名を取得する必要があります。現在、マップされたすべてのライブラリを vm_region 経由で調べています。残念ながら、現在のリージョンのファイル名に関する情報は提供されません。vmmap で popen を実行せずに c でこの情報を取得する方法はありますか?