ユーザーは、シェルに対して「これこれこういう仕事をしてくれ」と入力します。
シェルはその入力された内容を解釈して、OSに作業内容を伝えます。
その動きを、実際にシェルを操作しながら確認してみましょう。
シェルから次のように入力してください。
psps とは、実行されているプロセスの一覧を表示するためのプログラムです
(プログラムは、プロセスという処理単位で実行されます)。
すると、次のような結果が得られると思います。
PID PPID PGID WINPID TTY UID STIME COMMAND
5368 1 5368 5368 con 1006 00:48:49 /usr/bin/bash
5532 5368 5532 5512 con 1006 00:50:05 /usr/bin/ps
今 ps と入力したので、シェルはpsというファイル名を検索して、実行しました。
OSから見ると、bashもプロセスですので、ここに表示されています。
その下の行にある、psについても同様です。
よく観察してみると、PIDやPPIDというカラムに分けられていることがわかります。
PID、PPIDとはそれぞれ、プロセスID、親プロセスID(Parent Process ID)と言います。
意味はその名の通り、プロセス自身に割り当てられたID、このプロセスを起動したプロセスのIDとなっています。
プロセスIDは、実行するときにOSから自動的に割り振られます。
ここで、ps のPPIDが、bashのPIDとなっていることがわかります。
もうおわかりの方もいると思いますが、入力された ps という文字を解釈して、実行したのは bash なのです。
だから ps のPPIDには、bashのPIDがセットされているのです。
このように、シェルとはユーザーの入力内容に従って、プロセスを起動しながら仕事をしていきます。
ちなみに、ps を呼び出した bash の PPIDは1となっていますが、この1という PID は、OSが実行している init というプロセスのIDです。
すべてのプロセスの親を遡っていくと、initにたどりつきます。
0 件のコメント:
コメントを投稿