Word、Excel、Google Chromeなどのプログラムは「プロセス」「スレッド」などの単位に分けることができます。これらの用語の意味について、クラウドストレージサービスを展開するBackblazeが解説しました。
Threads vs. Processes: A Look At How They Work Within Your Program
https://www.backblaze.com/blog/whats-the-diff-programs-processes-and-threads/
プログラムとは、コンピューターに保存されている「特定のタスクを実行するためのコード」です。プログラムにはOSに組み込まれたものや特定のタスクを実行するものなど、さまざまな種類があります。一般に、あるタスクに特化したプログラムはアプリケーションと呼ばれます。例えばウェブブラウザやゲームなどがアプリケーションです。
多くのプログラムはC、C++、C#などのプログラミング言語を使用して書かれていますが、最終的にはコンピューター上で実行するためにバイナリ形式(1と0)に翻訳(コンパイル)され、コードのテキストファイルとなります。コンピューターの中央処理装置であるCPUはバイナリ形式の命令しか理解できません。
プログラムがバイナリ形式になり、メモリにロードされたら、次にOSとメモリからのリソースが必要になります。リソースがなければプログラムを使用することはできません。
OSはプログラムにリソースを割り当てる作業を自動的に管理します。Windows、macOS、Linux、Androidなど、どのOSでもプログラムを実行するために必要なリソースを常に指示しています。プログラムがリソースとともにメモリにロードされたものがプロセスで、プロセス内の実行単位がスレッドです。1つのプロセスが持つスレッドは1つから複数までさまざまです。YouTubeのアプリケーションを例に挙げると、YouTubeそのものを実行する際に起動するものがプロセスで、YouTube内の細かな動作を処理するのがスレッドです。
プロセス内の各スレッドはプロセスに割り当てられたメモリとリソースを共有して処理を行いますが、リソースを消費し尽くしたり問題が起きたりすると動作が停止してしまう可能性があります。例えば1つのブラウザで複数のタブを開き、それぞれのタブで動画再生やダウンロードなど別の処理を行うときがこれにあたります。
ウェブブラウジングを行うアプリケーションのGoogle Chromeでは、これを回避するために各タブをスレッドではなく独立したプロセスとして扱っています。プロセスはお互いに干渉することはなく、各プロセスに割り当てられたリソースを欠くプロセスごとに使うことができるためです。各タブを1つのプロセスとして実行することで、アプリケーション全体をバグや不具合から保護することができます。
以下の画像は、多くのタブを開いたGoogle Chromeのプロセスを表しています。一部のプロセスはかなりのCPUとメモリを使用していますが、ほとんど使用していないプロセスがあることも分かります。
Backblazeは「お使いのシステムのアクティビティモニタ(タスクマネージャー)は、コンピューターの微調整や問題のトラブルシューティングを行う上で貴重な味方になります。コンピューターの動作が遅い場合や、プログラムやブラウザのウィンドウがしばらく反応しない場合、システムモニタを使ってその状態を確認できるからです。場合によってはNot Responding(応答なし)と記されたプロセスが表示されることがありますが、そのプロセスを終了して、システムの動作が改善されるかどうか試してみてください。アプリケーションがメモリを大量に消費する場合は、同じタスクを実行できる別のアプリケーションを選択することを検討してください」と述べました。
この記事のタイトルとURLをコピーする
・関連記事
UNIX/Linuxでよく使われる「Daemon」(デーモン)プロセスの語源とは? – GIGAZINE
コアを多数搭載するCPUは「POSIX」によって能力を制限されているとの指摘 – GIGAZINE
CPU・メモリ・ディスク・ネットワークの使用率やプロセス・日時などをトリガーにしてタスクを実行するフリーソフト「TimeComX Basic」 – GIGAZINE
テラバイトをはるかに上回る「ヨタバイト」の大きさを分かりやすく示す図 – GIGAZINE
NetflixやAmazonなどの大企業も導入する「マイクロサービス」の利点とは? – GIGAZINE
・関連コンテンツ