Hardware Abstraction Layer (HAL, Hardware Abstraction Layer ) este un strat de abstractizare implementat în software, situat între stratul hardware fizic și software-ul care rulează pe acest computer. HAL este conceput pentru a ascunde diferențele hardware față de partea principală a nucleului sistemului de operare , astfel încât o mare parte din codul care rulează în modul kernel nu trebuie să fie schimbat atunci când rulează pe sisteme cu hardware diferit.
Pe computerele personale, HAL poate fi considerat în esență un driver de placă de bază , permițând instrucțiunilor din limbaje de programare de nivel înalt să interacționeze cu componente de nivel scăzut, cum ar fi hardware-ul.
În sistemele de operare din familia Windows NT , HAL este o parte integrantă a codului care rulează în modul kernel și se află într-un modul de pornire separat care este încărcat cu nucleul. [1] [2] Acest lucru face posibilă utilizarea aceluiași încărcător de nucleu Windows NT nativ pe un număr de sisteme cu arhitecturi diferite I/O, întrerupere și temporizator.
De exemplu, stațiile de lucru bazate pe SGI Intel x86 nu erau compatibile cu stațiile de lucru compatibile cu IBM PC , dar datorită HAL, Windows NT putea rula pe ele. În mod similar, același nucleu Windows NT este utilizat atât pe sistemele moderne cu un controler de întrerupere APIC , cât și pe sistemele moștenite fără suport APIC.
Windows Vista și versiunile ulterioare ( Windows Server 2008 și versiunile ulterioare pentru servere) detectează automat ce nivel HAL ar trebui utilizat la pornire. [3]
BSD , Mac OS X , Linux , Solaris , CP/M , MS-DOS și unele alte sisteme de operare portabile au, de asemenea, un HAL, chiar dacă nu a fost conceput în mod explicit pentru a îndeplini funcțiile descrise mai sus. Unele sisteme, cum ar fi Linux, au capacitatea de a introduce un strat similar, cum ar fi Adeos, în timpul lucrului. Nucleul sistemului de operare NetBSD este cunoscut pe scară largă pentru că are un strat de abstractizare hardware curat (HAL), care îi permite să fie extrem de portabil . O parte a acestui sistem sunt uvm(9)/ pmap(9), bus_space(9), bus_dma(9)și alte subsisteme. Autobuzele populare care sunt utilizate pe mai multe arhitecturi, cum ar fi ISA , EISA , PCI , PCI-E și altele, sunt de asemenea abstracte, permițând driverelor scrise pentru ele să fie, de asemenea, extrem de portabile, cu modificări minime de cod.
Un exemplu „extrem” de HAL poate fi găsit în arhitecturile System/38și AS/400 . Majoritatea compilatoarelor pentru astfel de sisteme generează cod abstract de mașină . Codul intern licențiat (LIC) traduce acest cod de mașină virtuală în codul intern (nativ) al procesorului pe care rulează și execută codul intern rezultat (cu excepția compilatoarelor care generează ei înșiși LIC; aceste compilatoare nu sunt disponibile în afara IBM ) .
De exemplu, software-ul aplicației și software-ul sistemului de operare deasupra stratului LIC compilat pe arhitectura originală System/38 rulează fără modificare sau recompilare pe cele mai recente sisteme AS/400. Acest lucru se întâmplă în ciuda faptului că hardware-ul de bază a fost schimbat drastic; au fost utilizate cel puțin trei tipuri diferite de microprocesoare . [patru]
HAL are un nivel mai scăzut în limbajele de programare pentru computere decât API , deoarece interacționează direct cu hardware-ul în loc de nucleul sistemului , prin urmare HAL necesită mai puțin timp CPU decât API. Limbile de nivel înalt folosesc adesea HAL-uri și API-uri pentru a interacționa cu componente de nivel inferior.
Sistemele de operare care au un HAL sunt ușor portate pe diferite hardware. Acest lucru este deosebit de important pentru sistemele încorporate , care trebuie să ruleze pe un număr mare de platforme diferite.
ale sistemelor de operare | Aspecte|||||
---|---|---|---|---|---|
| |||||
Tipuri |
| ||||
Nucleu |
| ||||
Managementul proceselor |
| ||||
Gestionarea și adresarea memoriei |
| ||||
Instrumente de încărcare și inițializare | |||||
coajă | |||||
Alte | |||||
Categorie Wikimedia Commons Wikibooks Wiktionar |