
La arquitectura de Windows NT , una línea de sistemas operativos producidos y comercializados por Microsoft , es un diseño en capas que consta de dos componentes principales: el modo de usuario y el modo kernel . Es un sistema operativo multitarea reentrante y con prioridad , diseñado para funcionar con ordenadores basados en uniprocesadores y multiprocesadores simétricos (SMP). Para procesar las solicitudes de entrada/salida (E/S), utiliza E/S basada en paquetes, que emplea paquetes de solicitud de E/S (IRP) y E/S asíncrona . A partir de Windows XP , Microsoft comenzó a ofrecer versiones de 64 bits de Windows; antes de esto, solo existían versiones de 32 bits de estos sistemas operativos.
Los programas y subsistemas en modo usuario tienen acceso limitado a los recursos del sistema, mientras que el modo kernel tiene acceso ilimitado a la memoria del sistema y a los dispositivos externos. El modo kernel en Windows NT tiene acceso completo al hardware y a los recursos del sistema del equipo. El kernel de Windows NT es un kernel híbrido ; su arquitectura comprende un kernel simple , una capa de abstracción de hardware (HAL), controladores y una serie de servicios (denominados colectivamente Executive ), que existen en modo kernel. [ 1 ]
El modo de usuario en Windows NT se compone de subsistemas capaces de transferir solicitudes de E/S a los controladores de dispositivos del modo kernel correspondientes mediante el administrador de E/S. La capa de modo de usuario de Windows NT se compone de los subsistemas de entorno, que ejecutan aplicaciones escritas para diversos sistemas operativos, y el subsistema integral, que gestiona funciones específicas del sistema en nombre de los subsistemas de entorno. El modo kernel impide que los servicios y las aplicaciones del modo de usuario accedan a áreas críticas del sistema operativo a las que no deberían tener acceso.
Las interfaces del Ejecutivo, con todos los subsistemas del modo de usuario, se encargan de la E/S, la gestión de objetos, la seguridad y la gestión de procesos. El núcleo se sitúa entre la capa de abstracción de hardware y el Ejecutivo para proporcionar sincronización multiprocesador , planificación y despacho de hilos e interrupciones , y manejo de trampas y excepciones. El núcleo también es responsable de inicializar los controladores de dispositivos al arrancar. Los controladores del modo núcleo existen en tres niveles: controladores de nivel superior, controladores intermedios y controladores de nivel inferior. El Modelo de Controladores de Windows (WDM) existe en la capa intermedia y fue diseñado principalmente para ser compatible a nivel binario y de código fuente entre Windows 98 y Windows 2000. Los controladores de nivel más bajo son controladores de dispositivos heredados de Windows NT que controlan un dispositivo directamente o pueden ser un bus de hardware plug and play (PnP).
Modo de usuario
El modo de usuario se compone de varios procesos y DLL definidos por el sistema .
La interfaz entre las aplicaciones en modo usuario y las funciones del núcleo del sistema operativo se denomina "subsistema de entorno". Windows NT puede tener más de uno, cada uno implementando un conjunto de API diferente. Este mecanismo se diseñó para admitir aplicaciones escritas para diversos sistemas operativos. Ninguno de los subsistemas de entorno puede acceder directamente al hardware; el acceso a las funciones de hardware se realiza mediante llamadas a rutinas del modo núcleo.
Existen tres subsistemas de entorno principales: el subsistema Win32 , un subsistema OS/2 y un subsistema POSIX . [ 2 ]
subsistema de entorno Win32

El subsistema de entorno Win32 puede ejecutar aplicaciones de Windows de 32 bits. Contiene la consola, así como la compatibilidad con ventanas de texto, el apagado y el manejo de errores graves para todos los demás subsistemas de entorno. También admite máquinas virtuales DOS (VDM), que permiten ejecutar aplicaciones de MS-DOS y Windows de 16 bits ( Win16 ) en Windows NT. Existe una VDM específica de MS-DOS que se ejecuta en su propio espacio de direcciones y que emula un Intel 80486 con MS-DOS 5.0. Los programas Win16, sin embargo, se ejecutan en una VDM Win16. Cada programa, por defecto, se ejecuta en el mismo proceso, utilizando así el mismo espacio de direcciones, y la VDM Win16 asigna a cada programa su propio hilo de ejecución. No obstante, Windows NT permite a los usuarios ejecutar un programa Win16 en una VDM Win16 independiente, lo que permite la multitarea preventiva del programa, ya que Windows NT interrumpirá todo el proceso de la VDM, que solo contiene una aplicación en ejecución. El proceso del subsistema de entorno Win32 csrss.exetambién incluye la funcionalidad de administración de ventanas, a veces denominada " administrador de ventanas ". Este gestiona los eventos de entrada (como los del teclado y el ratón) y, a continuación, transmite mensajes a las aplicaciones que necesitan recibirlos. Cada aplicación es responsable de dibujar o actualizar sus propias ventanas y menús en respuesta a estos mensajes.
subsistema de entorno OS/2
El subsistema de entorno OS/2 admite aplicaciones OS/2 basadas en caracteres de 16 bits y emula OS/2 1.x, pero no aplicaciones OS/2 gráficas o de 32 bits como las utilizadas con OS/2 2.x o posterior, solo en máquinas x86. [ 3 ] Para ejecutar programas gráficos de OS/2 1.x, debe instalarse el Subsistema Complementario de Windows NT para Presentation Manager. [ 3 ] La última versión de Windows NT que tuvo un subsistema OS/2 fue Windows 2000; se ha descontinuado a partir de Windows XP. [ 4 ] [ 5 ]
subsistema de entorno POSIX
El subsistema de entorno POSIX admite aplicaciones escritas estrictamente según el estándar POSIX.1 o los estándares ISO / IEC relacionados . Este subsistema fue reemplazado por Interix , que forma parte de los Servicios de Windows para UNIX . [ 4 ] Este, a su vez, fue reemplazado por el Subsistema de Windows para Linux .
Subsistema de seguridad
El subsistema de seguridad "administra funciones específicas del sistema operativo en nombre del sistema de entorno y consta de un proceso del sistema de seguridad". Este proceso del sistema de seguridad es la Autoridad de Seguridad Local (LSA), que administra tokens de seguridad, otorga o deniega el acceso "a las cuentas de usuario en función de los permisos de recursos, gestiona las solicitudes de inicio de sesión e inicia la autenticación de inicio de sesión, y determina qué recursos del sistema deben ser auditados" por Windows NT. [ 6 ] También se encarga de Active Directory . El servicio de estación de trabajo implementa el redireccionador de red , que es el lado del cliente del uso compartido de archivos e impresoras de Windows; implementa las solicitudes locales a archivos e impresoras remotos "redirigiéndolos" a los servidores apropiados en la red. [ 7 ] Por el contrario, el servicio de servidor permite que otros equipos de la red accedan a los recursos compartidos de archivos e impresoras compartidas que ofrece el sistema local. [ 8 ]
Modo kernel
El modo kernel de Windows NT tiene acceso completo al hardware y a los recursos del sistema, y ejecuta código en un área de memoria protegida. [ 9 ] Controla el acceso a la planificación, la priorización de subprocesos, la administración de memoria y la interacción con el hardware. El modo kernel impide que los servicios y aplicaciones del modo usuario accedan a áreas críticas del sistema operativo a las que no deberían tener acceso; los procesos del modo usuario deben solicitar al modo kernel que realice dichas operaciones en su nombre.
Si bien la arquitectura x86 admite cuatro niveles de privilegio diferentes (numerados del 0 al 3), solo se utilizan los dos niveles extremos. Los programas en modo usuario se ejecutan con CPL 3, y el núcleo con CPL 0. Estos dos niveles se conocen comúnmente como "anillo 3" y "anillo 0", respectivamente. Esta decisión de diseño se tomó para lograr la portabilidad del código a plataformas RISC que solo admiten dos niveles de privilegio, [ 10 ] aunque esto rompe la compatibilidad con las aplicaciones OS/2 que contienen segmentos de privilegio de E/S que intentan acceder directamente al hardware. [ 3 ]
El código que se ejecuta en modo kernel incluye: el ejecutivo, que a su vez está compuesto por muchos módulos que realizan tareas específicas; el kernel , que proporciona servicios de bajo nivel utilizados por el ejecutivo; la capa de abstracción de hardware (HAL); y los controladores del kernel . [ 9 ] [ 11 ]
Ejecutivo
Los servicios ejecutivos de Windows conforman la parte de bajo nivel del modo kernel y se encuentran en el archivo ntoskrnl.exe. [ 9 ] Se encarga de E/S, administración de objetos, seguridad y administración de procesos. Estos se dividen en varios subsistemas , entre los que se encuentran el Administrador de caché , el Administrador de configuración , el Administrador de E/S , la llamada a procedimiento local (LPC) , el Administrador de memoria , el Administrador de objetos , la estructura de procesos y el Monitor de referencia de seguridad (SRM) . Agrupados, los componentes pueden denominarse servicios ejecutivos (nombre interno Ex ). Los servicios del sistema (nombre interno Nt ), es decir, las llamadas al sistema , también se implementan en este nivel, [ 12 ] excepto muy pocos que llaman directamente a la capa del kernel para un mejor rendimiento.
El término "servicio" en este contexto generalmente se refiere a una rutina invocable o a un conjunto de rutinas invocables. [ 12 ] Esto es distinto del concepto de "proceso de servicio", que es un componente en modo usuario algo análogo a un demonio en sistemas operativos tipo Unix . [ 13 ]

- Administrador de objetos
- El Administrador de objetos (nombre interno Ob ) es un subsistema ejecutivo por el que deben pasar todos los demás subsistemas ejecutivos, especialmente las llamadas al sistema, para acceder a los recursos de Windows NT, lo que lo convierte esencialmente en un servicio de infraestructura de administración de recursos. [ 14 ] El administrador de objetos se utiliza para reducir la duplicación de la funcionalidad de administración de recursos de objetos en otros subsistemas ejecutivos, lo que podría provocar errores y dificultar el desarrollo de Windows NT. [ 15 ] Para el administrador de objetos, cada recurso es un objeto, ya sea un recurso físico (como un sistema de archivos o un periférico) o un recurso lógico (como un archivo). Cada objeto tiene una estructura o un tipo de objeto que el administrador de objetos debe conocer.
- La creación de objetos es un proceso de dos fases: creación e inserción . La creación implica la asignación de un objeto vacío y la reserva de los recursos necesarios para el gestor de objetos, como un nombre (opcional) en el espacio de nombres. Si la creación se realizó correctamente, el subsistema responsable rellena el objeto vacío. [ 16 ] Finalmente, si el subsistema considera que la inicialización fue exitosa, le indica al gestor de objetos que inserte el objeto, lo que lo hace accesible mediante su nombre (opcional) o una cookie llamada identificador . [ 17 ] A partir de ese momento, el ciclo de vida del objeto es gestionado por el gestor de objetos, y el subsistema se encarga de mantenerlo en funcionamiento hasta que el gestor de objetos le indique que lo elimine. [ 18 ]
- Los identificadores son identificadores que representan una referencia a un recurso del kernel a través de un valor opaco. [ 19 ] De manera similar, abrir un objeto a través de su nombre está sujeto a controles de seguridad, pero actuar a través de un identificador existente y abierto solo se limita al nivel de acceso solicitado cuando se abrió o creó el objeto.
- Los tipos de objeto definen los procedimientos del objeto y cualquier dato específico del mismo. De esta forma, el administrador de objetos permite que Windows NT sea un sistema operativo orientado a objetos , ya que los tipos de objeto pueden considerarse clases polimórficas que definen objetos . Sin embargo, la mayoría de los subsistemas, con la notable excepción del Administrador de E/S, utilizan la implementación predeterminada para todos los procedimientos de tipo de objeto.
- Cada instancia de un objeto que se crea almacena su nombre, los parámetros que se pasan a la función de creación del objeto, los atributos de seguridad y un puntero a su tipo de objeto. El objeto también contiene un procedimiento de cierre de objeto y un contador de referencias para indicar al administrador de objetos cuántos otros objetos en el sistema hacen referencia a ese objeto y, por lo tanto, determina si el objeto puede destruirse cuando se le envía una solicitud de cierre. [ 20 ] Cada objeto con nombre existe en un espacio de nombres de objetos jerárquico .
- Controlador de caché
- Se coordina estrechamente con el Administrador de memoria, el Administrador de E/S y los controladores de E/S para proporcionar una caché común para las operaciones de E/S de archivos regulares. El Administrador de caché de Windows opera sobre bloques de archivos (en lugar de bloques de dispositivos), para un funcionamiento coherente entre archivos locales y remotos, y garantiza cierto grado de coherencia con las vistas de archivos asignadas a memoria , ya que los bloques de caché son un caso especial de vistas asignadas a memoria y los fallos de caché son un caso especial de fallos de página.
- Administrador de configuración
- Implementa las llamadas al sistema necesarias para el Registro de Windows .
- Administrador de E/S
- Permite que los dispositivos se comuniquen con subsistemas en modo usuario. Traduce los comandos de lectura y escritura en modo usuario a IRP de lectura o escritura , que luego pasa a los controladores de dispositivo. Acepta solicitudes de E/S del sistema de archivos y las traduce a llamadas específicas del dispositivo, e incorpora controladores de dispositivo de bajo nivel que manipulan directamente el hardware para leer la entrada o escribir la salida. También incluye un administrador de caché para mejorar el rendimiento del disco mediante el almacenamiento en caché de las solicitudes de lectura y escritura en segundo plano.
- Llamada a procedimiento local (LPC)
- Proporciona puertos de comunicación entre procesos con semántica de conexión. Los puertos LPC son utilizados por los subsistemas en modo usuario para comunicarse con sus clientes, por los subsistemas ejecutivos para comunicarse con los subsistemas en modo usuario y como base para el transporte local de Microsoft RPC .
- Administrador de memoria
- Gestiona la memoria virtual , controlando la protección de la memoria y la paginación de memoria dentro y fuera de la memoria física hacia el almacenamiento secundario, e implementa un asignador de memoria física de propósito general. También implementa un analizador de ejecutables PE que permite asignar o desasignar un ejecutable en un único paso atómico.
- A partir de Windows NT Server 4.0, Terminal Server Edition, el administrador de memoria implementa un espacio de sesión , un rango de memoria en modo kernel que está sujeto a cambios de contexto al igual que la memoria en modo usuario. Esto permite que varias instancias del subsistema Win32 en modo kernel y los controladores GDI se ejecuten simultáneamente, a pesar de las deficiencias de su diseño inicial. Cada espacio de sesión es compartido por varios procesos, denominados colectivamente "sesión".
- Para garantizar cierto grado de aislamiento entre sesiones sin introducir un nuevo tipo de objeto, la asociación entre procesos y sesiones la gestiona el Monitor de Referencia de Seguridad, como un atributo de un sujeto de seguridad (token), y solo se puede modificar al poseer privilegios especiales.
- La naturaleza relativamente simple y ad hoc de las sesiones se debe a que no formaban parte del diseño inicial y tuvieron que ser desarrolladas, con una mínima interrupción de la línea principal, por un tercero ( Citrix Systems ) como requisito previo para su producto de servidor de terminales para Windows NT, llamado WinFrame . Sin embargo, a partir de Windows Vista, las sesiones finalmente se convirtieron en un aspecto propiamente dicho de la arquitectura de Windows. Dejaron de ser una construcción de administrador de memoria que se infiltraba en el modo de usuario indirectamente a través de Win32 y se expandieron hasta convertirse en una abstracción generalizada que afectaba a la mayoría de los subsistemas ejecutivos. De hecho, el uso habitual de Windows Vista siempre resulta en un entorno de múltiples sesiones. [ 21 ]
- Estructura del proceso
- Gestiona la creación y terminación de procesos e hilos, e implementa el concepto de Trabajo , un grupo de procesos que pueden terminarse en su totalidad o estar sujetos a restricciones compartidas (como el máximo total de memoria asignada o el tiempo de CPU). Los objetos Trabajo se introdujeron en Windows 2000 .
- Gerente de PnP
- Gestiona la función Plug and Play y admite la detección e instalación de dispositivos al arrancar el sistema. También se encarga de detener e iniciar dispositivos bajo demanda; esto puede ocurrir cuando un bus (como USB o IEEE 1394 FireWire ) incorpora un nuevo dispositivo y necesita que se cargue un controlador para admitirlo. Su mayor parte se implementa en modo usuario, en el Servicio Plug and Play , que gestiona las tareas, a menudo complejas, de instalar los controladores adecuados, notificar a los servicios y aplicaciones la llegada de nuevos dispositivos y mostrar la interfaz gráfica de usuario.
- Administrador de energía
- Gestiona los eventos de energía (apagado, espera, hibernación, etc.) y notifica a los controladores afectados con IRP especiales ( Power IRP ).
- Monitor de referencia de seguridad (SRM)
- La autoridad principal para hacer cumplir las reglas de seguridad del subsistema integral de seguridad. [ 22 ] Determina si se puede acceder a un objeto o recurso, mediante el uso de listas de control de acceso (ACL), que a su vez están compuestas por entradas de control de acceso (ACE). Las ACE contienen un identificador de seguridad (SID) y una lista de operaciones que la ACE otorga a un grupo selecto de fideicomisarios —una cuenta de usuario, una cuenta de grupo o una sesión de inicio de sesión [ 23 ] — permiso (permitir, denegar o auditar) para ese recurso. [ 24 ] [ 25 ]
- GDI
- La Interfaz de Dispositivo Gráfico (GDI) se encarga de tareas como dibujar líneas y curvas, renderizar fuentes y gestionar paletas. La serie de versiones de Windows NT 3.x había ubicado el componente GDI en el subsistema de tiempo de ejecución cliente/servidor en modo usuario , pero se trasladó al modo kernel con Windows NT 4.0 para mejorar el rendimiento gráfico. [ 26 ]
Núcleo
El núcleo se sitúa entre la capa de abstracción de hardware (HAL) y el ejecutivo, y proporciona sincronización multiprocesador, planificación y distribución de hilos e interrupciones, así como gestión de trampas y excepciones. También se encarga de inicializar los controladores de dispositivos durante el arranque, necesarios para que el sistema operativo se ponga en marcha. Es decir, el núcleo realiza prácticamente todas las tareas de un micronúcleo tradicional . La estricta distinción entre ejecutivo y núcleo es el vestigio más destacado del diseño original del micronúcleo, y la documentación histórica de diseño se refiere sistemáticamente al componente del núcleo como «el micronúcleo».
El núcleo a menudo interactúa con el gestor de procesos. [ 27 ] El nivel de abstracción es tal que el núcleo nunca llama al gestor de procesos, solo al revés (salvo en un puñado de casos excepcionales, pero nunca hasta el punto de una dependencia funcional).
Diseño de núcleo híbrido
El diseño de Windows NT incluye muchos de los mismos objetivos que Mach , el sistema de microkernel arquetípico, siendo uno de los más importantes su estructura como una colección de módulos que se comunican a través de interfaces bien conocidas, con un pequeño microkernel limitado a funciones básicas como el manejo de interrupciones de primer nivel, la planificación de subprocesos y las primitivas de sincronización. Esto permite la posibilidad de usar llamadas a procedimientos directos o comunicación entre procesos (IPC) para comunicarse entre módulos, y por lo tanto, la posible ubicación de módulos en diferentes espacios de direcciones (por ejemplo, en el espacio del kernel o en los procesos del servidor). Otros objetivos de diseño compartidos con Mach incluían la compatibilidad con diversas arquitecturas, un kernel con abstracciones lo suficientemente generales como para permitir la implementación de múltiples personalidades de sistemas operativos sobre él y una organización orientada a objetos. [ 10 ] [ 28 ]
La personalidad principal del sistema operativo en Windows es la API de Windows , que siempre está presente. El subsistema de emulación que implementa la personalidad de Windows se llama Subsistema de tiempo de ejecución cliente/servidor ( csrss.exe). En versiones de NT anteriores a la 4.0, este proceso de subsistema también contenía el administrador de ventanas, la interfaz de dispositivo gráfico y los controladores de dispositivo gráfico. Sin embargo, por razones de rendimiento, en la versión 4.0 y posteriores, estos módulos (que a menudo se implementan en modo de usuario incluso en sistemas monolíticos, especialmente aquellos diseñados sin soporte gráfico interno) se ejecutan como un subsistema en modo kernel. [ 10 ]
Las aplicaciones que se ejecutan en NT están escritas para una de las personalidades del sistema operativo (normalmente la API de Windows), y no para la API nativa de NT, cuya documentación no está disponible públicamente (con la excepción de las rutinas utilizadas en el desarrollo de controladores de dispositivos). Una personalidad del sistema operativo se implementa mediante un conjunto de DLL en modo usuario (véase Biblioteca de vínculos dinámicos ), que se asignan a los espacios de direcciones de los procesos de la aplicación según sea necesario, junto con un proceso de servidor del subsistema de emulación (como se describió anteriormente). Las aplicaciones acceden a los servicios del sistema llamando a las DLL de la personalidad del sistema operativo asignadas a sus espacios de direcciones, que a su vez llaman a la biblioteca de tiempo de ejecución de NT ( ntdll.dll), también asignada al espacio de direcciones del proceso. La biblioteca de tiempo de ejecución de NT atiende estas solicitudes entrando en modo kernel para llamar a rutinas ejecutivas en modo kernel o realizar llamadas a procedimientos locales (LPC) a los procesos de servidor del subsistema en modo usuario correspondientes, que a su vez utilizan la API de NT para comunicarse con los procesos de la aplicación, los subsistemas en modo kernel y entre sí. [ 29 ]
Controladores en modo kernel
Windows NT utiliza controladores de dispositivos en modo kernel para interactuar con dispositivos de hardware . Cada controlador tiene rutinas de sistema bien definidas y rutinas internas que exporta al resto del sistema operativo. El código en modo usuario ve todos los dispositivos como objetos de archivo en el administrador de E/S, aunque para el propio administrador de E/S los dispositivos se ven como objetos de dispositivo, que define como objetos de archivo, dispositivo o controlador. Los controladores en modo kernel existen en tres niveles: controladores de nivel superior, controladores intermedios y controladores de nivel inferior. Los controladores de nivel superior, como los controladores de sistema de archivos para FAT y NTFS , dependen de los controladores intermedios. Los controladores intermedios consisten en controladores de función (o controlador principal para un dispositivo) que opcionalmente se encuentran entre controladores de filtro de nivel inferior y superior. El controlador de función depende entonces de un controlador de bus (o un controlador que da servicio a un controlador de bus , adaptador o puente), que puede tener un controlador de filtro de bus opcional que se sitúa entre sí y el controlador de función. Los controladores intermedios dependen de los controladores de nivel inferior para funcionar. El Modelo de Controlador de Windows (WDM) existe en la capa intermedia. Los controladores de nivel más bajo son controladores de dispositivos heredados de Windows NT que controlan un dispositivo directamente, o bien pueden ser un bus de hardware Plug and Play (PnP). Estos controladores de nivel inferior controlan el hardware directamente y no dependen de ningún otro controlador.
capa de abstracción de hardware

La capa de abstracción de hardware (HAL) de Windows NT es una capa que se interpone entre el hardware físico del equipo y el resto del sistema operativo. Su objetivo es ocultar las diferencias de hardware y proporcionar una plataforma consistente sobre la que se ejecuta el núcleo. La HAL incluye código específico del hardware que controla las interfaces de entrada/salida, los controladores de interrupciones y los procesadores múltiples.
Sin embargo, a pesar de su propósito y lugar designado dentro de la arquitectura, la capa HAL no se sitúa completamente por debajo del núcleo, como el núcleo se sitúa por debajo del Ejecutivo: todas las implementaciones conocidas de HAL dependen en cierta medida del núcleo, o incluso del Ejecutivo. En la práctica, esto significa que las variantes del núcleo y de la capa HAL vienen en conjuntos coincidentes diseñados específicamente para funcionar conjuntamente.
En particular, la abstracción de hardware no implica la abstracción del conjunto de instrucciones, que generalmente se engloba dentro del concepto más amplio de portabilidad . La abstracción del conjunto de instrucciones, cuando es necesaria (por ejemplo, para gestionar las diversas revisiones del conjunto de instrucciones x86 o para emular un coprocesador matemático faltante), la realiza el núcleo o mediante virtualización de hardware .
El HAL se implementa en hal.dll. [ 30 ] El HAL implementa una serie de funciones que se implementan de diferentes maneras en diferentes plataformas de hardware, lo que en este contexto se refiere principalmente al chipset . Otros componentes del sistema operativo pueden entonces llamar a estas funciones de la misma manera en todas las plataformas, sin tener en cuenta la implementación real.
Por ejemplo, la respuesta a una interrupción es muy diferente en una máquina con un controlador de interrupciones programable avanzado (APIC) que en una que no lo tenga. La capa de abstracción de hardware (HAL) proporciona una única función para este propósito que funciona con todo tipo de interrupciones de diversos conjuntos de chips, de modo que los demás componentes no tienen que preocuparse por las diferencias.
El HAL se carga en el espacio de direcciones del kernel y se ejecuta en modo kernel, por lo que las rutinas del HAL no pueden ser llamadas directamente por las aplicaciones, y ninguna API en modo usuario se corresponde directamente con las rutinas del HAL. En cambio, el HAL proporciona servicios principalmente al ejecutivo y al kernel de Windows y a los controladores de dispositivos en modo kernel. Aunque los controladores para la mayoría del hardware están contenidos en otros archivos, generalmente de tipo .sys , algunos controladores principales se compilan en hal.dll.
Los controladores de dispositivos en modo kernel para dispositivos en buses como PCI y PCI Express llaman directamente a rutinas en la HAL para acceder a los puertos de E/S y los registros de sus dispositivos. Los controladores utilizan rutinas de la HAL porque las distintas plataformas pueden requerir implementaciones diferentes de estas operaciones. La HAL implementa las operaciones de forma adecuada para cada plataforma, de modo que el mismo archivo ejecutable del controlador puede utilizarse en todas las plataformas con la misma arquitectura de CPU , y el archivo fuente del controlador puede ser portable entre todas las arquitecturas.
En los sistemas x86 anteriores a Windows 8 , hay varios archivos HAL diferentes en el medio de instalación. El procedimiento de instalación de Windows determina cuáles son apropiados para la plataforma actual y los copia al disco duro, cambiándoles el nombre hal.dllsi es necesario. Entre los criterios para esta selección se encuentran: la presencia de una BIOS compatible con ACPI , la presencia de un APIC y si hay o no varios procesadores presentes y habilitados. (Los múltiples núcleos de una CPU multinúcleo , e incluso los "procesadores lógicos" implementados por una CPU con hyperthreading , cuentan como "procesadores" para este propósito). En las plataformas x86-64 e Itanium solo hay un HAL posible hal.dllpara cada arquitectura de CPU. En Windows 8 y posteriores, la versión x86 también tiene solo un HAL.
El HAL se fusiona (o enlaza estáticamente) en ntoskrnl.exe[ 31 ] a partir de la versión 2004 de Windows 10, y la DLL solo sirve como un stub para la compatibilidad con versiones anteriores.
Secuencia de arranque
La secuencia de arranque es iniciada por NTLDR en versiones anteriores a Vista y por el Administrador de arranque de Windows en Vista y posteriores. [ 32 ] El cargador de arranque es responsable de acceder al sistema de archivos en la unidad de arranque, iniciar ntoskrnl.exey cargar los controladores de dispositivos de tiempo de arranque en la memoria. Una vez que se han cargado todos los controladores de arranque y del sistema, el núcleo inicia el Subsistema del Administrador de sesiones . El administrador de sesiones inicia servicios cruciales del núcleo y del modo de usuario del subsistema Win32, como el Subsistema de tiempo de ejecución cliente/servidor . La sesión también ejecuta el proceso winlogon , que permite a los usuarios iniciar sesión y usar sus cuentas.
Véase también
Notas y referencias
- Notas
- ↑ Finnel 2000 , Capítulo 1: Introducción a Microsoft Windows 2000, págs. 7–18.
- ↑ "Apéndice D - Ejecución de aplicaciones no nativas en Windows 2000 Professional" . Kit de recursos de Microsoft Windows 2000 Professional . Microsoft . 11 de septiembre de 2008.
- 1 2 3 "Kit de recursos para estaciones de trabajo Windows NT, capítulo 28: compatibilidad con OS/2" . Microsoft. Archivado del original el 24 de octubre de 2012.
- 1 2 "POSIX y OS/2 no son compatibles con Windows XP ni con Windows Server 2003" . Microsoft. Archivado del original el 24 de mayo de 2011.
- ↑ Reiter, Brian (24 de agosto de 2010). "La triste historia del subsistema POSIX de Microsoft" .
- ↑ "Procesos de credenciales en la autenticación de Windows" . Microsoft Learn . Consultado el 29 de diciembre de 2025 .
{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace ) - ↑ "Arquitectura básica de un redireccionador de red" . Microsoft. 15 de diciembre de 2021. Consultado el 30 de julio de 2023 .
- ↑ "Arquitectura de red de Windows NT" . Microsoft. Archivado del original el 18 de noviembre de 2016. Consultado el 18 de noviembre de 2016 .
- 1 2 3 Roman, Steven (1999). "Arquitectura de Windows" . Programación de la API Win32 con Visual Basic . O'Reilly and Associates, Inc. ISBN 1-56592-631-5.
- 1 2 3 "Documento técnico sobre el usuario en modo kernel y GDI de MS Windows NT" . Documentación de Windows NT Workstation . Microsoft TechNet . Archivado del original el 21 de febrero de 2008. Consultado el 9 de diciembre de 2007 .
- ^ Mark E. Russinovich; David A. Salomón; Álex Ionescu. Componentes internos de Windows, quinta edición . Prensa de Microsoft. págs. 228-255 . ISBN 978-0-7356-2530-3.
- 1 2 "Desarrollo de software en Windows" . Microsoft Press . 15 de mayo de 2012. Archivado del original el 13 de abril de 2025.
- ↑ "Descripción general de los servicios" . Microsoft Learn . 7 de octubre de 2009.
- ↑ Russinovich y Solomon 2005 , págs. 124–125.
- ↑ Russinovich 1997 , Introducción.
- ↑ Russinovich 1997 , "Tipos de objetos".
- ↑ Russinovich y Solomon 2005 , págs. 135–140.
- ↑ Russinovich y Solomon 2005 , págs. 141–143.
- ↑ "Identificadores y objetos" . Información del sistema de Windows . Microsoft. 8 de febrero de 2022. Consultado el 30 de julio de 2023 .
- ↑ Russinovich 1997 , "Objetos".
- ↑ "Impacto del aislamiento de la sesión 0 en los servicios y controladores en Windows Vista" . Microsoft. Archivado del original el 27 de junio de 2006.
- ↑ "Almacenamiento de datos de Active Directory" . Microsoft. Archivado del original el 14 de febrero de 2020. Consultado el 22 de septiembre de 2005 .
- ↑ "Definición de fideicomisario" . MSDN. Archivado del original el 8 de febrero de 2005.
- ↑ Siyan 2000 .
- ↑ "1.2 Glosario" . [MS-AZOD]: Descripción general de los protocolos de autorización . 14 de junio de 2022. Entrada de control de acceso (ACE).
- ↑ "Documento técnico sobre el modo kernel de usuario y GDI de MS Windows NT" . Microsoft. El cambio en el modo kernel de Windows NT 4.0 . Consultado el 19 de enero de 2009 .
- ↑ Solomon y Russinovich 2000 , págs. 543–551.
- ↑ Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2005). Conceptos de sistemas operativos; 7.ª edición (PDF) . Hoboken, Nueva Jersey: John Wiley & Sons Inc. ISBN 978-0-471-69466-3.
- ↑ Probert, Dave (2005). "Uso de proyectos basados en API internas de NT para enseñar principios de sistemas operativos" . Microsoft Research/Asia - Pekín. pág. 6. Archivado del original el 17 de marzo de 2007. Consultado el 1 de marzo de 2007 .
- ↑ Blunden, Bill (2009). El arsenal de los rootkits: escape y evasión en los rincones oscuros del sistema . Jones & Bartlett Learning. pág. 101. ISBN 978-1-59822-061-2.
- ↑ @PetrBenes (25 de julio de 2019). "¿Me perdí algo? Rutinas..." ( Tweet ) – vía Twitter .
- ↑ "Secuencia de arranque de Windows Multi-Boot - Multibooters.com" . www.multibooters.com . Consultado el 19 de noviembre de 2020 .
- Referencias
- Finnel, Lynn (2000). Examen MCSE 70-215, Microsoft Windows 2000 Server . Microsoft Press . ISBN 1-57231-903-8.
- Russinovich, Mark (octubre de 1997). "Dentro del Administrador de objetos de NT" . Windows IT Pro. Archivado del original el 3 de marzo de 2007.
- "Almacenamiento de datos de Active Directory" . Microsoft. Archivado del original el 14 de febrero de 2020. Consultado el 9 de mayo de 2005 .
- Solomon, David ; Russinovich, Mark E. (2000). Inside Microsoft Windows 2000 (Tercera ed.). Microsoft Press. ISBN 0-7356-1021-5Archivado del original el 23 de marzo de 2005.
- Russinovich, Mark ; Solomon, David (2005). Microsoft Windows Internals (4.ª ed.). Microsoft Press. ISBN 0-7356-1917-4.
- Schreiber, Sven B. (2001). Secretos no documentados de Windows 2000. Addison-Wesley Longman. ISBN 978-0201721874.
- Siyan, Kanajit S. (2000). Windows 2000 Professional Reference . New Riders. ISBN 0-7357-0952-1.
Lecturas adicionales
- Martignetti, E.; ¿Qué hace que sea una página?: El administrador de memoria virtual de Windows 7 (x64) ( ISBN) 978-1479114290)
- Russinovich, Mark E.; Solomon, David A.; Ionescu, A.; Windows Internals, Part1: Covering Windows Server 2008 R2 and Windows 7 ( ISBN 978-0735648739)
- Russinovich, Mark E.; Solomon, David A.; Ionescu, A.; Windows Internals, Part2: Covering Windows Server 2008 R2 and Windows 7 ( ISBN 978-0735665873)
Enlaces externos
- Sistemas operativos por arquitectura
- Arquitectura de Windows NT
- núcleo de Windows NT