1. 実行可能状態、2. 割り込み可能待機状態、3. 割り込み不可待機状態、4. 停止状態、5. アボート状態の 5 つの状態があります。 「実行可能状態」の状態値は TASK_RUNNING です。この時点で、プログラムは実行キューに置かれ、実行可能状態にあります。プロセッサの使用権を取得すると、実行状態に入ることができます。州。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
オペレーティング システムによって定義され、オペレーティング システムによって制御される特別なデータ構造インスタンスは、プロセスと呼ばれます。ユーザー コードに接続されており、コードの実行に必要な独立したメモリ領域があり、割り当てられたプロセッサ タイム スライスを使用してスケジューラのスケジュールに従って実行されます。
Linux プロセスの 5 つの状態
Linux システムでは、プロセスが作成された後、システムは次の 5 つの状態を持つことができます。 : 。プロセスの現在の状態は、プロセス制御ブロックの state メンバーに記録されます。
準備完了状態と実行状態(実行可能状態)
準備完了状態の状態フラグstateの値はTASK_RUNNINGです。この時点で、プログラムは実行キューに配置され、実行する準備ができています。プロセッサーの使用権を取得すると、プロセッサーは実行状態に入ることができます。
プロセスがプロセッサを取得して実行すると、state の値は TASK_RUNNING のままで変化しませんが、Linux は、現在実行中のタスクを指すために特別に使用されるポインタ current をポイントして、タスクが実行中であることを示します。実行中のプロセス。
割り込み待機状態
ステータスフラグ状態の値は TASK_INTERRUPTIBL です。この時点では、プロセスは要求したリソースを取得していないため、待機状態になります。リソースが利用可能になるか、ウェイクアップ信号があると、プロセスはすぐに待機を終了し、準備完了状態に入ります。
無中断待機状態
ステータス フラグ状態の値は TASK_UNINTERRUPTIBL です。この時点で、プロセスもリソースを待機しています。リソースが利用可能になると、プロセスはすぐに準備完了状態になります。この待機状態と割り込み可能な待機状態の違いは、TASK_UNINTERRUPTIBL 状態のプロセスはセマフォや割り込みによって起動できず、適用されるリソースが有効な場合にのみ起動できることです。
この状態は、カーネルの特定のシナリオで使用されます。たとえば、プロセスがディスクの読み取りと書き込みを行う必要があり、データが DMA のメモリにコピーされているとき、プロセスがスリープ状態になっている場合などです。この時点で中断されると (強制終了信号など)、問題が発生する可能性が高くなります。そのため、この時点ではプロセスは中断できない状態になります。
停止状態
ステータス フラグ状態の値は TASK_STOPPED です。プロセスは、SIGSTOP シグナルを受信すると実行状態から停止状態に入り、SIGCONT シグナルを受信すると実行状態に戻ります。この状態は主にプログラムのデバッグに使用され、「一時停止状態」または「サスペンド状態」とも呼ばれます。
ステータスの中止
ステータス フラグ状態の値は TASK_DEAD です。プロセスが何らかの理由で実行を停止し、task_struct 構造体 (およびいくつかのリソース) を除いて、プロセスによって占有されていたすべてのリソースがリサイクルされ、システムはこれに注意を払わなくなるため、この状態は「状態」とも呼ばれます。 「ゾンビ状態」となり、プロセスはゾンビプロセスになります。
プロセスのライフサイクル全体を通じて、プロセスは 5 つの状態の間で遷移する可能性があります。 Linux プロセスの 5 つの状態間の変換関係を次の図に示します。
関連する推奨事項: 「Linux ビデオ チュートリアル 」
以上がLinuxプロセスの状態は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。