Nette und kindliche Prozesse

22

Kann mir jemand sagen, in welcher Beziehung eine bestimmte niceEbene zu untergeordneten Prozessen steht?

Wenn ich zum Beispiel einen Standardwert nicevon habe 0und ein Skript mit starte, mit nice 5dem wiederum einige untergeordnete Prozesse gestartet werden (in diesem Fall ungefähr 20 parallel), was ist der Vorteil der untergeordneten Prozesse?

NWS
quelle
1
Nur der Root-Benutzer kann die Integrität eines Prozesses verringern, und der Wert wird in jeder sinnvollen forkImplementierung an untergeordnete Prozesse vererbt .
jw013
@ jw013 - Aus Gründen der Klarheit schreibe ich Skripte, um untergeordnete &Prozesse zu erzeugen , und nicht mit c& fork.
NWS
3
es sei denn, Sie verwenden ein Nicht-Unix / Linux-Betriebssystem, ist es eine ziemlich sichere Wette, dass Ihre Shell Hintergrundprozesse erzeugt fork.
jw013

Antworten:

28

Ein untergeordneter Prozess erbt den niceWert, den der übergeordnete Prozess zum Zeitpunkt der Verzweigung besitzt (in Ihrem Beispiel 5).

Wenn sich der niceWert des übergeordneten Prozesses nach dem Verzweigen der untergeordneten Prozesse ändert, erben die untergeordneten Prozesse den neuen niceWert jedoch nicht.

Sie können dies mit dem Überwachungstool leicht beobachten top. Wenn das niceFeld (NI) nicht standardmäßig angezeigt wird, können Sie es durch Drücken von fund Auswählen von hinzufügen I. Dadurch wird die NISpalte zur topAnzeige hinzugefügt .

* 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                                         

Gute Informationen von man 2 fork

fork () erstellt einen neuen Prozess durch Duplizieren des aufrufenden Prozesses. Der neue Prozess, der als untergeordneter Prozess bezeichnet wird, ist ein genaues Duplikat des aufrufenden Prozesses, der als übergeordneter Prozess bezeichnet wird, mit Ausnahme der folgenden Punkte:

  • Das untergeordnete Element verfügt über eine eigene eindeutige Prozess-ID, und diese PID stimmt nicht mit der ID einer vorhandenen Prozessgruppe überein (setpgid (2)).
  • Die übergeordnete Prozess-ID des Kindes stimmt mit der übergeordneten Prozess-ID überein.
  • Das Kind erbt nicht die Speichersperren seiner Eltern (mlock (2), mlockall (2)).
  • Prozessressourcennutzungen (getrusage (2)) und CPU-Zeitzähler (times (2)) werden im Kind auf Null zurückgesetzt.
  • Der Satz anstehender Signale des Kindes ist anfangs leer (sigpending (2)).
  • Das Kind erbt keine Semaphoranpassungen von seinem Elternteil (semop (2)).
  • Das untergeordnete Element erbt keine Datensatzsperren vom übergeordneten Element (fcntl (2)).
  • Das Kind erbt keine Timer von seinem Elternteil (setitimer (2), alarm (2), timer_create (2)).
  • Das untergeordnete Element erbt weder ausstehende asynchrone E / A-Vorgänge von seinem übergeordneten Element (aio_read (3), aio_write (3)) noch asynchrone E / A-Kontexte von seinem übergeordneten Element (siehe io_setup (2)).
George M
quelle