A hardveres absztrakciós réteg (HAL, Hardware Abstraction Layer ) egy szoftverben megvalósított absztrakciós réteg , amely a fizikai hardverréteg és a számítógépen futó szoftver között helyezkedik el. A HAL-t úgy tervezték, hogy elrejtse a hardveres különbségeket az operációs rendszer kernelének fő része előtt, így a kernel módban futó kód nagy részét nem kell megváltoztatni, ha az eltérő hardverrel rendelkező rendszereken fut.
A személyi számítógépeken a HAL alapvetően alaplapi illesztőprogramnak tekinthető, amely lehetővé teszi, hogy a magas szintű programozási nyelvekből származó utasítások együttműködjenek az alacsony szintű összetevőkkel, például a hardverrel.
A Windows NT család operációs rendszereiben a HAL a kernel módban futó kód szerves része, és egy külön rendszerindító modulban található, amely a kernellel együtt van betöltve. [1] [2] Ez lehetővé teszi, hogy ugyanazt a natív Windows NT kernelbetöltőt használjuk számos különböző I/O, megszakítási és időzítő architektúrájú rendszeren.
Például az SGI Intel x86 alapú munkaállomások nem voltak kompatibilisek az IBM PC-kompatibilis munkaállomásokkal , de a HAL-nak köszönhetően a Windows NT futhatott rajtuk. Hasonlóképpen, ugyanazt a Windows NT kernelt használják APIC megszakításvezérlővel rendelkező modern rendszereken és APIC támogatás nélküli régebbi rendszereken.
A Windows Vista és újabb ( Windows Server 2008 és újabb kiszolgálókhoz) automatikusan felismeri, hogy a rendszerindításkor melyik HAL-szintet kell használni. [3]
A BSD , a Mac OS X , a Linux , a Solaris , a CP/M , az MS-DOS és néhány más hordozható operációs rendszer is rendelkezik HAL-al, még akkor is, ha azt nem kifejezetten a fent leírt funkciók ellátására tervezték. Egyes rendszerek, például a Linux, képesek hasonló réteget beilleszteni, mint például az Adeos, munka közben. A NetBSD operációs rendszer kernelje széles körben ismert arról, hogy tiszta hardveres absztrakciós réteggel (HAL) rendelkezik, ami lehetővé teszi, hogy nagymértékben hordozható legyen . Ennek a rendszernek a része a uvm(9)/ pmap(9), bus_space(9), bus_dma(9)és más alrendszerek. Az egynél több architektúrán használt népszerű buszok, mint például az ISA , EISA , PCI , PCI-E és mások szintén absztraháltak, így a számukra írt illesztőprogramok is nagymértékben hordozhatóak lehetnek minimális kódmódosítással.
A HAL "extrém" példája a System/38 architektúrákban találhatóés AS/400 . Az ilyen rendszerek legtöbb fordítója absztrakt gépi kódot állít elő . A Licenc belső kód (LIC) lefordítja ezt a virtuális gép kódját a rajta futó processzor belső (natív) kódjává, és végrehajtja az eredményül kapott belső kódot (kivéve azokat a fordítókat, amelyek maguk generálják a LIC-ket; ezek a fordítók az IBM -en kívül nem érhetők el ) .
Például az eredeti System/38 architektúrán lefordított LIC réteg feletti alkalmazásszoftverek és operációs rendszerszoftverek módosítás vagy újrafordítás nélkül futnak a legújabb AS/400 rendszereken. Ez annak ellenére van így, hogy a mögöttes hardver drasztikusan megváltozott; legalább három különböző típusú mikroprocesszort használtak. [négy]
A HAL alacsonyabb szintű a számítógépes programozási nyelvekben, mint az API , mivel a rendszermag helyett közvetlenül a hardverrel kommunikál , így a HAL kevesebb CPU-időt igényel, mint az API. A magas szintű nyelvek gyakran használnak HAL-okat és API-kat az alacsonyabb szintű összetevőkkel való interakcióhoz.
A HAL-al rendelkező operációs rendszerek könnyen portolhatók különféle hardverekre. Ez különösen fontos a beágyazott rendszerek esetében, amelyeknek számos különböző platformon kell futniuk.
Az operációs rendszerek szempontjai | |||||
---|---|---|---|---|---|
| |||||
Típusok |
| ||||
Sejtmag |
| ||||
Folyamatmenedzsment _ |
| ||||
Memóriakezelés és címzés | |||||
Betöltési és inicializálási eszközök | |||||
Héj | |||||
Egyéb | |||||
Kategória Wikimedia Commons Wikikönyvek Wikiszótár |