Wie sind die Prozesse in UNIX nummeriert?

17

Ich kann kein Muster finden, wenn ich die Nummerierung der PIDs in der Prozesstabelle ( ps -a) betrachte, da es sich bei den PIDs nicht um aufeinanderfolgende Nummern handelt und manchmal große "Lücken" zwischen diesen Nummern bestehen. Liegt es daran, dass möglicherweise einige Prozesse für kurze Zeit ausgeführt werden und einige PIDs reservieren? Gibt es einen Bereich, nach dem die Nummerierung der Prozesse zurückgesetzt wird?

Ich verwende Mac OS X, denke aber, dass die Antwort generell für UNIX gelten sollte.

syntagma
quelle

Antworten:

18

Ja in beiden Punkten.

Viele Prozesse sind kurzlebig. Sie erhalten eine PID, laufen, beenden und die PID verschwindet aus der Prozesstabelle.

Prozesse leben manchmal nur für den Bruchteil einer Sekunde!

Wenn Programme gestartet werden, führen sie häufig zahlreiche Befehle aus, um das System zu überprüfen und ihre Umgebung zu initialisieren.

Die maximale PID-Nummer ist systemabhängig und manchmal konfigurierbar. Grundsätzlich, wenn Sie wissen, dass Sie eine große Anzahl von Prozessen haben werden, müssen Sie möglicherweise die Anzahl erhöhen, aber auf neuen Betriebssystemen glaube ich, dass die maximale Anzahl in der Regel groß genug für die meisten Workloads ist.

PIDs sind Einträge in der Prozesstabelle. Je mehr Speicher Sie haben, desto mehr Speicherplatz belegt die Prozesstabelle.

Schauen Sie sich diese verwandte Frage an: /server/279178/what-is-the-range-of-a-pid-on-linux-and-solaris

Beachten Sie auch, dass dies die "maximale Anzahl von Prozessen pro Benutzer" ist, die eine Maßnahme zum Schutz vor einem böswilligen Benutzer darstellt, der absichtlich viele Prozesse erstellt, um die gesamte Prozesstabelle zu überlasten.

Johan
quelle
7

Es ist auch möglich, einige moderne Kernel so zu konfigurieren, dass sie neuen Prozessen zufällige PIDs zuweisen, um die Sicherheit zu verbessern. Zumindest Linux und FreeBSD können dies mit einer sysctl-Einstellung tun, und OpenBSD tut dies immer. In diesen Fällen können Sie immer weniger über die Nummerierungsschemata sagen.

unperson325680
quelle
Wissen Sie, welche Leistungskosten hierfür gegebenenfalls anfallen?
Bruce Ediger
@ Bruce: Der erste vorgeschlagene Patch hatte die schlechteste Performance von O (infty) aufgrund der naiven Randomisierung. Aber ich denke, sie haben etwas Sicheres und Verwendbares. Ich fand nichts sehr aktuelles zu dem Thema ... nicht das, was ich glaube. :)
unperson325680
5
Zufällige PIDs klingen für mich nach Sicherheit durch Unbekanntheit.
Johan
Meistens ist es so ...
unperson325680
Abgesehen von einzelnen Initiativen schlug Linux es früher nur durch einen grsecurity- Patch vor, das Linux-Kernel-Team lehnte es immer ab, es zu implementieren ( Beispiel hier ), und sogar das grsecurity-Team ließ es Ende 2006 endgültig fallen .
WhiteWinterWolf