¿Windows 7 reutiliza las ID de proceso?

19

¿Windows 7 reutiliza las ID de proceso?

La razón por la que hago esta pregunta se debe a mi experiencia de que Windows XP y Linux nunca parecen generar ID de proceso superiores a 20-30k. Sin embargo, mi máquina con Windows 7 alcanzará IDs de hasta 5-10k en unas pocas horas después de un reinicio, que es mi experiencia normal del pasado. A la mañana siguiente verifico y algunos procesos son 250k o más, lo cual no es así.

Activé la función de auditoría de seguridad para registrar la creación y finalización del proceso. Nada está generando cientos o miles o procesos. Parece que solo 513 de estos eventos se registraron durante un período de 24 horas, sin embargo, se han utilizado cientos de miles de ID de proceso.

Intenté buscar mi pregunta y una de las preguntas sugeridas anteriormente me indicó el maravilloso blog de Mark Russinovich . Pero este artículo, aunque es una lectura muy interesante, me ha dejado perplejo.

isildur
fuente
2
Apuesto a que se reiniciaron después de un reinicio ...
Austin T French
3
Por supuesto que sí, porque no hay ningún proceso en absoluto cuando se inicia el arranque, por lo tanto, todos los PID> 4 no se utilizan.
Grawity
1
Creo que su punto era que, a menos que Windows reutilice los PID eventualmente, se agotará y requerirá un reinicio.
Simon Richter

Respuestas:

22

Según mis pruebas, parece que tiene una suposición falsa, los números PID no se dan en orden secuencial. Esto es muy fácil de probar, realice el siguiente comando desde la línea de comandos. Debería abrir 3 copias del bloc de notas.

notepad & notepad & notepad

En mi máquina, aquí están los PID de las 3 copias que se abrieron todas al mismo tiempo.

ingrese la descripción de la imagen aquí

Como puede ver que los PID saltan mucho, si los abre uno a la vez, también verá que el siguiente PID no siempre es más grande que el anterior. Por ejemplo, abrí una cuarta copia del bloc de notas y obtuve esto

ingrese la descripción de la imagen aquí

Por lo tanto, parece que Windows 7 solo elegirá un PID aleatorio sin usar cada vez que inicie un proceso, por lo que podría haber un PID reutilizado durante la ejecución de las ventanas sin reiniciar.


Escribí un script simple de PowerShell (requiere v2 o más reciente, vea este historial de edición de respuestas para una versión de C #) para probarlo con seguridad

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

Ejecutar el programa 10 veces siempre tomaba entre 134y se 147lanza un bloc de notas para que se reutilice el mismo PID (¿Por qué es este número tan pequeño? ¡ Problema de cumpleaños del gadget GO-GO !)

Scott Chamberlain
fuente
55
Windows NT lo hace aún más rápido porque los PID siempre son múltiplos de cuatro .
Grawity
Gracias Scott ¿Existe una utilidad / script de shell que pueda rastrear todos los números PID de los procesos y registrarlos en un archivo con el nombre del proceso que también se les asignó?
isildur
1
Podrías, pero no veo la utilidad. ¿Solo desea realizar un seguimiento de todos los procesos iniciados o realmente le importa el PID?
Scott Chamberlain
En este punto, solo quiero saber qué proceso (s) se está ejecutando tantas veces que empujó los números de identificación del proceso al rango de 500k +. Quizás un proceso está generando procesos incluso. Este es solo un escritorio básico de win 7, antivirus y firefox, un juego o dos y no hacemos mucho más al respecto. Gracias por las respuestas
isildur
Así que eliminé una vieja utilidad que indexaba unidades de disco usando archivos por lotes que alguien había escrito hace años y resulta que este fue el culpable de generar números PID tan altos. Ahora la misma máquina ha funcionado durante semanas y el número PID más alto hasta la fecha es 12252.
isildur
1

Ejecuté una prueba durante una hora y en ese momento salieron 302 procesos. De ellos, 70 tenían un PID en común, por lo que diría que el PID se reutiliza con frecuencia.

Data Munger
fuente