IT・プログラミング雑学

プロセスとスレッドの違いとは?仕組みや使い分け・タスクとの違いもプログラマーがスポーツに例えてわかりやすく解説

同じ?違う?タスクとプロセス、スレッド

プロセスとスレッドについて説明してきましたが、タスクについては説明していません。では、タスクとは何なのでしょうか。実は、タスクには厳密な決まりがありませんアプリのことをタスクと言い換えることもあれば、プロセスやスレッドをタスクと言い換えることもあるのです。

なぜそんなことになったかと言うと元々コンピューターに世界ではある作業単位をタスクと呼んでいたから。そして、コンピューターの進化に従って、プロセスやスレッドという考え方が後から生まれたのです。初期のコンピューターはアプリの単位でしか切り替えができませんでした。そこにプロセスが生まれ、さらにスレッドが登場したわけです。ざっくり分けるならばWindowsの世界ではアプリ=タスクと思っておけばおおむね問題ありません。

no-img2″>
 <figcaption class=桜木建二

プロセスとタスクの違いは、それ単独で存在できるものがプロセスで、その中にあるものがスレッドだ。プロセスはそれぞれ別物だから切り替えるのに時間がかかる。しかし、スレッドはプロセスの中にあるものなのですぐに切り替えできるというわけだ。続いてなぜプロセスだけでなくスレッドが必要になったのかを見ていくぞ。

なぜスレッドが必要なの?スレッドの豆知識

image by iStockphoto

プロセスとスレッドの違いを簡単に説明してきましたが、スレッドを使う典型例が並列処理です。また、実際にプロセスやスレッドがどのくらいあるのかも含めて、プロセスとスレッドの豆知識を説明していきます。

同時に処理?並列処理とは

スレッドの話になると必ず出てくるのが並列処理というもの。名前の通り、複数の作業を同時に並列してこなします。ただコンピューターは一度にひとつの仕事しかできません。しかし、コンピューターはとても高速で1秒間に何億回もの計算ができます。そのためとても素早く作業を切り替えることで同時にこなしているように見えるのです。

また、並列処理は待ち時間が発生するときに使います。人間も必要な資料がないなどで少し時間が空いたりすると、別の作業をしたりしますよね。コンピューターの場合も同じ。例えば何も操作していない時のスマホやパソコンも、色々な情報がどんどん変わっていきますよね。ブラウザなどのアプリも利用者の入力を待つ処理と、画面の表示内容を書き換える処理別々のスレッドとして同時に実行されています。並列処理にはスレッドが適しているのです。

どうやって確認する?タスクマネージャーとプロセス

そのようなプロセスやスレッドを直接見ることはできません。しかし、パソコンでどれくらいの数のプロセスやスレッドが動いているかを確認することは可能。Windowsのスタートメニューを右クリックして「タスクマネージャー」を選択してください。左下に「詳細表示」と表示されていたらそこをクリック。上に並んだタブから「パフォーマンス」を選ぶと、色々な情報が表示されます。その下の方にある「プロセス数」と「スレッド数」が実際の数です。

また詳細タブをクリックすると、たくさんの行が表示されます。これがそれぞれプロセス。それぞれのプロセスがどれだけのメモリを使っているかや、どのくらいの時間動いているかを確認できます。ただ、スレッドはこのプロセスの中にあるので、スレッドの細かいことを確認することはできません

同じだけど違う?CPUのスレッド数とプロセスのスレッド数

スレッドといえば、パソコンのCPUの説明で2コア2スレッドとか聞いたことがある方もいるでしょう。このCPUのスレッド数と今まで説明してきたスレッドは少し違いますCPUの説明で出てくるスレッド数は、今まで説明してきたスレッドを最大でいくつ同時に実行できるかを示す数字です。2コア2スレッドとは、1つのコアで2つのスレッドを同時に実行できるという意味。つまり、合計で4スレットを同時に動かすことができます。

ただし、あくまで最大数なので注意。1スレッドしかないプロセス2つを2コア2スレッドのCPUで動かしても、同時に動くのは2スレッドだけになります。常に最大数が動くわけではないのです。

no-img2″>
 <figcaption class=桜木建二

コンピューターはとても高速で作業を切り替えるので同時に色々実行しているように見える。その手法の一つが並列処理で、そこにはスレッドを使うことが多い。そのプロセスやスレッドはタスクマネージャーで数や情報を確認することも可能だ。パソコンでは非常に多くのプロセスやスレッドが動いていることにびっくりするぞ。

アプリはチーム、プロセスはメンバー、スレッドは役割、協力して動く

タスク、プロセス、スレッドはコンピューターの中の作業を実行する単位です。1つのアプリは1つ以上のプロセスがあり、そのプロセスには1つ以上のスレッドがあります。アプリを1つのチームとすればプロセスはそのメンバー。そしてスレッドは各メンバーが果たす役割になります。プロセスが連携し、その中でスレッドを切り替えることでアプリが動くわけです。

プロセスはある程度独立して動くものでタスクマネージャーでもプロセスごとに情報を確認できます。また、メモリもプロセスごと。一方、スレッドはプロセスをさらに細分化したもの。プロセス内のメモリは共用扱いなので切り替えも高速です。用途に合わせて切り替え単位も変える仕組みになっています。

1 2 3
Share: