프로세스 ID 0의 Linux에서 시작된 프로세스를 찾고 있습니다. Linux init
의 첫 번째 프로세스 인 PID 1이 PID 0의 프로세스가 있습니까?
프로세스 ID 0의 Linux에서 시작된 프로세스를 찾고 있습니다. Linux init
의 첫 번째 프로세스 인 PID 1이 PID 0의 프로세스가 있습니까?
답변:
wikipedia 페이지에서 : Process identifier :
특별히 구별되는 프로세스 ID에는 두 가지 작업이 있습니다. swapper 또는 sched 는 프로세스 ID 0을 가지며 페이징을 담당하며 실제로 일반 사용자 모드 프로세스가 아닌 커널의 일부입니다 . 프로세스 ID 1은 일반적으로 시스템 시작 및 종료를 주로 담당 하는 init 프로세스입니다. 원래 프로세스 ID 1은 기술적 조치에 의해 init 용으로 특별히 예약되지 않았습니다.이 ID는 커널이 처음으로 호출 한 프로세스의 자연스러운 결과로 나타납니다. 보다 최근의 유닉스 시스템에는 일반적으로 '프로세스'로 보이는 추가 커널 구성 요소가 있으며,이 경우 PID 1은 이전 시스템과의 일관성을 유지하기 위해 init 프로세스에 적극적으로 예약됩니다.
당신이 부모의 PID (PPID)를 보면 당신이 증거를 볼 수 init
및 kthreadd
:
$ 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는이 스레드에서 분기됩니다. ps
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
입니다.
kswapd[0-9]*
현재 시스템의 PID 52가 무엇입니까? 페이징에 대한 책임도있는 것 같습니다.