技術

[xv6 #17] Chapter 1 – The first process – Exec

テキストの27ページ

本文

第0章で見たように、execは現在のプロセスのメモリとレジスタを新しいプログラムで置き換える。
しかし、ファイルディスクリプタ、プロセスID、親プロセスは同じままである。

図1-4は実行中のプロセスのユーザメモリのイメージを表している。
ヒープはスタックより上位にあり、拡張可能である(sbrkによって)。
スタックはただ一つのページであるという事と、execによって作られた初期の内容が示されている。
コマンドライン引数に対するポインタの配列はもちろん、その文字列自体もスタックの一番上にある。
そのちょうど下からは、main(argc, argv)関数の呼び出しがちょうど開始された瞬間に、プログラムをmain関数から開始するための値が置かれる。

図1-4 ユーザプロセスとその初期スタックのメモリレイアウト

感想

短くて分かりやすい節ですが、それでも不明な点はあります。
例えば図のスタックのaddress of argument 0がargv[argc]でaddress of argument Nがargv[0]と書いてある部分です。
単に逆じゃないの?と思ったわけですが、次の節Code: execで何か分かるかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください