몸에 많이 넣지 않아도됩니다.
몸에 많이 넣지 않아도됩니다.
답변:
프로세스에는 상위 (PPID)가 있어야합니다. 그럼에도 불구하고 커널은 실제 프로세스는 아니지만 최소한 init와 같은 일부 실제 프로세스를 수작업으로 만들고 프로세스 ID 0을 제공합니다. OS에 따라 ps
출력 프로세스로 표시되거나 표시되지 않지만 항상 표시됩니다 PPID로 :
예를 들어 Linux에서 :
$ ps -ef|head
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:09 ? 00:00:00 /sbin/init
root 2 0 0 09:09 ? 00:00:00 [kthreadd]
root 3 2 0 09:09 ? 00:00:00 [ksoftirqd/0]
...
Solaris에서 :
$ ps -ef|head
UID PID PPID C STIME TTY TIME CMD
root 0 0 0 Oct 19 ? 0:01 sched
root 5 0 0 Oct 19 ? 11:20 zpool-rpool1
root 1 0 0 Oct 19 ? 0:13 /sbin/init
root 2 0 0 Oct 19 ? 0:07 pageout
root 3 0 1 Oct 19 ? 117:10 fsflush
root 341 1 0 Oct 19 ? 0:15 /usr/lib/hal/hald --daemon=yes
root 9 1 0 Oct 19 ? 0:59 /lib/svc/bin/svc.startd
...
PID 것이 주 0
(그리고 -1
그 문제에 대한 다른 부정적인 값) 함수를 사용 그들을 좋아하는지에 따라 다른 의미를 가지고 kill
, fork
하고 waitpid
.
마지막으로 init
프로세스에 전통적으로 pid가 부여 되지만 #1
OS 레벨 가상화가 Solaris 영역과 같이 사용되는 경우는 더 이상 발생하지 않습니다 init
.
$ ps -ef|head
UID PID PPID C STIME TTY TIME CMD
root 4733 3949 0 11:07:25 ? 0:26 /lib/svc/bin/svc.configd
root 4731 3949 0 11:07:24 ? 0:06 /lib/svc/bin/svc.startd
root 3949 3949 0 11:07:14 ? 0:00 zsched
daemon 4856 3949 0 11:07:46 ? 0:00 /lib/crypto/kcfd
root 4573 3949 0 11:07:23 ? 0:00 /usr/sbin/init
netcfg 4790 3949 0 11:07:34 ? 0:00 /lib/inet/netcfgd
root 4868 3949 0 11:07:48 ? 0:00 /usr/lib/pfexecd
root 4897 3949 0 11:07:51 ? 0:00 /usr/lib/utmpd
netadm 4980 3949 0 11:07:54 ? 0:01 /lib/inet/nwamd
특별히 구별되는 프로세스 ID가있는 두 가지 작업이 있습니다. swapper 또는 sched는 프로세스 ID 0을 가지며 이전 예제에 넣은 jlliagre와 같이 페이징을 담당하며 실제로는 일반 사용자 모드 프로세스가 아닌 커널의 일부입니다.
프로세스 ID 1은 일반적으로 시스템 시작 및 종료를 주로 담당하는 init 프로세스입니다. 원래 프로세스 ID 1은 기술적 조치에 의해 init 용으로 특별히 예약되지 않았습니다.이 ID는 커널이 처음으로 호출 한 프로세스의 자연스러운 결과로 나타납니다. 보다 최근의 유닉스 시스템에는 일반적으로 '프로세스'로 보이는 추가 커널 구성 요소가 있으며,이 경우 PID 1은 이전 시스템과의 일관성을 유지하기 위해 init 프로세스에 적극적으로 예약됩니다.
pid
0은 대한 특별한 의미가kill(2)
그 의미 곳에 시스템 호출을 자신 하고 위해waitpid(2)
어디 의미 내 프로세스 그룹의 모든 프로세스를 적어도. 그 언급하지 않는fork()
반환0
우리는 아이에 걸 의미합니다.