O Windows 7 reutiliza identificações de processo?


19

O Windows 7 reutiliza identificações de processo?

O motivo pelo qual faço essa pergunta é devido à minha experiência de que o Windows XP e o Linux nunca parecem gerar IDs de processo superiores a 20 a 30k. No entanto, minha máquina com Windows 7 alcançará IDs entre 5 e 10 mil ou mais dentro de algumas horas após uma reinicialização, que é a minha experiência normal do passado. Na manhã seguinte, verifico e alguns processos têm 250k ou mais, o que não é.

Ativei o recurso de auditoria de segurança para registrar a criação e finalização do processo. Nada está gerando centenas ou milhares ou processos. Apenas 513 desses eventos são registrados por um período de 24 horas; no entanto, centenas de milhares de IDs de processo foram usados.

Tentei pesquisar minha pergunta e uma das perguntas sugeridas anteriormente apontou para o maravilhoso blog de Mark Russinovich . Mas este artigo, embora seja uma leitura muito interessante, me deixou perplexo.


2
Aposto que repor após uma reinicialização ...
— Austin T Francês

3
É claro que sim, porque não há processos quando a inicialização é iniciada; portanto, todos os PIDs> 4 não são utilizados.
— grawity

1
Penso que o argumento dele / dela era que, a menos que o Windows reutilize PIDs, ele acabará e exigirá uma reinicialização.
— Simon Richter

Respostas:


22

Pelo meu teste, parece que você tem uma suposição falsa: os números PID não são fornecidos em ordem sequencial. Isso é muito fácil de provar, execute o seguinte comando na linha de comando. Deve abrir 3 cópias do bloco de notas.

notepad & notepad & notepad

Na minha máquina, aqui estão os PIDs das 3 cópias que foram abertas ao mesmo tempo.

insira a descrição da imagem aqui

Como você pode ver os PIDs saltando bastante, se você os abrir um de cada vez, também verá que o próximo PID nem sempre é maior que o anterior. Por exemplo, abri uma quarta cópia do bloco de notas e peguei este

insira a descrição da imagem aqui

Portanto, parece que o Windows 7 escolhe apenas um PID aleatório não utilizado toda vez que inicia um processo; portanto, é muito bom que um PID seja reutilizado durante a execução do Windows sem uma reinicialização.


Eu escrevi um script simples do PowerShell (requer v2 ou mais recente; consulte este histórico de edições das respostas para uma versão em C #) para provar com certeza

$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."

Executar o programa 10 vezes que sempre foi necessário entre 134e 147inicia o bloco de notas para que o mesmo PID seja reutilizado (por que esse número é tão pequeno? Problema de aniversário do gadget GO-GO !)


5
O Windows NT torna ainda mais rápido, porque os PIDs são sempre múltiplos de quatro .
— grawity

Obrigado Scott. Existe um script shell / utilitário que possa rastrear todos os números de PID dos processos e registrá-lo em um arquivo com o nome do processo ao qual eles foram atribuídos também?
— Isildur

1
Você poderia, mas não vejo a utilidade disso. Você só quer acompanhar todos os processos iniciados ou realmente se importa com o PID?
— Scott Chamberlain

Neste ponto, eu só quero saber quais processos estão sendo executados tantas vezes que empurraram os números de identificação do processo para o intervalo de 500k +. Talvez um processo esteja gerando processos mesmo. Este é apenas um win 7 básico para desktop, antivírus e firefox, um jogo ou dois e não fazemos muito mais. Obrigado pelas respostas.
— Isildur

Então, removi um utilitário antigo que indexava unidades de disco usando arquivos em lotes que alguém havia escrito anos atrás e, por acaso, esse era o culpado por gerar números PID tão altos. Agora, a mesma máquina tem correu por semanas eo maior número PID até à data é 12252.
— Isildur

1

Fiz um teste por uma hora e nesse período 302 processos foram encerrados. Desses, 70 tinham um PID em comum, então eu diria que o PID é reutilizado com frequência.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.