プロセスはプログラム(とデータ)ですから,CPUに対するデータ処理の一連の指示を並べたものなのですが,この一連の指示には,並行して実行することが可能な部分が含まれている場合があります.

そのような部分の処理を並行して進めると,プロセスはあたかも複数のプログラムを同時に処理しているような様相になります.1つのものが実は2つである,という変な状況になるのです.それで,それらを区別するために新しい言葉を使います.

プロセスに対応するプログラムを,並行して実行できる部分ごとに分けて,それぞれをスレッドと呼ぶことにします.つまり,1つのプロセスには1つか,それ以上の個数のスレッドと呼ぶプログラムのまとまりが対応します.

例えば,ワープロを使う場合に,2つの文書の処理を同時に進める場合があります.一方の文書は報告書で,もう1つの文書はそれを郵送するための挨拶の手紙である,というような状況です.

この場合,報告書を作る仕事は1つのタスクであり,挨拶文を作るのはもう1つのタスクになります.しかし,同じワープロのプログラムを使いますので,プロセスは1つです.そして,報告書と挨拶文の処理は異なるスレッドとして実行されます.


図12

 

12 タスク-プロセス-スレッド

ですから,タスク,プロセス,スレッドの関係は,一般的には図12のように多対多になります.したがって,タスクを管理するためには,プロセスばかりでなくスレッドを管理することも必要になります.

 なお,プロセスにスレッドが対応している状況は,図11に示したタスクマネージャのウィンドウの上端のメニューバーにある「表示」メニューを選択した時に現れる選択肢「列の選択」によって,表示させることができます.