問題タブ [memory-mapping]

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 に答える
2772 参照

linux - データとスタックセグメントが実行可能であるのはなぜですか?

私の単純なプログラムのデータとスタックセグメントが実行可能であることに気づきました。/ proc / [pid] / mapsで見ましたが、簡単なコードで確認できました。

例えば:

それから

progにint3命令を実行させます。

Cで記述され、gccでビルドされたプログラムでは、データ、スタック、およびヒープが実行不可能です。それでは、アセンブリで記述されたプログラムの動作が異なるのはなぜですか。

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

c - メモリマップ I/O をエミュレートする方法

エミュレートしたいハードウェアがいくつかあります。こんな低レベルでやれるのかな。ハードウェアには多くのレジスタがあり、それらを構造体に配置します。

そのため、Windows と Linux でハードウェア アクセス用に次の構文をサポートしたいと考えています。

コードの最後の行が実行されると、ハードウェア エミュレーターが「起動」して何らかの処理を実行するようにします。これを Windows や Linux に実装できますか? どういうわけか「セグメンテーション違反」信号をキャッチすることを考えましたが、これが Windows で実行できるかどうか、またはまったくできないかどうかはわかりません。

のマニュアルページを見ましたmmap。役立つようですが、どのように使用できるかわかりませんでした。

もちろん、 のような関数を定義することでハードウェアへのアクセスを抽象化することもできWriteToMyDevice、すべてが簡単になります (おそらく) が、この正確な方法でハードウェアへのアクセスを調整できるかどうかを理解したいと思います。

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

assembly - マップされたメモリと SSE

Intel開発者マニュアルで次の段落を見つけました。

チャパー「SSE3、SSSE3、SSE4、および AESNI を使用したプログラミング」より

ストリーミング ロードは、副作用のある I/O デバイスにマップされたメモリ アドレスを参照する場合や、これらのデバイスへの読み取りが破壊的な場合に使用しないでください。これは、MOVNTDQA が本質的に投機的であるためです。

誰でもこの質問を明確にすることができますか?

OpenGLでマッピングされたバッファオブジェクトに何らかのSSEアセンブリを適用しようと考えているので質問しているのですが、その破壊的な言葉が怖いです。この主題はマップド メモリに適用されますか? 実際、glMapBuffer 呼び出しの背後にあるものはわかりません。

グラフィックカードが破壊されることはないと思いますが(:)、確かにその言葉はよく聞こえません。

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

c++ - MapViewOfFileの使用に制限はありますか?

メモリマップトファイルを次のように使用しようとしています。

ファイルサイズがギガバイトになると、MapViewOfFile関数は機能しなくなり、アプリケーションがクラッシュします。使用に制限はありますMapViewOfFileか?なにか提案を?

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

visual-c++ - ファイルの異なる範囲で MapViewOfFile への呼び出しを繰り返して、より大きなバッファーを書き込む方法。

ファイルにデータを書き込むために、共有メモリ関数を使用しています。問題: 以下の関数を使用してファイルに 10MB のバッファーを書き込もうとすると、最初の反復でのみ書き込むことができ、2 回目の反復ではバッファーの次の部分をメモリに書き込むことができませんでした。何か提案があれば私を助けてください。または以下のコードに問題があります。私はこの部分だけをコントロールしています。CreateFileMapping を持つ他の部分を制御することはできません。

「dwFileOffsetLow」または「dwFileOffsetHigh」で変更する必要があるもの。2 回目の反復以降、"MapViewOfFile" は null を返します。MapViewOfFile の異なる範囲を繰り返し呼び出す必要があるため、入力を得た場所があります。しかし、どのように呼び出すか、何か助けはありますか?これに関する以前の質問。参考までに

WriteBuffer 関数 i は次のように定義されています。

Plsは、私がすべき修正があれば提案します。ありがとう。

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

c++ - シリアルコピーとは?そして、なぜこのように実装されているのですか?

シリアルコピーとは?ディープコピーとシャローコピーとの違いは?

Duff's device の下の wiki エントリによると、従来は次のように実装されていました。

そして、それは次のようにメモします。

toDuff が単一のメモリ マップ出力レジスタにコピーしていたため、 はインクリメントされていないことに注意してください。

この注意書きがよくわかりませんでした。

toポインターがインクリメントされていない場合、ループのポイントは何ですか? なぜそれは次のように実装されます:

シリアルコピーの定義と関係があるのではないかと思います。

toループが何らかの違いを生むように、メモリをどのように割り当てることができますか?

0 投票する
4 に答える
29333 参照

linux - How does copy_from_user from the Linux kernel work internally?

How exactly does the copy_from_user() function work internally? Does it use any buffers or is there any memory mapping done, considering the fact that kernel does have the privilege to access the user memory space?

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

c++ - CreateFileMapping および MapViewofFile で共有メモリを使用する際の懸念事項

共有メモリの使用に関して 2 つの質問があります。CreateFileMapping を使用して、2 つのプロセス間で共有メモリ領域を作成しています。

1) メモリを解放するために、CreateFileMapping または OpenFileMapping 呼び出しから返されたすべてのハンドルで CloseHandle を呼び出す必要があることを理解しています。私の質問は、共有メモリを使用しているプログラムが CloseHandle を呼び出さずに終了した場合、Windows XP/7 によってすべてのハンドルが適切に閉じられ、メモリの割り当てが解除されるのでしょうか? IE - メモリを使用しているすべてのプロセスが閉じられた後、メモリ リークの可能性はありますか?

2) MapViewofFile を使用して、mem へのポインターを取得します。1 つのインスタンスでは、共有メモリは常にメソッドのコンテキストに存在すると想定しました。そのため、MapViewOfFile の戻り値をポインターとして保存し、mem へのハンドルを閉じて、共有 mem へのポインターを使用しています (ただし、アクセスはまだロックされています)。これは安全ですか、それとも共有メモリにアクセスするたびに MapViewOfFile を呼び出す必要がありますか?

ありがとう、

イアン

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

gcc - リンカーを使用してマップされたメモリ

リンカーに変数の一部をメモリ内の特定の場所に配置させるにはどうすればよいですか。たとえば、0x8100000に整数名を割り当てたいとします。理解を見逃していなければ、次を使用できます。

次に、リンカー スクリプトで次のように指定します。

uCポートをマップするために似たようなものを使いたいです。しかし、何かが一致せず、どこを間違えたのかわかりません。(私はリンカー スクリプトを使用したことがないので、非常にばかげたことを書いていたら申し訳ありません)。

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

c#-4.0 - MemoryMappingFileに関する問題

2つのプロセス間で通信しようとしています。MSDNのドキュメントから、MemoryMappingFileに出くわし、同じものを使用して通信しています。

このコードが機能しない理由を誰かに教えてもらえますか?ディスクファイルで使用した場合と同じコードが機能します。

連続した読み取りと書き込みでは、データが失われているようです。私は何かが足りないのですか?