cプログラム実行可能a.outのようなプロセスが実行されているときに、RAMに存在する必要があるプログラム要素は何ですか?プログラムコードもそこにありますか?そしてもしそうなら、それの必要性は何ですか?メインメモリ内のプログラム要素
答えて
はい、a.outが実行されているときにコードa.outがメモリに存在します。命令ポインタ(またはレジスタ)はメモリ内で実行されている現在の演算を指し、ほとんどの演算は命令ポインタを次の演算に進める。コードでは元のCコードを意味していますが、これは必ずしもそうではありません - 組み立てられた実行可能なバイトコードだけがメモリになければなりません。コンパイラ/リンカには、デバッグを容易にするために実行可能なアセンブルされた出力にCコードを含めるフラグがあります。
プロセスの仮想メモリ空間について言えば、これにはメモリマップされたioレジスタ、カーネルスペース関数、プログラムが必要とするライブラリ(少なくとも一般的なタイプのlibcオペレーション)。
原則として、マシンコードはプロセスのアドレス空間内にあり、非常に頻繁にRAMにあります。しかし、マシンコードがまだRAMになく、カーネルがディスクからロードしなければならない状況があります。これは、virtual memoryのために透過的に発生します。具体的にはexecve(2)システムコールは実行可能バイナリ内のさまざまなセグメントのメモリマッピングを設定します。mmap(2)と同じように(メモリマップを変更するにはmunmap
とmprotect
のシステムコールです)。より理解し、または単にそのcat
を実行しているプロセスのメモリマップを取得するために
cat /proc/self/maps
を実行するためのプロセス1234の/proc/1234/maps
で
ルック。
何をしますか上記のコマンドdoと、その出力の解釈を教えてください。 –
このコマンドを試してください:(コマンドを実行しているプロセスの)メモリマッピングのテキスト表現を表示します。それから私があなたに与えた他のリンクを読んでください。 –
Is program code also there?
はい、あなたのプログラムコードはactualy任意のCプログラムは、あなたのコードは、コードセグメントに入り、メモリ内の主要3セグメント
* Data Segment
* Code Segment
* Stack and Heap areas
を持っているRAM
にもなります。
- 1. アクセスグリッド要素は、プログラム
- 2. L1キャッシュとメインメモリ
- 3. デスクトップ内の要素とモバイル内の要素内のテキスト
- 4. フレックス内のチャート要素によるプログラムによる操作
- 5. 配列内の要素を比較中にプログラムがクラッシュする
- 6. WPF - スタイル内の要素をプログラムで参照する方法
- 7. アニメーション要素内の固定要素
- 8. jquery mobile - フォーム要素の内部要素
- 9. 擬似要素内の位置要素
- 10. ブロック要素内のブロックとインライン要素
- 11. 要素内のセレン発見要素
- 12. C++:C++プログラムでshare_ptr要素
- 13. メインメモリDBとオブジェクトDB
- 14. ArrayList内の要素
- 15. 要素内のgetElementsByTagName
- 16. リスト内の要素をSMLでプログラム内に保持する方法は?
- 17. cudaのメインメモリ内の配列を削除するC++
- 18. メインメモリの内容をJavaで取得する
- 19. ハッシュ要素のプログラムによるアクセス
- 20. JS - センターイメージキャンバス要素内
- 21. iframe内の要素のTabindex
- 22. キャンバス内の要素のイベント
- 23. リスト内の要素のブールステートメント
- 24. スナップSVG:jQueryの内の要素
- 25. 内部の#document要素内のユーザースクリプト
- 26. ページ内のページ要素内のページ
- 27. マッチデータフレーム内の要素は
- 28. スクロールエリア内のセンタリング要素
- 29. リアクション内の要素にスクロール
- 30. バグ内のCSS列要素
[このリンク](http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory)は非常によく、それを説明してご覧ください –