プロセスは、Linux で実行されるプログラムのインスタンスであり、トランザクションを管理するための基本単位です。プロセスには、独自の独立した処理環境とシステム リソースがあります。プロセスのステータスは、プロセスの作成、スケジュール設定、終了などを含めて変化します。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
プロセスは、Linux で実行されるプログラムのインスタンスです。
Linux システムでは、オペレーティング システムがプロセスを通じてタスクを 1 つずつ完了します。プロセスはトランザクションを管理する基本単位です。プロセスには、独自の独立した処理環境 (現在どの環境変数が必要か、プログラムが実行されているディレクトリはどこか、現在プログラムを実行しているユーザーなど) とシステム リソース (プロセッサの CPU 占有率など) があります。 、メモリ、I /O デバイス、データ、プログラム)。
Linux システムでプログラムを実行すると、システムはプログラム用の特定の環境を作成します。この環境には、システムがプログラムを実行するために必要なものがすべて含まれています。
Linux でコマンドを実行するたびに、新しいプロセスが作成または開始されます。たとえば、コマンド「ls -l」を実行してディレクトリの内容を一覧表示しようとすると、プロセスが開始されます。画面に 2 つの端末ウィンドウが表示されている場合は、同じ端末プログラムを 2 回実行している可能性があり、2 つの端末プロセスが存在します。
各端末ウィンドウはシェルを実行している可能性があり、実行中の各シェルはプロセスです。シェルからコマンドを呼び出すと、対応するプログラムが新しいプロセスで実行され、プログラムのプロセスの実行が完了すると、シェルのプロセスが再開されます。
オペレーティング システムは、PID またはプロセス ID と呼ばれる数値コードを通じてプロセスを追跡します。システム内のすべてのプロセスには一意の PID があります。
ここで例を使用して、Linux のプロセスを理解します。シェル コマンド ラインで次のコマンドを実行します。
$ sleep 10 & [1] 3324
プログラムは 10 秒待機するため、現在のシェルで sleep という名前のプロセスをすぐに検索します。
$ ps -ef | grep sleep mozhiyan 3324 5712 cons1 17:11:46 /usr/bin/sleep
A が表示されます。 /usr/bin/sleep
という名前のプロセスがシステム上で実行されています (その PID は、前のコマンドで取得した PID と同じです)。
ここで、上記の sleep コマンドを 3 つの異なるターミナル ウィンドウから並行して実行してみます。上記のコマンドの出力は次のようになります:
$ ps -ef | grep sleep mozhiyan 896 5712 cons1 17:16:51 /usr/bin/sleep mozhiyan 5924 5712 cons1 17:16:52 /usr/bin/sleep mozhiyan 2424 5712 cons1 17:16:50 /usr/bin/sleep
それぞれのスリープが表示されます。プログラム インスタンスは別のプロセスとして作成されます。
各 Linux プロセスには別の ID 番号、つまり親プロセスの ID (ppid) があります。システム内のすべてのユーザー プロセスには親プロセスがあります。
コマンド「ps -f」は、プロセスの PID と PPID をリストします。このコマンドの出力は次のようになります。
$ ps -f UID PID PPID TTY STIME COMMAND mozhiyan 4124 228 cons0 21:37:09 /usr/bin/ps mozhiyan 228 1 cons0 21:32:23 /usr/bin/bash
シェル コマンド ライン プロンプトで実行するコマンドはすべて、現在のシェル プロセスを親プロセスとして使用します。たとえば、シェルのコマンド ライン プロンプトで ls コマンドを入力すると、シェルは ls コマンドを実行しますが、このとき、Linux カーネルはシェルのメモリ ページをコピーしてから ls コマンドを実行します。
Unix では、各プロセスは fork メソッドと exec メソッドを使用して作成されます。ただし、このアプローチではシステム リソースが失われます。
Linux では、フォーク メソッドはコピーオンライト メモリ ページを使用して実装されるため、親プロセスのメモリ ページ テーブルをコピーするのに必要な時間とメモリの損失のみが発生し、新しいメモリ ページ テーブルが作成されます。子プロセスのページ テーブル独自のタスク構造。
コピーオンライト モードでは、新しいプロセスの作成時に不必要な構造コピーの作成が回避されます。たとえば、ユーザーがシェル コマンド ライン プロンプトで ls コマンドを出力すると、Linux カーネルはシェルの子プロセスを作成します。つまり、シェル プロセスが親プロセスで、ls コマンド プロセスが子プロセスになります。コマンド プロセスは、同じメモリ ページを使用するこのシェルをポイントし、子プロセスはコピー オン ライト テクノロジを使用して ls コマンドを実行します。
プロセスの状態
各 Linux プロセスには、作成、実行、終了、クリーンアップなどの独自のライフサイクルがあります。各プロセスには、プロセス内で現在何が起こっているかを示す独自のステータスもあります。プロセスのステータスは、プロセスの作成、スケジュール設定、終了などを含めて変化します。
プロセスには次の状態があります:
D (中断不可能なスリープ状態) - プロセスはスリープ状態であり、イベントが発生するまで再開できません。
R (実行ステータス) - プロセスは実行中です。
S (スリープ状態) - プロセスは実行されていませんが、イベントまたはシグナルを待っています。
T (停止状態) - プロセスは、信号 SIGINT や SIGSTOP などの信号によって停止されます。
Z (ゾンビ状態) -
指定したプロセスのステータスを表示するには、次のコマンドを使用できます:
ps -C processName -o pid=,cmd,stat
例:
$ ps -C sleep -o pid=,cmd,stat CMD STAT 9434 sleep 20 S
関連する推奨事項: "Linux ビデオ チュートリアル>>
以上がLinux におけるプロセスとは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。