1. 概要

このチュートリアルでは、オペレーティングシステムのプロセスのライフサイクルについて説明します。

2. プロセスとは何ですか?

オペレーティングシステムでは、プロセスは、現在実行中のコンピュータプログラムのインスタンスです。したがって、アクティブなステータスを持つコンピュータプログラムはプロセスです。 たとえば、ユーザーがWebサーフィンをしたり、音楽プレーヤーアプリケーションを使用して音楽を再生したりするためにWebブラウザを開いているとします。

複数のプロセスを同時に実行する場合、プロセスは順番に実行されます。 たとえば、4つのプロセスがあるとします。

プロセス実行の概念モデルを見てみましょう。

ここで、プロセスのボックスのサイズは、プロセスの実行時間を表します。 OSは、プロセスの実行時間と開始時間に従って、左から右にプロセスの実行を開始します。

先に進む前に注意すべき重要な点の1つは、プロセスとプログラムが同じではないということです。プログラムは、オペレーティングシステムのメモリに保存されている実行可能テキストファイルです。 テキストファイルを実行すると、プロセスになります。 プログラムには、特定のタスクを実行するために作成されたコマンドと命令が含まれています。 プロセスは、実際にオペレーティングシステムでこれらのタスクを実行しています。

プロセスとプログラムのもう1つの基本的な違いは、複数のユーザーが同じテキストで同じプログラムを実行できることですが、プログラムファイルを実行するたびに、一意のプロセスIDを持つ個別のプロセスが作成されます。

3. プロセスのレイアウト

プログラムがユーザーによって実行されると、それはプロセスになり、オペレーティングシステムのメインメモリにロードされます。 メインメモリ内の暗黙のプロセスレイアウトには、スタック、ヒープ、データセクション、テキストセクションの4つの部分があります。各セクションには、プロセスに対応する情報が含まれています。

スタックは、ローカル変数や関数パラメーターなどの一時データを格納します。 プロセスの実行時に、メモリが必要です。 ヒープは、プロセスに動的に割り当てられたメモリです。 データセクションには、初期化されたグローバル変数と静的変数が格納されます。 次のセクションには、コンパイルされたプログラムコードが含まれています。

4. プロセスの属性

プロセスにはさまざまな属性が含まれています。 これらの属性は、プロセス制御ブロック(PCB)(タスク制御ブロックとも呼ばれます)に格納されます。 重要な属性には、プロセスID、プロセス状態、CPUスケジューリング情報、I / O情報、アカウンティング情報、メモリ管理情報などがあります。

すべてのプロセスは、プロセスIDで一意に識別できます。 あるプロセスを別のプロセスと区別するのに役立ちます。 ランタイム全体を通して、各プロセスには特定の瞬間に関連付けられたいくつかの状態があります。 プロセス状態は、特定の実行時のプロセスの状態を表示します。

各オペレーティングシステムは異なるスケジューリングアルゴリズムを使用する場合があります。OSはスケジューリングアルゴリズムに従ってプロセスを実行します。 CPUスケジューリング情報には、オペレーティングシステムで現在使用されているスケジューリングに関する情報が含まれています。 各プロセスを実行するには、いくつかのI/Oデバイスが必要です。 I / Oデバイスの詳細は、I/O情報属性に保存されます。

プロセスの実行中は、プロセスの実行に使用されるCPUの量、実行IDなどのアカウンティング関連の情報を知ることが重要です。 プロセスには、OSのメモリ管理に関する情報も含まれています。

5. プロセスライフサイクル

ユーザーがプロセスを実行すると、終了する前にいくつかのフェーズを経ます。 これらのフェーズは、OSごとに異なる場合があります。 一般的なプロセスライフサイクルには、2つ、5つ、または7つの状態があります。

5.1. 2状態モデル

最も単純なプロセスライフサイクルモデルは、実行中と非実行中の2つの状態のみで構成されます。したがって、このモデルでは、プロセスがCPUで実行されているか、実行されていません。

新しいプロセスが作成されると、プロセスは実行されていない状態になります。 最初に、プロセスはディスパッチャと呼ばれるプログラムに保存されます。 ディスパッチャは、CPUが空いていることを認識すると、プロセスをCPUに移動できるようにします。 ディスパッチャがプロセスにCPUの使用を許可すると、プロセスは実行状態になります。

CPUが空いている場合、 CPUスケジューラーがプロセスを選択し、CPUに送信します。 CPUスケジューラは、オペレーティングシステムで使用されるスケジューリングスキームに従ってプロセスを選択します。

5.2. 5状態モデル

5ステートプロセスのライフサイクルは、2ステートモデルの拡張バージョンです。 2状態モデルは、実行されていない段階にあり、実行の準備ができているすべてのプログラムで効率的に機能します。 ただし、一部のオペレーティングシステムでは、一部のI / O操作が使用できないため、一部のプロセスが実行状態に移行する準備ができていない場合があります。このような問題は、実行されていない状態を2つに分割することで解決できます。状態:

開始状態または新しい状態は、プロセスが作成されたばかりであることを表します。 プログラムはディスパッチャにあり、メインメモリに移動されるのを待っています。 プロセスがメインメモリに移動するとすぐに、状態が開始から準備完了に変わります。

プロセスがメインメモリにあり、CPUを待機しているとき、プロセスは準備完了状態にあります。 CPUが解放されると、プロセスはCPUに移動してさらに実行されます。

プロセスが実行状態にある場合、そのプロセスは現在CPUで実行されています。

CPUでの実行が完了した後、プロセスが終了段階に進まない場合があります。 代わりに、一部のI/O操作や同期信号などの完了を待つ場合があります。 このような場合、プロセスは待機段階に移行します。 CPUが再び解放されると、プロセスは準備完了状態になります。 準備完了状態から、プロセスは実行状態になります。

最後に、プロセスが実行を終了するか、何らかの理由でユーザーによって中止される可能性がある場合、プロセスは終了段階に進みます。

5.3. 7つの状態モデル

5状態モデルの拡張バージョンは7状態モデルです。 このモデルには、サスペンドレディとサスペンドウェイトの2つの新しい状態が追加されています。状態図を見てみましょう。

レディ状態にあるプロセスがメインメモリからスワップされることがあり、CPUスケジューラはプロセスをサスペンドレディのステータスで外部ストレージに移動します。 プロセスがメインメモリに移動されるたびに、プロセスは準備完了状態に戻ることができます。

メインメモリが不足しているため、待機状態にあるプロセスがセカンダリストレージに移動される場合があります。 その後、プロセスは一時停止待機ステージに到達しました。 この段階から、プロセスは待機段階に戻るか、一時停止準備段階に戻ることができます。

6. 結論

このチュートリアルでは、オペレーティングシステムのプロセスのライフサイクルについて学びました。 詳細な説明とともに、3つのプロセスライフサイクルモデルを提示しました。