[ホーム] -
[Windows 2000 FAQ 一覧] - [プロセスとスレッドの違いは何ですか。]
Windowsにおけるプロセスとスレッドの違いは、おおまかに言うと以下のようになります。
(1)プロセスは一つのプログラム。
(2)スレッドはプロセス内で並列動作する単位。
例えばMS-WORDで印刷をする場合を例に出します。MS-WORDはプロセスですが、印刷する処理やスレッドです。スレッドは並列処理を行うことができるので、文書を作成しながら同時に印刷することができるのです。
メモリ空間の視点から見ると、以下の違いがあります。
(1)プロセスはそのプロセス専用に割り当てられたメモリ空間で動作する。(スタックは固有)
(2)スレッドは共有のメモリ空間で動作する。(スタックは固有)
スレッド間は共有メモリで動作するので、スレッド間で変数等のメモリを共有することができます。便利ではあるのですが、一方正しく排他の処理を行わないと、プログラム全体として不整合が発生してしまいます。
その他の点として、プロセスは起動するのに(スレッドと比較して)かなりの負荷がかかります。例えばCGIなどはプロセスであるため、簡単なCGIでもシステムに負荷をかけることになります。その点で、ASP(Active Server Page)や Servlet は各クライアントからの処理をスレッドとして処理するため、システムへの負荷が比較的低くなります。