システム・プログラム 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/syspro-2000/2000-05-01
/process.html
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/
http://www.is.tsukuba.ac.jp/~yas/index-j.html
プロセッサ(CPU)が実行できる機械命令の列がプログラムである。 プロセスとは、プログラムがオペレーティング・システムによってメモリに読 み込まれ、やはりオペレーティング・システムの管理下にあるプロセッサによっ て実行の対象になったものである。
プログラムとプロセス
プロセスには、保護、資源割り当てのような機能がある。 あるプロセスが 暴走 して他のプロセスを破壊したり、あるいは、意図的に他のプロセスからデータ を盗もうとしたとしても、それを禁止してプロセスを守ることをプロセスの保 護という。プロセスを保護するためには、プロセスが直接他のプロセスのメモ リなどにアクセスできないようにプロセスとプロセスを隔離する。Unix では、 基本的にはプロセスごとに独立した論理アドレス空間を割り当てることで実現 している。 資源とは、 メモリ、ディスク、プリンタ、ディスプレイ、キーボードなど コンピュータが処理を進める上で利用価値のあるものを総称である。 プロセスは、資源を公平に配分するための単位としての役割がある。/bin/ls
や/usr/bin/ls
などのファイルに保存されている
)
がメモリに読み込まれて実行される。
Xウインドウでメニューから ktermを起動すると、ktermのプロセスとその端末
の中で動くシェルのプロセスの2つが作られる。
YHM_EKeyword_Define(ps.ek,ps(process),ps)
コマンドを実行すると、プロセスの一覧を表示する。
psコマンドの表示の例を示す。
psコマンドの実行結果は1行が1プロセスである。 左から、以下のような意味がある。---------------------------------------------------------------------- % psPID TTY TIME CMD 9086 ttyq1 0:00 cat 9084 ttyq1 0:00 emacs 9123 ttyq1 0:00 ps 9072 ttyq1 0:01 tcsh %
----------------------------------------------------------------------
/dev/ttyq1
は
ttyq1
の意味。
TIME
COMMAND
---------------------------------------------------------------------- % ps -lF S UID PID PPID C PRI NI P SZ:RSS WCHAN TTY TIME CMD b0 T 1231 9155 9153 0 60 20 * 462:106 - ttyq1 0:00 man b0 T 1231 9086 9072 0 60 20 * 50:28 - ttyq1 0:00 cat b0 T 1231 9084 9072 0 60 20 * 2114:849 - ttyq1 0:00 emacs b0 T 1231 9153 9072 0 60 20 * 462:108 - ttyq1 0:01 man b0 R 1231 9161 9072 4 62 20 0 405:160 - ttyq1 0:00 ps b0 T 1231 9156 9155 0 60 20 * 78:44 - ttyq1 0:00 sh b0 T 1231 9157 9156 0 60 20 * 519:210 - ttyq1 0:00 less b0 S 1231 9072 9070 1 39 20 * 703:324 8027eb80 ttyq1 0:01 tcsh %
----------------------------------------------------------------------
TIME
は過去に利用した CPU 時間の割合、
SZ
は、プロセスが確保しているメモリ、
RSS
は、そのうちメインメモリに入っている部分である。
S
は、
プロセスの
YHM_NKeyword_Define(state-processnk,状態,じょうたい(ぷろせすの))
(YHM_EKeyword_Define(state-process.ek,STATe,state(process)))
であり、次のようなものがある。
R
(runnable)
D
(Disk)
S
(Sleep)、I
(I)
Z
(Zombie)
T
(Traced)
0
, X
などがある。
Unix では、後で説明する fork() システムコールを 発行すると、新しくプロセスが作られる。 (Unix では、これ以外の方法ではプロセスは作られない。) この時、「もとのプロセス」の「親プロセス」という。 プロセスの親プロセスのプロセス識別子は、psコマンドに「-l」オプションを つけるとPPIDのところに表示されている。