# Arquitectura de Windows NT

L'arquitectura de Windows NT, una línia de sistemes operatius produïts i venuts per Microsoft, és un disseny en capes que consta de dos components principals, el mode d'usuari i el mode del nucli. És un sistema operatiu multitasca preventiu i reentrant, que ha estat dissenyat per funcionar amb ordinadors basats en uniprocessador i multiprocessador simètric (SMP). Per processar les sol·licituds d'entrada/sortida (I/O), utilitza E/S impulsada per paquets, que utilitza paquets de sol·licitud d'E/S (IRP) i E/S asíncrona. A partir de Windows XP, Microsoft va començar a fer disponibles versions de Windows de 64 bits; abans d'això, només hi havia versions de 32 bits d'aquests sistemes operatius.
Els programes i subsistemes en mode usuari estan limitats pel que fa als recursos del sistema als quals tenen accés, mentre que el mode nucli té accés sense restriccions a la memòria del sistema i als dispositius externs. El mode nucli a Windows NT té accés complet al maquinari i als recursos del sistema de l'ordinador. El nucli de Windows NT és un nucli híbrid; l'arquitectura inclou un nucli simple, una capa d'abstracció de maquinari (HAL), controladors i una sèrie de serveis (anomenats col·lectivament Executive), que existeixen tots en mode nucli.
El mode d'usuari a Windows NT està format per subsistemes capaços de passar sol·licituds d'E/S als controladors de dispositiu del mode nucli adequats mitjançant el gestor d'E/S. La capa de mode d'usuari de Windows NT està formada pels "subsistemes d'entorn", que executen aplicacions escrites per a molts tipus diferents de sistemes operatius, i el "subsistema integral", que opera funcions específiques del sistema en nom dels subsistemes d'entorn. El mode del nucli impedeix que els serveis i les aplicacions del mode d'usuari accedeixin a àrees crítiques del sistema operatiu a les quals no haurien de tenir accés.
Les interfícies executives, amb tots els subsistemes de mode d'usuari, s'ocupen de l'E/S, la gestió d'objectes, la seguretat i la gestió de processos. El nucli es troba entre la capa d'abstracció de maquinari i l'executiu per proporcionar sincronització multiprocessador, programació i enviament d'interrupcions i fils, i gestió de trampes i enviament d'excepcions. El nucli també és responsable d'inicialitzar els controladors del dispositiu a l'arrencada. Els controladors en mode nucli existeixen en tres nivells: controladors de més alt nivell, controladors intermedis i controladors de baix nivell. El model de controlador de Windows (WDM) existeix a la capa intermèdia i es va dissenyar principalment per ser binari i compatible amb les fonts entre Windows 98 i Windows 2000. Els controladors de nivell més baix són controladors de dispositiu Windows NT heretats que controlen un dispositiu directament o poden ser un bus de maquinari Plug and Play (PnP).

## Mode d'usuari

El mode d'usuari està format per diversos processos i DLL definits pel sistema.
La interfície entre les aplicacions en mode d'usuari i les funcions del nucli del sistema operatiu s'anomena "subsistema d'entorn". Windows NT pot tenir més d'un d'aquests, cadascun implementant un conjunt d'API diferent. Aquest mecanisme va ser dissenyat per donar suport a aplicacions escrites per a molts tipus diferents de sistemes operatius. Cap dels subsistemes d'entorn pot accedir directament al maquinari; l'accés a les funcions de maquinari es fa cridant a rutines en mode nucli.
Hi ha tres subsistemes d'entorn principals: el subsistema Win32, un subsistema OS/2 i un subsistema POSIX.

### Subsistema d'entorn Win32

El subsistema d'entorn Win32 pot executar aplicacions de Windows de 32 bits. Conté la consola, així com el suport de la finestra de text, l'apagada i la gestió d'errors durs per a tots els altres subsistemes d'entorn. També admet màquines DOS virtuals (VDM), que permeten executar aplicacions MS-DOS i Windows de 16 bits (Win16) a Windows NT. Hi ha un MS-DOS VDM específic que s'executa en el seu propi espai d'adreces i que emula un Intel 80486 amb MS-DOS 5.0. Els programes Win16, però, s'executen en un VDM Win16. Cada programa, per defecte, s'executa en el mateix procés, utilitzant així el mateix espai d'adreces, i el Win16 VDM dona a cada programa el seu propi fil on executar-se. Tanmateix, Windows NT permet als usuaris executar un programa Win16 en un VDM Win16 independent, la qual cosa permet que el programa sigui multitasques preventivament, ja que Windows NT anticiparà tot el procés VDM, que només conté una aplicació en execució. El procés del subsistema de l'entorn Win32 (csrss.exe) també inclou la funcionalitat de gestió de finestres, de vegades anomenada " gestor de finestres ". Gestiona els esdeveniments d'entrada (com ara des del teclat i el ratolí), després passa missatges a les aplicacions que necessiten rebre aquesta entrada. Cada aplicació s'encarrega de dibuixar o actualitzar les seves pròpies finestres i menús, en resposta a aquests missatges.

## Mode de nucli

El mode del nucli de Windows NT té accés complet al maquinari i als recursos del sistema de l'ordinador i executa codi en una àrea de memòria protegida. Controla l'accés a la programació, la priorització de fils, la gestió de la memòria i la interacció amb el maquinari. El mode del nucli impedeix que els serveis i les aplicacions del mode d'usuari accedeixin a àrees crítiques del sistema operatiu a les quals no haurien de tenir accés; Els processos del mode d'usuari han de demanar al mode del nucli que realitzi aquestes operacions en nom seu.
Tot i que l'arquitectura x86 admet quatre nivells de privilegis diferents (numerats del 0 al 3), només s'utilitzen els dos nivells de privilegis extrems. Els programes en mode d'usuari s'executen amb CPL 3 i el nucli s'executa amb CPL 0. Aquests dos nivells sovint s'anomenen "anell 3" i "anell 0", respectivament. Aquesta decisió de disseny s'havia fet per aconseguir la portabilitat del codi a plataformes RISC que només admeten dos nivells de privilegis, tot i que això trenca la compatibilitat amb les aplicacions OS/2 que contenen segments de privilegis d'E/S que intenten accedir directament al maquinari.
El codi que s'executa en mode nucli inclou: l'executiu, que està format per molts mòduls que fan tasques específiques; el nucli, que proporciona serveis de baix nivell utilitzats per l'Executiu; la capa d'abstracció de maquinari (HAL); i controladors del nucli.

## Referències

* ↑ Finnel, 2000, Chapter 1: Introduction to Microsoft Windows 2000, pp. 7–18.
* ↑ «Appendix D - Running Nonnative Applications in Windows 2000 Professional» (en anglès). Microsoft Windows 2000 Professional Resource Kit. Microsoft, 11-09-2008.
* ↑ Roman, Steven. «Windows Architecture». A: Win32 API Programming with Visual Basic (en anglès). O'Reilly and Associates, Inc., 1999. ISBN 1-56592-631-5.
* ↑ «MS Windows NT Kernel-mode User and GDI White Paper» (en anglès). Windows NT Workstation documentation. Microsoft TechNet. Arxivat de l'original el 21 febrer 2008. [Consulta: 9 desembre 2007].
* ↑ «Windows NT Workstation Resource Kit Chapter 28 - OS/2 Compatibility» (en anglès). Microsoft. Arxivat de l'original el 24 octubre 2012.
* ↑ Roman, Steven. «Windows Architecture». A: Win32 API Programming with Visual Basic (en anglès). O'Reilly and Associates, Inc., 1999. ISBN 1-56592-631-5.
* ↑ Mark E. Russinovich. Windows Internals, Fifth Edition (en anglès). Microsoft Press, p. 228–255.