좋고 자식 프로세스


22

누군가 특정 nice수준과 자식 프로세스 간의 관계가 무엇인지 말해 줄 수 있습니까 ?

예를 들어, 기본값 nice0이고로 스크립트를 시작하면 nice 5일부 하위 프로세스 (이 경우 병렬로 약 20 개)가 시작되면 하위 프로세스의 장점은 무엇입니까?


1
루트 사용자 만이 프로세스의 훌륭함을 줄일 수 있으며, 합리적인 fork구현 에서는 하위 프로세스가 값을 상속합니다 .
jw013

@ jw013-명확성을 &위해 c&를 사용하지 않고 자식 프로세스를 생성하는 스크립트를 사용 하고 fork있습니다.
NWS

3
유닉스 / 리눅스가 아닌 운영체제에 있지 않다면, 쉘이 백그라운드 프로세스를 생성하는 것이 안전합니다 fork.
jw013

답변:


28

자식 프로세스 nice는 분기 될 때 부모가 보유한 모든 값을 상속받습니다 (예 :) 5.

그러나 nice하위 프로세스를 분기 한 후 상위 프로세스 의 값이 변경되면 하위 프로세스는 새 nice값을 상속하지 않습니다 .

모니터링 도구를 사용하여이를 쉽게 관찰 할 수 있습니다 top. 는 IF nice필드 (NI)가 기본적으로 표시되지 않습니다, 당신은 눌러 추가 할 수 있습니다 f및 선택 I. NI열이 top디스플레이에 추가 됩니다.

* I: NI = Nice value

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1937 root      20   0  206m  66m  45m S  6.2  1.7  11:03.67 X                                         

좋은 정보 man 2 fork

fork ()는 호출 프로세스를 복제하여 새 프로세스를 작성합니다. 자식이라고하는 새로운 프로세스는 다음 사항을 제외하고는 부모라고하는 호출 프로세스의 정확한 복제입니다.

  • 하위에는 고유 한 프로세스 ID가 있으며이 PID는 기존 프로세스 그룹의 ID (setpgid (2))와 일치하지 않습니다.
  • 자녀의 부모 프로세스 ID는 부모의 프로세스 ID와 동일합니다.
  • 자식은 부모의 메모리 잠금을 상속하지 않습니다 (mlock (2), mlockall (2)).
  • 프로세스 자원 이용률 (getrusage (2)) 및 CPU 시간 카운터 (times (2))는 하위에서 0으로 재설정됩니다.
  • 자식의 보류중인 신호 세트는 처음에 비어 있습니다 (sigpending (2)).
  • 자식은 부모로부터 세마포어 조정을 상속하지 않습니다 (semop (2)).
  • 자식은 부모 (fcntl (2))의 레코드 잠금을 상속하지 않습니다.
  • 자식은 부모로부터 타이머를 상속받지 않습니다 (setitimer (2), alarm (2), timer_create (2)).
  • 하위는 상위 (aio_read (3), aio_write (3))에서 미해결 비동기 I / O 작업을 상속하지 않으며 상위에서 비동기 I / O 컨텍스트를 상속하지 않습니다 (io_setup (2) 참조).
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.