プロセスとタスクの違いとは?
一方で、「プロセス」とは別に「タスク」という用語もある。例えばWindowsで画面下に表示されるプログラムが並ぶバーは、「タスクバー」と呼ばれている。またWindowsの付属ツールには、指定した日時にプログラムを起動する「タスクスケジューラ」がある。そのほかにも、実行中のプログラムの一覧を表示させるコマンドは「tasklist.exe」だ。これらの用語を見ると、Windowsでは実行する、あるいは実行されているプログラムのことを「タスク」と呼んでいるように見える。
しかし、Win32 APIセットにはタスクという用語はなく、すべて「プロセス」となっている。例えばプログラムを起動する際には、「CreateProcess」というAPIを利用する。ならばWindowsのプログラム実行単位は、プロセスと呼ぶべきだと考えられる。プロセスをユーザー側から見た場合に限って、「タスク」という用語を使っているのだろうか?
用語としても、「タスク」なら一般的な単語として(英語圏の人には)理解できるが、プロセスは難解だ。もしWindowsが「プロセスバー」や「プロセススケジューラ」といった名称を使っていたら、なんのことだかわからない。そのためWindowsでは、単なる「作業」という意味で「タスク」を使っているのだと考えられる。なおコンピューター関連では、タスクは広い意味で使われることが多く、日本語の「作業」や「処理」という意味で使われることもある。明確な定義がなく、文脈で判断するしかない単語でもある。
ちなみにWindowsには、「ジョブ」という概念もある。複数のプロセスをグループとして扱う場合には「Job Object」を作り、これにプロセスを登録してグループ化することで、ジョブの状態やジョブに属するすべてのプロセスの終了などを可能にする。また、印刷処理を「印刷ジョブ」と呼ぶ用語もある。
ひとつのプロセス内で並列処理をする
「スレッド」という仕組み
話をプロセスに戻そう。プロセスからは、さらにプロセスを起動できる。あるプロセスから起動されたプロセスは「子プロセス」と呼び、起動した側を「親プロセス」と呼ぶ。プロセスにはこのような親子関係があり、セキュリティーの設定や管理などに利用されている。しかし親子関係のあるプロセス同士の場合でも、お互いに別の仮想メモリー空間を使う。また、実行のタイミングもそれぞれ違っている。
関連する処理を同時に進行させることを「並列処理」と呼ぶ。CPUの処理速度から見ると、HDD上のファイルのアクセスには長い時間が必要となるので、その間にほかの作業を行なえば、見かけ上の処理時間を短縮できる。また計算処理などでも、無関係の部分(依存性がない部分とも言う)を並列に処理することで、高速な処理が可能になることがある。
ゲームを例に考えよう。プレイヤーが操作する飛行機が上下左右に自由に動き、そこに敵のミサイルなどが飛んでくるようなゲームを作る場合、操作に応じて飛行機を動かす処理と、敵やミサイルなどを動かす処理は、衝突のとき以外は無関係なので別々の処理にしたほうが、プログラムがすっきりとわかりやすくなる。
ひとつのプログラム内で並列処理を行なうための仕組みに、「スレッド」がある。スレッドはプロセス内に作られるが、その実行管理(スケジューリングと呼ぶ)はOS側で行なう。だが、OSがスレッドごとに個別の環境やメモリー割り当てをするわけではなく、基本的にはスレッドを起動するプロセス自身のメモリーなどの資源を使うほか、必要なら親となるプロセスがスレッドの環境を準備する。
プロセスも実はスレッドの一種だ。Windowsのようにスレッドに対応したOSでは、プロセスを準備したあとで、スレッドとしてプログラムを起動しているのだ。そのためスレッドを起動する親となるプロセスを、「親スレッド」と呼ぶこともある。ちなみにスレッド(Thread)には、「(話など)脈絡、筋道」という意味がある。
この連載の記事
-
第13回
PC
ARM版Windows 8実現の布石となったWindows 7の「MinWin」 -
第12回
PC
アプリがWindowsの機能を使うには? APIとDLLの仕組み -
第11回
PC
マルチコアCPUの消費電力はスケジューリングで変わる? -
第10回
PC
AMD FX向けにパッチで修正 スケジューラーが抱える難題 -
第9回
PC
マルチコアCPUを賢く使いこなす スケジューリングの秘密 -
第7回
PC
Windowsのメモリー管理をx86の仕組みから読み解く -
第6回
PC
メモリー不足を根本的に解決する64bit OSの仕組み -
第5回
PC
Windows 8でMetro Styleアプリを動かす「WinRT」 -
第4回
PC
Windowsを動かすデバイスドライバーの仕組み 前編 -
第3回
PC
OSの仕事はハードウェアをアプリから「隠す」こと? - この連載の一覧へ