¿por qué hay ningún ID de proceso de Windows impares?

Si te gusta juguetear con Windows y aprender sobre la marcha, se habrán dado cuenta de que el proceso de Windows y los ID de hilo son pares y múltiplos de cuatro. ¿Porqué es eso? de hoy superusuario Q & A anuncio con las respuestas a las preguntas de un lector curioso.

Pregunta y respuesta sesión de hoy nos llega por cortesía de superusuario, una subdivisión de Stack Exchange, una agrupación impulsado por la comunidad de Q & A sitios web.

lector de superusuario Peter Hahndorf quiere saber por qué no hay identificadores de proceso de Windows impares

Hay muchas maneras de ver los identificadores de proceso de Windows. El uso de PowerShell

Consigo este resultado

Como se puede ver, todos los identificadores de proceso son con números pares, no sólo eso, son todas múltiplos de cuatro. Usted puede mirar tan duro como usted quiere y usted nunca encontrará un ID de proceso de número impar, por lo menos no en cualquier versión que está basado en Windows NT. ¿Cuál es la razón para esto?

¿Por qué hay ningún ID de proceso de Windows impares?

Superusuario colaborador DavidPostill tiene la respuesta para nosotros

¿Por qué hay ningún ID de proceso de Windows impares?

El mismo código que asigna asas del núcleo también se utiliza para asignar proceso y el hilo IDs. Dado que las manijas del núcleo son un múltiplo de cuatro, por lo que son identificadores de procesos y subprocesos.

¿Por qué los IDs de procesos y subprocesos múltiplos de cuatro?

En los sistemas operativos basados ​​en Windows NT, identificadores de procesos y subprocesos siempre resultan ser un múltiplo de cuatro. ¿Es esto sólo una coincidencia?

Sí, es sólo una coincidencia, y no se debe confiar en ella, ya que no forma parte del contrato de programación. Por ejemplo, Windows 95 proceso y los ID de hilo no eran siempre múltiplos de cuatro. En comparación, la razón de ese núcleo mangos son siempre un múltiplo de cuatro es parte de la especificación y se garantizará en el futuro previsible.

Identificadores de proceso y de rosca son múltiplos de cuatro, como un efecto secundario de la reutilización de código. El mismo código que asigna asas del núcleo también se utiliza para asignar proceso y el hilo IDs. Dado que las manijas del núcleo son múltiplos de cuatro, por lo que son identificadores de procesos y subprocesos. Este es un detalle de implementación, así que no escribe código que se basa en él. Sólo estoy diciendo que para satisfacer su curiosidad.

Fuente: ¿Por qué los IDs de procesos y subprocesos múltiplos de cuatro?

¿Por qué son las manetas del núcleo siempre un múltiplo de cuatro?

Algo que no es muy conocido es que la parte inferior dos trozos de asas del núcleo son siempre cero, es decir, su valor numérico es siempre un múltiplo de cuatro. Tenga en cuenta que esto sólo se aplica al núcleo mangos; no se aplica a la pseudo-asas o para cualquier otro tipo de mango (manijas USUARIO, GDI trata, manijas multimedia, etc.). manijas del núcleo son cosas que pueden pasar a la función CloseHandle.

Eso, al menos, el bit inferior de las manijas del núcleo son siempre cero está implícita en la función GetQueuedCompletionStatus, lo que indica que puede establecer el bit inferior del mango evento para suprimir la notificación de puerto de finalización. Para que esto funcione, el bit inferior debe normalmente ser cero.

Esta información no es útil para la mayoría de los programadores de aplicaciones, que deberían seguir para tratar las manijas como valores opacos. Las personas que estarían interesados ​​en bits de la variable son aquellos que están implementando las bibliotecas de clases de bajo nivel o están terminando los objetos del núcleo dentro de un marco más amplio.

Fuente: ¿Por qué kernel maneja siempre un múltiplo de cuatro?

Otras lecturas

La vieja nueva cosa: Desarrollo práctico largo de la evolución de Windows Raymond Chen (Diseño Principal Software Engineer en Microsoft)

Si tiene algo que añadir a la explicación? En off en los comentarios. ¿Quieres leer más respuestas de otros usuarios Stack Exchange conocedores de la tecnología? Echa un vistazo a la rosca discusión completa aquí.

tanques militares británicos están obligados a tener una estación recipiente de ebullición para preparar té u otras bebidas calientes (y calefacción comidas hervir-en-la-bolsa) a bordo.