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. jquery mobile - フォーム要素の内部要素
- 2. フレックス内のチャート要素によるプログラムによる操作
- 3. WPF - スタイル内の要素をプログラムで参照する方法
- 4. ArrayList内の要素
- 5. 要素内のgetElementsByTagName
- 6. メインメモリDBとオブジェクトDB
- 7. C++:C++プログラムでshare_ptr要素
- 8. メインメモリの内容をJavaで取得する
- 9. iframe内の要素のTabindex
- 10. キャンバス内の要素のイベント
- 11. ページ内のページ要素内のページ
- 12. は、要素内のXML CDATA
- 13. jquery内の要素をスクロール
- 14. 他の要素がテンプレート内
- 15. スクロールエリア内のセンタリング要素
- 16. HTML内のDOCTYPE要素
- 17. HTML5キャンバス要素内のSVG
- 18. ハッシュ要素のプログラムによるアクセス
- 19. TVMLのstackTemplate内のロックアップ要素内の要素の水平方向の整列
- 20. DataContract XMLのデシリアライズ - 同じ要素内の要素とプロパティのリスト
- 21. jQueryの:内部の要素以外の要素を削除
- 22. インラインスタイルの要素内の要素のCSSセレクタ?
- 23. PHP配列内の要素内のランダムな要素を見つける?
- 24. ブロックレベル要素内の垂直方向のブロックレベル要素
- 25. クラスの要素内の要素を非表示にする
- 26. 他の親要素内の要素を選択
- 27. テーブル内のインラインブロック要素とブロック要素のボックスモデルtd
- 28. 他の要素内の要素位置JAVAscript
- 29. XMLデータソースを持つテーブル要素内のJasperリスト要素
- 30. 要素内の要素を取得する(親/子)WPF
[このリンク](http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory)は非常によく、それを説明してご覧ください –