HAL pour Hadware Abstraction Layer, ou en français, Couche d'Abstraction Matérielle. C'est grâce à cette couche que Windows NT est portable sur plusieurs types de machines.
Son rôle est de masquer complètement la partie matérielle au système
d'exploitation lui-même. Tout matériel va être représenté virtuellement au système d'exploitation. Le système d'exploitation va utiliser le matériel via une interface unique, sans se soucier du matériel. C'est à la couche d'abstraction matérielle de traduire les demandes au système physique.
A un type de machine correspond une couche HAL spécifique. Grâce à cette couche, Windows NT peut tourner sur plusieurs types de microprocesseurs : Intel, MIPS, PowerPC, Alpha.
C'est encore la couche HAL qui gère les systèmes multi-processeurs, en
intégrant l'interface SMP (Symmetric Multi Processing). La couche HAL est différente suivant le nombre de processeurs dans le système.
La couche HAL représente chaque processeur comme un processeur virtuel au noyau. Le noyau, on le verra plus tard, dispatchera ses tâches sur ces
différents processeurs. Que ce soient des processeurs Alpha, Intel ou autre, le noyau voit toujours des processeurs virtuels. La couche HAL n'est accessible que par le NT Executive. Pour accéder au matériel, les programmes utilisateurs sont donc obligés de passer par les Native APIs (enfin presque).