パソコンを使っているとタスクやプロセス、スレッドって言葉を聞いたことがあるかもしれない。コンピューター以外でも同時に複数の作業をすることをマルチタスクと言うよな。でも、そのタスクやプロセス、スレッドというのはどう違うのか考えたことあるか。そもそもコンピューターのマルチタスクってのはどうやって実現しているんでしょうか。プロセスやスレッドの違いやなぜ必要なのかをプログラマでもあるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。

プロセスやスレッドはコンピューターの中の作業の単位

image by iStockphoto

普段、パソコンやスマホを利用しているときに、どれくらいのアプリを立ち上げていますか。さらにブラウザの中でいくつもタブを開きますよね。このようにコンピューターでは同時にいくつものアプリやタブを開くことができます。このひとつひとつのことをタスクと呼び、同時に多くのタスクを使うことがマルチタスクです。最近はコンピューターに限らず、1人でいくつもの作業をこなすこともマルチタスクと言いますよね。

このようなタスクも、さらに細かい単位に分けることができます。ざっくり言えば、タスクはプロセスの集まりで、プロセスはスレッドの集まりです。人間が何か作業をする時も、それをさらに細かく分けて考えるのと同じ。ここではコンピューターのプロセスとスレッドについて解説します。

プロセス:スポーツで言えばチームメンバー

まずはプロセスです。プロセスはスポーツで言えばひとつのチームのメンバー。野球なら9人、サッカーなら11人、控え選手も入れればもっと多くのメンバーが集まったものです。各メンバーはそれぞれ違う役割があります。しかし、チームは勝利に向かってメンバーが一丸となって勝利を目指しますよね。

コンピューターの中も同じです。アプリの中ではいくつかの役割分担があります。それがプロセス。中には個人競技のように1プロセスだけのものもありますが、多くのプロセスに分かれるものもあります。また、多くの人が利用するWebサービスなどは1つのプロセスが1人のユーザーの担当です。アプリの中ではチームのメンバーのように多くのプロセスが動いて、そのアプリの作業をこなします。

\次のページで「スレッド:スポーツで言えば各メンバーの役割」を解説!/

スレッド:スポーツで言えば各メンバーの役割

次はスレッドです。チームのメンバーは1試合でいくつもの役割をこなします。例えば、野球でもサッカーでも、攻撃時と守備時では同じ人でも役割が違いますよね。また、同じ攻撃時でも試合状況によって積極的に攻めることも、手堅く攻めることもあります。状況に応じて同じメンバーでも役割が違うわけです。

コンピューターも状況に応じて役割を切り替えます。そのひとつひとつの役割がスレッドです。例えば多くのWebサイトで広告が表示されますよね。単なるイメージではなく、動画や一定時間でイラストが切り替わるものもあります。これもスレッドのおかげ。ユーザーが操作していない間、広告を表示するスレッドが動画を流したり、イラストを切り替えたりしています。コンピューターはとても高速なので同時に色々なことをしているように見えますが、実際にはスレッドが切り替わりつつ動いているのです。

プロセスとスレッドの仕組みとメリット、デメリット

image by iStockphoto

プロセスとスレッドの違いをスポーツなどのチームに例えて、メンバーとその役割と説明しました。他にも仕組みの違いがあり、メリットとデメリット、使い分けがあるわけです。ここではそうした仕組みや特徴を説明します。

プロセスはまとまった仕事の単位

プロセスとはコンピューターの仕事をある程度まとまった範囲でまとめたものです。スポーツでのチーム内の役割分担のように、このプロセスはこういうことをするというものが決まっています。そのため、プロセスを切り替えるのには準備と時間が必要。例えば、野球でもサッカーでも選手交代となれば手続きと時間が必要ですよね。野球ならば試合を中断しますし、サッカーでも交代中は一時的に人数が減ってしまいます。

コンピューターでもプロセスはある程度まとまった仕事をこなすもの。プロセスを新たに作ることや、切り替えるには時間がかかります。人間から見れば十分高速なのですが、コンピューターの時計では長時間かかる作業です。そのため、あまり頻繁にプロセスを切り替えることはありません

スレッドはある仕事の中の細々した作業

スポーツでも状況に応じて1人の選手が色々な役目をこなします。ボールの位置や選手の配置でオフェンスとディフェンスを切り替え、マークする選手も変わりますよね。そのたびに選手交代している暇はありませんし、一瞬で切り替えないといけません。

コンピューターの世界でも一瞬で切り替えなければならないケースがあります。そのようなときにはプロセスではなくスレッドを使うのです。プロセスとスレッドの違いは切り替える速さが遅いか早いかになります。

独立しているかどうか?プロセスとスレッドの違い

ではなぜプロセスは遅く、スレッドは早いのでしょう。それは仕組みの違いです。プロセスはチームのメンバーで、スレッドはその人の果たす役割と説明しました。ある選手が一瞬で違う役割に切り替えられるのは、その人が練習して身体が覚えているから。スレッドはプロセスの中にあって、一瞬で切り替えることができるのです。

一方、プロセスはチームのメンバー。それぞれ違う人ですから経験も練習内容も違います。プロセスもそれぞれ独立した別人です。だから入れ替わるのには時間がかります。スレッドは役割と説明しましたが、ある選手が過去に練習してきた経験と言い換えた方がよいかもしれませんね。人が入れ替わるのと、ある選手が過去の経験から反射的に動きを変えることの違いがプロセスとスレッドの違いになります。

\次のページで「同じ?違う?タスクとプロセス、スレッド」を解説!/

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

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

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

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

image by iStockphoto

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

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

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

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

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

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

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

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

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

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

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

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

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

" /> プロセスとスレッドの違いとは?仕組みや使い分け・タスクとの違いもプログラマーがスポーツに例えてわかりやすく解説 – Study-Z
IT・プログラミング雑学

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

パソコンを使っているとタスクやプロセス、スレッドって言葉を聞いたことがあるかもしれない。コンピューター以外でも同時に複数の作業をすることをマルチタスクと言うよな。でも、そのタスクやプロセス、スレッドというのはどう違うのか考えたことあるか。そもそもコンピューターのマルチタスクってのはどうやって実現しているんでしょうか。プロセスやスレッドの違いやなぜ必要なのかをプログラマでもあるライターのwoinaryと一緒に解説していきます。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。

プロセスやスレッドはコンピューターの中の作業の単位

image by iStockphoto

普段、パソコンやスマホを利用しているときに、どれくらいのアプリを立ち上げていますか。さらにブラウザの中でいくつもタブを開きますよね。このようにコンピューターでは同時にいくつものアプリやタブを開くことができます。このひとつひとつのことをタスクと呼び、同時に多くのタスクを使うことがマルチタスクです。最近はコンピューターに限らず、1人でいくつもの作業をこなすこともマルチタスクと言いますよね。

このようなタスクも、さらに細かい単位に分けることができます。ざっくり言えば、タスクはプロセスの集まりで、プロセスはスレッドの集まりです。人間が何か作業をする時も、それをさらに細かく分けて考えるのと同じ。ここではコンピューターのプロセスとスレッドについて解説します。

プロセス:スポーツで言えばチームメンバー

まずはプロセスです。プロセスはスポーツで言えばひとつのチームのメンバー。野球なら9人、サッカーなら11人、控え選手も入れればもっと多くのメンバーが集まったものです。各メンバーはそれぞれ違う役割があります。しかし、チームは勝利に向かってメンバーが一丸となって勝利を目指しますよね。

コンピューターの中も同じです。アプリの中ではいくつかの役割分担があります。それがプロセス。中には個人競技のように1プロセスだけのものもありますが、多くのプロセスに分かれるものもあります。また、多くの人が利用するWebサービスなどは1つのプロセスが1人のユーザーの担当です。アプリの中ではチームのメンバーのように多くのプロセスが動いて、そのアプリの作業をこなします。

\次のページで「スレッド:スポーツで言えば各メンバーの役割」を解説!/

次のページを読む
1 2 3
Share: