プロセス
プロセスとは、現在コンピューター上で実行されているプログラムのインスタンスです。これはCPUによるプログラムのアクティブな実行を表し、小さなバックグラウンドタスクから、ワープロソフトやWebブラウザーのような包括的なアプリケーションまで、さまざまな規模があります。各プロセスは1つ以上のスレッドで構成され、プログラムのコードに含まれる命令と、現在の状態で必要なリソース(入力、出力、中間データなど)を保持します。
多くのアプリケーションは、タスクを子プロセスに分割します。たとえば、Webブラウザーは、開いたタブごとに、またインストールした拡張機能やプラグインごとに、個別のプロセスを開始することがあります。異なるアプリケーションの独立したプロセスは、競合を防ぎ、データの安全性を確保するため、通常は直接通信できません。ただし、ソケットやメッセージキューなどのプロセス間通信(IPC)技術を使うと、安全かつ制御された方法でプロセス間の情報交換が可能になります。
現代のオペレーティングシステムはマルチタスクに対応しており、複数のプロセスを同時に実行できます。各CPUコアは一度に1つのプロセスを実行できるため、複数のプロセスを並列に実行できます。利用可能なコア数を常に上回る数のアクティブなプロセスが存在するため、オペレーティングシステムのタスクスケジューラーは、優先度に基づいてプロセス間でCPU時間を分配し、プロセスをすばやく切り替えることで、ほぼ同時に実行されているように保ちます。対話型プロセスは最も高い優先度を持つ傾向があるため、キーストロークやマウスクリックなどのユーザー入力にはすぐにリソースが割り当てられ、バックグラウンドプロセスは順番を待ちます。
各オペレーティングシステムには、コンピューター上で実行中のプロセスをユーザーが確認したり、応答しなくなったプロセスを手動で終了したりできるユーティリティも用意されています。Windowsユーザーは、キーボードショートカット( + + )を使ってタスクマネージャーを起動できます。macOSでは、これに相当するものがアクティビティモニタアプリです(Applications / Utilitiesフォルダーにあります)。UnixとLinuxには、ディストリビューションに応じてさまざまなシステムモニター用ユーティリティが含まれており、topやhtopのユーティリティ、GNOME System Monitorアプリケーションなどがあります。
知識をテストする