【簡単解説】一目で分かるプロセス、タスク、スレッドの違い

当ページのリンクには広告が含まれています。

プログラミングの中で、プロセス、タスク、スレッドというキーワードが良く出てきます。

明確な定義や違いが分からないまま、何となく使っている方も多いのではないでしょうか。

まあ、それでも良いのですが、この記事を訪れた方は、違いを理解しておきたいってことですよね。

この記事では、そんな疑問にお答えします。

目次

プロセスとは

EXCELやWORD、PowerPointなど、1つ1つが独立して動作するプログラム(アプリケーション)をプロセスと呼んでいます。

タスクマネージャを起動したときに表示されるプログラムの一覧がプロセスになります。

スレッドとは

1つのプロセスの中で、処理を実行する単位をスレッドといいます。

1つのプロセスには複数の処理が記述されていますが、1つの処理が終わったら次の処理に移り・・・という具合に、直前の処理が終わってから次の処理を実行するものをシングルスレッド、同時に複数のスレッドを実行するものをマルチスレッドと言います。

分かりやすい例えで言うと、スレッドはレールだと思っていただければいいでしょう。

レールの上にはプログラム(処理)を載せたトロッコが載っています。

シングルスレッドは処理を順番にレールに乗せて走らせるイメージで、マルチスレッドは複数のレールに別々の処理を、よ~いドンで同時に走らせるイメージです。

タスクとは

「1つのまとまった処理」のことをタスクと呼びます。

何をどうまとめるとタスクになるとかいう定義はないので、会話の中での使われ方によって意味を解釈しなければなりません。

たとえば、マルチタスクという呼び方をする場合、EXCELやWORDなどのアプリケーションがそれぞれのタスクになります。

アプリケーションの中で計算しながら印刷するような場合、「計算」と「印刷」がタスクと呼ばれたりします。

つまり、ある時にはプロセスのことをタスクと呼んだり、ある時はスレッドの事をタスクと呼ぶのです。

CPUコアとスレッドの関係

本当にザックリしたイメージになりますが、EXCELやWORDなどのプロセスは、それぞれが計算や表示、印刷などの複数の「処理」を実行しています。

1つ1つの「処理」はWindowsやLinuxなどのOSが管理しており、その時に開いているコアに割り振っていきます。

もし、何時間も掛かる「処理」が複数実行された場合はどうなるでしょう。

OSはその時に存在している全てのスレッドに対して、ごく短い時間だけコアを割り当てて処理を実行します。

例えばAというスレッドは100個、Bというスレッドは200個の計算が必要だとすると、Aの1~10個、Bの1~10個、Aの11~20個、Bの11から20個・・・という具合に、少しづつ実行していきます。

物理的にはコア数の数しか並列処理が出来ませんが、この様にプロセスを細切れに実行していくため、OS全体から見ると、あたかも複数のスレッドが(或いはプロセスが)同時並行して動いているように見えるのです。

まとめ

今回はプロセス、スレッド、タスクの違いについて説明いたしました。

プロセスはEXCEL、WORDなど、1つの独立しプログラム(アプリケーション)のことです。

スレッドはプロセスの中の処理単位で、複数のスレッドを並行して実行することをマルチスレッドと呼んでいます。

タスクは「1つのまとまった処理」という曖昧な表現方法で、プロセスの事をタスクと呼んだり、スレッドの事をタスクと呼んだりします。

プログラミングではこれらのキーワードをよく使うので、もしちゃんと理解されていない方は、是非ご参考にして頂ければ幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次