[ホーム] > [間違えやすい類語 IT編一覧] > [プロセスとスレッドの明確な違いを比較表で説明]

プロセスとスレッドの明確な違いを比較表で説明

作成日:2019/01/01 更新日:2022/06/06

スレッド化の大きなメリット



このページではWindows環境におけるプロセスとスレッドの違いに関して説明します。

プロセスとはプログラムを実行した場合に生成されるプログラムの実態です。タスクマネージャで表示される xxxxxx.exe というものがプロセスです。

ただしプロセスだけで処理をするのは効率が悪いです。そこで役割分担を行うスレッドを生成します。「ゲーム画面を表示するスレッド」「キー入力を受け付けるスレッド」「音を鳴らすスレッド」などを同時に実行し、平行して動作させます。このように「マルチスレッド」としてプログラムを効率的に実行しています。



スレッドのリソース共有のメリット


プロセスとスレッドの大きな違いとしてリソースの共有という点があります。スレッドはメモリやファイルなどを共有することができますがプロセスは共有できません。プロセスごとに独自のメモリ空間を持つからです。

プロセスでリソースを共有するには以下のような機能を使用する必要があります。

(1)メモリマップドファイル・・・ファイルなどのリソースを仮想メモリ空間にマップする。
(2)名前付きパイプ・・・プロセス間通信。データを通信する。Windows ならCreateNamedPipe。
(3)リモートプロシージャコール・・・別のプロセス、あるいは別の機器のAPIを呼び出す機能。



(注意)分かりやすく簡単に記載しており、一部の環境や分野では記載内容が異なる可能性があります。あくまでも参考程度でお読みください。

比較表

比較は以下の表の通りとなります。

説明プロセススレッド
概要プログラムが実行された場合に起動されるもの。プログラムを実行すると一つのプロセスが起動される。リソースの割り当てと保護の単位。プログラムが複数の処理を行うために起動するもの。例えば「通信処理のスレッド」「画面表示のスレッド」「キー入力受付のスレッド」などマルチスレッドとして複数のスレッドを起動して処理を効率的に行う。CPU処理の単位。
処理処理が重い処理が軽い
名前原則は実行した exe の名前プロセスが命名する
コストプロセス生成はリソースの観点よりコストがかかるスレッド作成はコストが安い
スピードプロセスとしてプログラムを実行するととても遅いスレッドとしてプログラムを実行するととても軽い
メモリプロセスは他のプロセスのメモリへはアクセスできない。自分の固有のメモリスペースを持つ。親プロセスと同じメモリを使用する。スレッドは同じプロセスから起動された他のスレッドのメモリにアクセス可能。
切り替え(コンテキストスイッチ)他のプロセスへの切り替えは時間がかかる他のスレッドへの切り替えは早い
プロセス/スレッドの関係プロセスは複数のスレッドを実行することができるスレッドは一つのプロセスだけに属することができる。
切り替えカーネルレベルで行われるカーネルレベルあるいはユーザレベルで行われる

関連リンク:
サービスとプロセスの違いとは


[ホーム] > [間違えやすい類語 IT編一覧]
,







【注意】本ページは著作権で保護されています。内容は何人も補償しません。時間的あるいは金銭的損失等、一切保証しません。

理解しやすく記載されており、一部不正確な記載がある可能性があります。ご自身の責任で参考にしてください。