問題タブ [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.

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

linux-kernel - copy_to_userはs390でどのように機能しますか?

s390アーキテクチャーでは、仮想カーネルとユーザー・アドレス・スペースが同時に存在することはありませんが、どのように機能しcopy_to_userますか?

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

math - アドレスバスの幅とさまざまな情報を指定して使用可能なバイト数

プロセッサには

  • 24ビットアドレスバス
  • 16ビットデータバス
  • 単語には2バイトが含まれています
  • バイトアドレス可能な
    周辺機器とメモリユニットが接続され、メモリ空間全体が使用される可能性が高くなります。

かなりの数の質問があり、私は24ビットアドレスバスがあるという事実だけを使用します。

システムのアドレス可能な場所の総数はいくつですか?アドレス空間の2^24
1/4がペリフェラルに使用されますが、ペリフェラルのアドレスの総数はいくつですか。2 ^ 24/2 ^ 2
12/16のアドレスがディスクアドレス指定に使用されますが、いくつですか?(12/16)2 ^ 22
アドレス空間の3/4は、RAMとROMのメモリ要件に使用されますが、使用可能なアドレスの総数はいくつですか。(3/4)2^24
これは簡単なようです

0 投票する
3 に答える
15001 参照

c# - exeがLARGEADDRESSAWAREとして設定されているかどうかを確認する方法

ファイルをロードし、ロードされたファイルの作成日、変更日、サイズなどの情報を取得するC#プログラムを開発しています。もう1つ知っておく必要があるのは、ロードされたファイル( )がフラグexecutable.exeにリンクされているかどうかです。LARGEADDRESSAWAREFileInfoクラスはこの情報を提供しません。

LARGEADDRESSAWARE特定のexecutable.exeがフラグ(2 GBを超えるアドレスを処理するため)にリンクされているかどうかをC#で確認する方法を知っている人はいますか?

0 投票する
3 に答える
2687 参照

memory-management - アクセス可能な最小単位が 4 バイトであるメモリ内の最小アドレスと最大アドレス

「2^10 バイトのメモリで、4 バイト ワードがアドレス指定可能な最小単位である場合、最小アドレスと最大アドレスは何ですか?」という質問がありました。

最小アドレスは 0 です 回答キーは最大アドレス 2^10-4 です 4 バイトごとにアドレス指定されるので、(2^10-1)/4 になると思いましたか?

0 投票する
3 に答える
2225 参照

c - fork が使用されている場合、メモリはどのようにマップされますか?

私は "fork()" を初めて使用します。fork() が呼び出されると、現在の (呼び出し元の) プロセスの正確なコピーが開始されることをどこでも読みました。次のコードを実行すると、2 つの異なるプロセスが存在するはずです。変数と関数に割り当てられたメモリ位置。

親と子の両方のアドレスが同じなのはなぜですか?

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

function - CUDA 共有メモリ アドレス空間とグローバル メモリ

非常に長くまとまりのない関数を避けるために、カーネルから多くのデバイス関数を呼び出しています。カーネル呼び出し (スレッド ブロックごと) の開始時に共有バッファーを割り当て、カーネルでいくつかの処理ステップを実行しているすべてのデバイス関数にポインターを渡します。

私は次のことについて疑問に思っていました:

グローバル関数で共有メモリ バッファを割り当てた場合、ポインタを渡す他のデバイス関数は、ポインタが参照できる可能性のあるアドレス タイプ (グローバル デバイスまたは共有メモリ) をどのように区別できますか。

「CUDA プログラミング ガイド」に従って、共有修飾子で仮パラメータを装飾することは無効であることに注意してください。imhoit を実装できる唯一の方法は

a)割り当てられたメモリにマーカーを配置する b)呼び出しで非表示のパラメーターを渡す。c) グローバルメモリと共有メモリ用に別々のセグメントを持つ仮想統合アドレス空間を持ち、ポインタのしきい値チェックを使用できますか?

だから私の質問は次のとおりです:私はそれについて心配する必要がありますか、それともすべての関数をメインカーネルにインライン化せずに別の方法で進める必要がありますか?

================================================== =========================================

一方、私は今日、CUDA Toolkit 3.0 を使用した NVCC が、いわゆる「グローバル関数からの外部呼び出し」を許可せず、インライン化する必要があることに恐怖を感じました。これは、事実上、すべてのデバイス関数をインラインで宣言する必要があり、ヘッダーとソース ファイルの分離が壊れていることを意味します。これはもちろん非常に醜いですが、代替手段はありますか?

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

virtual-memory - 仮想メモリのサイズと割り当て

32 ビット x86 システムでは、合計仮想アドレス空間の理論上の最大値は 4 GB です。既定では、Windows はこのアドレス空間の半分 (x00000000 から x7FFFFFFF までの 4 GB 仮想アドレス空間の下半分) をプロセスに割り当て、残りの半分 (上半分、x80000000 から xFFFFFFFF までのアドレス) をプロセスに使用します。独自の保護されたオペレーティング システムのメモリ使用率。

64 ビット Windows は、プロセス用にはるかに大きなアドレス空間を提供します。IA-64 システムでは 7152 GB、x64 システムでは 8192 GB です。

上記の引用についていくつか質問があります。

  1. プロセスに低いアドレス空間が割り当てられるのはなぜですか?
  2. 「...残りの半分 (上半分、x80000000 から xFFFFFFFF までのアドレス) を、独自の保護されたオペレーティング システムのメモリ使用に使用します。」- オペレーティング システムがシステム アドレス空間に物理アドレスを使用せず、仮想アドレスを使用するのはなぜですか?
  3. x64 システムで 8192GB がプロセスとシステムに使用されるのはなぜですか?32 ビット OS とは対照的に、アドレスのすべてのスペースが使用されるわけではありませんか?

ありがとうございました

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

c++ - 逆参照とアドレス空間に関する基本的な C++ ポインターの質問

次のコードでは、 cplusplus.comの読み取りに基づいて、ポインターに関する基本的な理解をテストしようとしています。

それは出力につながります:

xxランタイムごとに変化する長い数値はどこにありますか。以下を追加すると:

それは次のことにつながります。

実行時とはどこxyが異なりますかxx

  • 質問 1 : 宣言では、宣言は、それが使用されるまで、つまりどの時点で逆参照された変数になる*barまで、その時点でそれを「ポインター」にしますか? fubar = *barそれとも、ポインターは常に変数であり、それは私がすべてのヌービーを取得し、(おそらく正しくない) セマンティクスに縛られているだけですか?

  • 質問 2 :xxはランタイムごとに変化する長い数値なので、アドレス空間であるというのは正しいですか?

  • 質問 3fubar :とfooは同じ値を持ちますが、それらは完全に独立しており、共通のアドレス空間を持たないと考えるのは正しいですか?

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

linux - Linuxのグローバルまたはローカル線形アドレス空間?

Linuxでは、セグメントのベースがすべて0であるため、論理アドレスは線形アドレスと一致します(「Linuxカーネルについて」を参照)。異なるプロセスの論理アドレスは同じである可能性があると思います。したがって、異なるプロセスの線形アドレスは同じであり、各プロセスビュー4GBとして、各プロセスには独自の線形アドレス空間(ローカルアドレス空間)があります。しかし、他のいくつかの記事では、すべてのプロセスで共有される大きな線形アドレス空間があり、セグメントメカニズムを使用して、さまざまなプロセスを線形アドレス空間のさまざまな部分にマッピングすると述べています。より広いアドレスビットを持つグローバル線形アドレス空間のように聞こえます。私はどこが間違っていますか?または、それらは異なるアーキテクチャで使用されていますか?

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

.net - AppDomain アドレス空間

まず、質問: CLR 仕様は、同じプロセス内の複数のアプリ ドメインで実行されるコードが同じアドレス空間を共有することを保証しますか? 「アドレス空間を共有する」とは、アプリ ドメインの 1 つに割り当てられたメモリへのポインターが、同じプロセス内でホストされているすべてのアプリ ドメインで読み書きできることを意味します。

質問を説明する次の自己完結型の例を検討してください。プログラムWorkerは、別のアプリ ドメインにオブジェクトを割り当てます。はWorker、10,000 個の整数用にメモリ ブロックを割り当て、データで埋めます。次に、プログラムはアプリ ドメインの境界を越えて呼び出し、割り当てられたブロックへのポインターを取得し、10,000 個のアイテムをすべて読み取れることを確認します。

これを何度も実行しましたが、毎回機能しました。直感的にはうまくいくはずです。結局のところ、アプリ ドメインは単一のプロセス内にあるため、同じ仮想アドレス空間を共有する必要があります。ただし、これは、Microsoft がいつでも削除できる機能の悪用のように感じます. このトリックの正当性を確認または否定する CLR の仕様に何かありますか?


なぜ私がこのような奇妙な質問をしているのか不思議に思っているかもしれませんが、空間と時間の両方で最小限のオーバーヘッドで、アプリケーション ドメインの境界を越えて大量の (ギガバイト単位の) データを渡す方法を探しています。その正当性を証明できれば、これは私の理想的な解決策です。