1. 概要

Linuxユーザーとして、私たちはプロセス識別子(PID)に精通しています。 PIDは、実行中のアクティブなプログラムに対するオペレーティングシステムの一意の識別子です。 実行中のプロセスを表示する簡単なコマンドは、initプロセスがPID1の所有者であることを示しています。 したがって、非常に重要な問題は、どのプロセスがPID0を持っているかということです。 このチュートリアルでは、Linuxコマンドを確認して、実行中のプロセス、PID 0とは何か、およびPID0を持つ実際のプロセスを確認します。

2. Linuxで実行中のプロセスを確認する方法

Linuxで実行中のプロセスをチェックするためのコマンドがいくつかあります。 これらの1つは ps 指図

$ ps -eaf
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 Feb25 ?        00:00:05 /sbin/init splash
root           2       0  0 Feb25 ?        00:00:00 [kthreadd]
root           3       2  0 Feb25 ?        00:00:00 [rcu_gp]
root           4       2  0 Feb25 ?        00:00:00 [rcu_par_gp]
root           9       2  0 Feb25 ?        00:00:00 [mm_percpu_wq]
root          10       2  0 Feb25 ?        00:00:00 [rcu_tasks_rude_]

psコマンドは、現在アクティブな実行中のプロセスを表示します。 上記の出力から、/ sbin /initスプラッシュプロセスのPID1、kthreaddプロセスのPID2などがわかります。

-eafオプションをpsコマンドに渡して、システム上のすべてのプロセスをリストとして表示します。 The ea オプションはすべてのプロセスを表示します f 完全なリストを表します。 ps のマニュアルページには、psコマンドで使用できる他の可能な引数が含まれています。

2.1. PPID 0とは何ですか?

上記の出力から、各PIDに対応するPPIDがあることがわかります。 例えば、 / sbin/initスプラッシュのPPIDは0です。 PPIDは、親プロセスIDの略です。 Linuxシステムでは、親プロセスIDは常にすべてのプロセスIDに割り当てられます。 どのプロセスが特定のプロセスを開始したかを示します。 したがって、initプロセスのPPID値0は、initプロセスに親がないことを示します。

2.2. PID 0とは何ですか? 

システム設計では、アクチュエータへのゼロ入力がオフ状態または位置に対応する場合があります。 ただし、0 PIDをPIDコントローラーに挿入すると、何もしないことに対応します。 エラー信号がない場合、修正は行われません。 ただし、ゼロはコントローラーのPIDとしてはあまり役立ちませんが、技術的には有効です。 したがって、PID0はアイドルプロセスと呼ばれることがよくあります。

2.3. PID 0のプロセスは何ですか? 

PID 0のプロセスはページングを担当し、このプロセスは常にスワッパーまたはスケジュールされたプロセスと呼ばれます。 このプロセスはカーネルの一部であり、通常のユーザーモードプロセスではありません。 initプロセスはPID1を所有し、システムの起動とシャットダウンを単独で担当します。

元々、プロセスID 1は、技術的な手段によって init 用に特別に予約されていませんでした。カーネルが最初に呼び出したプロセスであるという自然な結果として、このIDを持っていただけです。 さらに、最近のUnixシステムには通常、「プロセス」として表示される追加のカーネルコンポーネントがあります。 これらのシステムでは、PID 1は、古いシステムとの整合性を維持するために、initプロセス用にアクティブに予約されています。

3. 結論

このチュートリアルでは、PID 0を持つプロセスがユーザープロセスではなく、カーネルがページングに使用するプロセスであることを確認しました。 つまり、swapperまたはschedプロセスであり、オペレーティングシステムがセカンダリストレージデバイスからデータを保存および取得するのに役立ちます。