Hardware Abstraction Layer e Windows Subsystem in Windows

Hardware Abstraction Layer (HAL) è un modulo in kernel mode che funziona da interfaccia per la piattaforma hardware su cui viene eseguito il sistema operativo nascondendo i dettagli dipendete dal tipo di hardware.

I componenti di Windows e i driver quindi non accedono direttamente all’hardware ma utilizzano le funzioni di HAL.

Diversi HAL sono inclusi con Windows ma solo uno viene scelto in fase di installazione e viene copiato sul disco di sistema con il nome Hal.dll per cui un disco di sistema che funziona su un sistema potrebbe non funzionare su un altro.

Il Windows subsystem è uno dei componenti user mode di Windows che implementa il supporto per l’ambiente del sistema operativo.

Le informazioni relative si trovano nella chiave di registro HKLM\SYSTEM\Current-ControlSet\Control\Session Manager\SubSystems.
In questa chiave si trova il valore Windows che Specifica il file del subsystem Windows che è csrss.exe.
Il Windows subsystem espone una parte dei servizi base del sistema operativo alle applicazioni tramite dll come Kernel32.dll, Advapi32.dll, User32.dll e Gdi32.dll che implementano le funzioni Windows API.
Quando un’applicazione chiama una funzione di una dll del subsystem viene eseguita una delle seguenti operazioni
-La funzione è implementata completamente nell’ambiente user mode nella DLL del subsytem per cui non viene inviato nessun messaggio al Windows subsystem.
-La funzione richiede l’invio di messaggi a Windows executive.
-La funzione richiede che vengano eseguite delle attività dal processo del subsystem.

I componenti principali di Windows subsystem sono i seguenti
-Il processo csrss.exe che contiene il supporto per le finestre console, la creazione e la cancellazione di processi e thread e diverse funzioni.
-Il driver win32k.sys che contiene il window manager e il Graphics Device Interface (GDI) che è una libreria di funzioni grafiche.
-Le dll del subsystem che traducono le funzioni Windows API nelle chiamate ai servizi di sistema in kernel mode.
-Driver delle periferiche video e delle stampanti.