マルチタスク:バックグラウンドプロセスとフォアグラウンドプロセス

マルチタスク・オペレーティング・システムとして、 Linuxはバックグラウンドで多くのプロセス(基本的にはプログラムやコマンドまたは同様のタスク)の実行をフォアグラウンドで継続してサポートします。

フォアグラウンドプロセス

フォアグラウンドプロセスは、直接実行して完了するまで待つコマンドまたはタスクです。 いくつかのフォアグラウンドプロセスは、進行中のユーザインタラクションをサポートするいくつかのタイプのユーザインタフェースを示す一方、他のタスクはタスクを実行し、そのタスクを完了している間にコンピュータを「フリーズ」する。

シェルから、プロンプトでコマンドを入力することでフォアグラウンドプロセスが開始されます。 たとえば、アクティブディレクトリ内のファイルの単純なリストを表示するには、次のように入力します。

$ ls

ファイルのリストが表示されます。 コンピュータがそのリストを準備して印刷している間は、コマンドプロンプトから何もできません。

バックグラウンドプロセス

フォアグラウンドプロセスとは異なり、 シェルバックグラウンドプロセスが終了するのを待つ必要はなく、より多くのプロセスを実行することができます。 利用可能なメモリ量の範囲内で、多くのバックグラウンドコマンドを次々と入力することができます。 コマンドをバックグラウンド・プロセスとして実行するには、コマンドを入力して、コマンドの末尾にスペースとアンパーサンドを追加します。 例えば:

$ command1&

終わりのあるアンパサンドでコマンドを発行すると、シェルは作業を実行しますが、コマンドが完了するのを待たずにすぐにシェルに戻り、シェルプロンプト(%for Cシェル、およびBourneシェルとKornシェルの$)が返されます。 この時点で、フォアグラウンドプロセスまたはバックグラウンドプロセスのいずれかに別のコマンドを入力できます。 バックグラウンドジョブは、フォアグラウンドジョブより低い優先順位で実行されます。

バックグラウンドプロセスの実行が完了すると、画面にメッセージが表示されます。

プロセス間の切り替え

フォアグラウンドプロセスの処理に時間がかかる場合は、Ctrl + Zキーを押して停止します。停止したジョブはまだ存在しますが、実行は中断されています。 バックグラウンドでジョブを再開するには、 bgと入力して停止したジョブをバックグラウンドで実行します。

フォアグラウンドで中断したプロセスを再開するには、 fgと入力します。プロセスがアクティブなセッションを引き継ぎます。

中断されたすべてのプロセスのリストを表示するには、 jobsコマンドを使用するか、 topコマンドを使用して最もCPU集約型のタスクのリストを表示し、システムリソースを解放または停止してシステムリソースを解放します。

シェル対GUI

マルチタスクは、シェルかグラフィカルユーザーインターフェイスのどちらで作業しいるかによって、動作が異なります 。 シェルからのLinuxは、仮想端末ごとにアクティブなフォアグラウンドプロセスを1つだけサポートします。 しかし、ユーザの実践的な観点から見ると、ウィンドウ環境(例えば、デスクトップを備えたLinuxではテキストベースのシェルではなく)は、複数の同時フォアグラウンドプロセスとして効果的に機能するいくつかのアクティブウィンドウをサポートします。 実際には、バックグラウンドのLinuxは、システムの安定性を促進し、エンドユーザの処理をサポートするために、GUIのプロセスの優先順位を調整します。