Domanda

Ho una domanda un po 'sciocca, se ho una serie di processi che vengono creati ... questi non sono necessariamente una sorta di eredità, il pid dei processi deve essere un numero continuo o casuale?

È stato utile?

Soluzione

Questo è determinato dal sistema operativo.

In generale, sono generalmente assegnati in sequenza dal sistema operativo. Tuttavia, questo comportamento non è qualcosa su cui basare le decisioni, poiché la maggior parte delle specifiche del sistema operativo afferma che l'allocazione dell'ID processo non è deterministica (ovvero: potrebbe essere casuale e potrebbe cambiare in una versione futura, ecc.)

Altri suggerimenti

Su Linux, i pid sono generalmente allocati in modo sequenziale su base di sistema, ma si avvolgono periodicamente e potrebbero esserci "lacune" causate da altri processi non correlati. In un caso estremo, potresti avere un 'gap' abbastanza ampio da causare questo avvolgimento. Quindi non dare per scontato alcun ordine particolare, invece tieni traccia esplicita dei "PID" dei tuoi genitori o figli.

Ecco come testare ciò che fa il tuo sistema:

for i in $(seq 20); do ps; done | grep ps

I PID di " ps " i comandi sono processi consecutivi o quasi consecutivi come qualsiasi altro chiamante potrebbe ragionevolmente aspettarsi di essere in grado di generare.

Il mio terminale cygwin su Windows li alloca casualmente, il mio host web li alloca in modo sequenziale (con lacune occasionali che presumibilmente sono per processi gestiti da altri utenti o server).

Alcuni ritengono che l'allocazione PID sequenziale rappresenti una leggera possibile preoccupazione per la sicurezza, poiché potrebbe perdere informazioni tra gli utenti di un sistema multiutente.

Su AIX, vedrai spesso PID più grandi (ad esempio a 7 cifre) e non sono necessariamente allocati in modo semi-sequenziale (anche se durante il test mi è sembrato di pedalare in incrementi di 2; c'era un altro utente sulla macchina, quindi potrebbe non significare molto).

Nuovo accesso su un computer AIX 5.3:

$ ps
     PID    TTY  TIME CMD
 1060910 pts/27  0:00 -ksh
 1155224 pts/27  0:00 ps
$

Dipende dalla tua piattaforma, ma non dovresti dipendere da alcun ordine specifico per i tuoi pid.

Su Windows, i pid sono generalmente allocati in numero crescente, ma quando i processi escono, i pid possono essere riciclati e vedrai casi in cui un nuovo processo ha un pid inferiore rispetto a un processo precedente. Inoltre, pid è uscito dallo stesso spazio dei nomi di tid, quindi non vedrai che il pid aumenta di 4 quando avvii nuovi processi.

Dal tuo punto di vista saranno casuali. Il sistema gestisce quei numeri e li assegna quando vengono creati i processi. Una rapida occhiata ai PID attualmente sul mio sistema mostra che sono tutti divisibili per 4 ...

Se stai creando quei bambini che conoscerai il pid, il pid dipende dallo scheduler del sistema operativo, non ti importa di queste cose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top