Windows 7 riutilizza gli ID di processo?


19

Windows 7 riutilizza gli ID di processo?

Il motivo per cui ho posto questa domanda è dovuto alla mia esperienza che Windows XP e Linux non sembrano mai generare ID di processo superiori a 20-30k. Tuttavia, la mia macchina Windows 7 raggiungerà gli ID fino a 5-10k circa entro poche ore dal riavvio, che è la mia normale esperienza del passato. La mattina dopo controllo e alcuni processi sono 250k o più, il che non lo è.

Ho attivato la funzione di controllo della sicurezza per registrare la creazione e la conclusione del processo. Niente sta generando centinaia o migliaia o processi. Sembra che solo 513 di questi eventi siano registrati per un periodo di 24 ore, ma a quanto pare sono stati utilizzati centinaia di migliaia di ID di processo.

Ho provato a cercare la mia domanda e una delle domande suggerite precedentemente poste puntava al meraviglioso blog di Mark Russinovich . Ma questo articolo, sebbene molto interessante, mi ha lasciato perplesso.


2
Scommetto che si resettano dopo un riavvio ...
Austin T francese

3
Ovviamente lo fanno, perché non ci sono processi all'avvio, quindi tutti i PID> 4 non sono utilizzati.
Grawity

1
Penso che il suo punto sia che a meno che Windows non riutilizzi i PID alla fine, si esaurirà e richiederà un riavvio.
Simon Richter,

Risposte:


22

Dal mio test sembra che tu abbia un falso presupposto, i numeri PID non sono indicati in ordine sequenziale. Questo è molto facile da dimostrare, esegui il seguente comando dalla riga di comando. Dovrebbe aprire 3 copie del blocco note.

notepad & notepad & notepad

Sulla mia macchina ecco i PID delle 3 copie che erano tutti aperti contemporaneamente.

inserisci qui la descrizione dell'immagine

Come puoi vedere il salto del PID molto in giro, Se li apri uno alla volta vedrai anche che il PID successivo non è sempre più grande del precedente. Ad esempio, ho aperto una quarta copia del blocco note e ho ottenuto questo

inserisci qui la descrizione dell'immagine

Quindi sembra che Windows 7 sceglierà semplicemente un PID inutilizzato ogni volta che avvia un processo, quindi è possibile che un PID venga riutilizzato durante l'esecuzione di Windows senza riavviare.


Ho scritto un semplice script PowerShell (richiede v2 o più recente, vedere questa risposta modifica la cronologia per una versione C #) per dimostrarlo di sicuro

$h = new-object 'System.Collections.Generic.HashSet[string]'
do {
    $proc = Start-Process 'notepad' -PassThru
    $id = $proc.Id
    Stop-Process $id
} while ($h.Add($id))
$count = $h.Count
Write-Host "Took $count PIDs to hit a duplicate, the duplicate was $id."

L'esecuzione del programma 10 volte ha sempre richiesto tra 134e il 147lancio del blocco note per riutilizzare lo stesso PID (Perché questo numero è così piccolo? GO-GO Gadget Birthday Problem !)


5
Windows NT lo rende ancora più veloce perché i PID sono sempre multipli di quattro .
Grawity

Grazie Scott. Esiste uno script / utility shell che potrebbe tenere traccia di tutti i processi PID e registrarlo in un file con il nome del processo a cui sono stati assegnati anche loro?
Isildur,

1
Potresti, ma non ne vedo l'utilità. Vuoi solo tenere traccia di tutti i processi avviati o ti interessa davvero il PID?
Scott Chamberlain,

A questo punto, voglio solo sapere quali processi vengono eseguiti così tante volte da spingere i numeri di identificazione del processo nell'intervallo 500k +. Forse un processo sta generando anche processi. Questo è solo un desktop win 7 di base, antivirus e firefox, un gioco o due e non facciamo molto altro. Grazie per le risposte
Isildur,

Quindi ho rimosso una vecchia utility che indicizzava le unità disco usando file batch che qualcuno aveva scritto anni fa e si è scoperto che questo era il colpevole che generava numeri PID così elevati. Ora la stessa macchina ha funzionato per settimane e il numero PID più alto fino ad oggi è 12252.
Isildur,

1

Ho eseguito un test per un'ora e in quel momento sono usciti 302 processi. Di questi, 70 avevano un PID in comune, quindi direi che il PID viene riutilizzato frequentemente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.