どのプロセスにPID 0がありますか?


回答:


51

プロセスID」というタイトルのウィキペディアページから:

特別に区別したプロセスIDを持つ2つのタスクがあります。スワッパ またはSCHEDはプロセスID 0を持ち、責任あるページング、そして実際にカーネルの一部ではなく、正常なユーザーモードプロセス。通常、プロセスID 1は、システムの起動とシャットダウンを主に担当するinitプロセスです。もともと、プロセスID 1は、技術的な手段によって特別にinit用に予約されていませんでした。カーネルによって呼び出された最初のプロセスであるという自然な結果として、このIDを単に持っていました。最近のUnixシステムには通常、「プロセス」として表示される追加のカーネルコンポーネントがあります。この場合、PID 1はinitプロセス用に積極的に予約され、古いシステムとの一貫性を維持します。

あなたは、親のPID(PPID)を見れば、このの証拠を確認することができますinitkthreadd

$ ps -eaf
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Jun24 ?        00:00:02 /sbin/init
root         2     0  0 Jun24 ?        00:00:00 [kthreadd]

kthreaddカーネルスレッドデーモンです。すべてのkthreadはこのスレッドから分岐されます。psPPID を使用して他のプロセスを確認し、PPIDを確認すると、この証拠を確認できます。

$ ps -eaf
root         3     2  0 Jun24 ?        00:00:57 [ksoftirqd/0]
root         4     2  0 Jun24 ?        00:01:19 [migration/0]
root         5     2  0 Jun24 ?        00:00:00 [watchdog/0]
root        15     2  0 Jun24 ?        00:01:28 [events/0]
root        19     2  0 Jun24 ?        00:00:00 [cpuset]
root        20     2  0 Jun24 ?        00:00:00 [khelper]

それらがすべてだということに注意してください2


それで、PID 0がスワッパーの場合、何がkswapd[0-9]*私のシステムで現在PID 52を持っていますか?ページングにも責任があるようです。
ルスラン

1
@Ruslan-質問をフォローしている場合は、メインサイトで質問してください。コメントはこの目的ではありません。新しい質問でこの質問を参照してください。
slm

さて、しかし、fork子プロセスを使用して新しいプロセスを作成する場合、pid 0を取得しますか?
ルートトラベラー

@roottravellerとは限りませんが、フォークが発生した親PIDが何であれ、表示されます。
slm

10

プロセス識別子 wiki から:

特別に区別されたプロセスIDを持つ2つのタスクがあります。swapperまたはschedはプロセスID 0を持ち、ページングを担当し、実際には通常のユーザーモードプロセスではなくカーネルの一部です。


6

のプロセスpid 0はスケジューラです。

プロセスID説明:
0スケジューラー
1初期化プロセス
2 kflushd
3 kupdate
4 kpiod
5 kswapd
6 mdrecoveryd

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.