18Aug

¿Por qué no hay identificadores de proceso de Windows impar numerados?

click fraud protection

Si te encanta juguetear con Windows y aprender sobre la marcha, es posible que hayas notado que el proceso de Windows y las ID de subprocesos tienen un número par y son múltiplos de cuatro.¿Porqué es eso? La publicación SuperUser Q & A de hoy tiene las respuestas a las preguntas de un lector curioso.

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

El lector de SuperUser

de Question Peter Hahndorf quiere saber por qué no hay identificadores de proceso de Windows impares:

Hay muchas maneras de ver los ID de proceso en Windows. Utilizando PowerShell:

obtengo este resultado:

Como puede ver, todos los ID de proceso tienen números pares, no solo eso, todos son múltiplos de cuatro. Puede mirar tan duro como lo desee y nunca encontrará una ID de proceso con número impar, al menos no en ninguna versión basada en Windows NT.¿Cuál es la razón para esto?

instagram viewer

¿Por qué no hay identificadores de proceso de Windows impares?

La respuesta

SuperUser contribuidor DavidPostill tiene la respuesta para nosotros:

¿Por qué no hay identificadores de proceso de Windows impares?

El mismo código que asigna los identificadores de kernel también se usa para asignar identificadores de procesos y subprocesos. Como los controladores del kernel son múltiplos de cuatro, también lo son los identificadores de proceso y de subprocesos.

¿Por qué las identificaciones de procesos y subprocesos son múltiplos de cuatro?

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

Sí, es solo una coincidencia, y no debe confiar en ella, ya que no forma parte del contrato de programación. Por ejemplo, el proceso de Windows 95 y las ID de subprocesos no siempre eran múltiplos de cuatro. En comparación, la razón por la que los controladores del kernel son siempre múltiplos de cuatro es parte de la especificación y se garantizará en un futuro previsible.

Las ID de procesos y subprocesos son múltiplos de cuatro como un efecto secundario de la reutilización de códigos. El mismo código que asigna los identificadores de kernel también se usa para asignar identificadores de proceso y de subprocesos. Como los controladores del kernel son múltiplos de cuatro, también lo son los identificadores de proceso y de subprocesos. Este es un detalle de implementación, así que no escriba código que dependa de él. Solo te estoy diciendo que satisfagas tu curiosidad.

Fuente: ¿Por qué las identificaciones de procesos y subprocesos son múltiplos de cuatro?

¿Por qué los controladores del kernel siempre son múltiplos de cuatro?

Algo que no es muy conocido es que los dos bits inferiores de los controladores del kernel son siempre cero;en otras palabras, su valor numérico es siempre un múltiplo de cuatro. Tenga en cuenta que esto se aplica solo a los controles del kernel;no se aplica a pseudoasas ni a ningún otro tipo de identificador( identificadores USER, identificadores GDI, manejadores multimedia, etc.).Los identificadores de kernel son cosas que puedes pasar a la función CloseHandle.

La función GetQueuedCompletionStatus, que indica que puede establecer el bit inferior del identificador de evento para suprimir la notificación del puerto de terminación, implica que al menos la parte inferior de los identificadores del núcleo son siempre cero. Para que esto funcione, el bit inferior normalmente debe ser cero.

Esta información no es útil para la mayoría de los escritores de aplicaciones, que deberían seguir tratando los identificadores como valores opacos. Las personas que estarían interesadas en los bits de etiquetas son aquellos que están implementando bibliotecas de clases de bajo nivel o están envolviendo objetos de núcleo dentro de un marco más grande.

Fuente: ¿Por qué los controladores del núcleo siempre son múltiplos de cuatro?

Lectura adicional

Lo nuevo: Desarrollo práctico a lo largo de la evolución de Windows por Raymond Chen( Ingeniero principal de diseño de software en Microsoft )

¿Tiene algo que agregar a la explicación? Suena apagado en los comentarios.¿Desea leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Mira el hilo de discusión completo aquí.