HAL | |
---|---|
Type | Systemsoftware |
Skrevet i | C [1] |
Operativ system | Linux , FreeBSD , NetBSD , OpenSolaris , Solaris |
Hardware platform | UNIX |
nyeste version | 0.5.14 ( 30. november 2009 ) |
Stat | Udvikling afsluttet |
Licens | GNU General Public License og Academic Free License |
Internet side | freedesktop.org/wiki/Sof… |
HAL (forkortet fra engelsk. Hardwareabstraktionslag ) - ikke længere udviklet daemon , der repræsenterer et lag af hardwareabstraktioner til Linux og nogle andre Unix -lignende systemer.
Projektet blev oprindeligt skabt af Red Hat . HAL-dæmonen får hardwareinformation fra OS-kernen (på Linux f.eks. henter HAL det meste af sin information fra sysfs ), og gør den tilgængelig for klientprogrammer via D-Bus på en brugervenlig måde. Indhentning af information direkte fra kernen er kompleks og kan være fyldt med sikkerhedsproblemer; derfor forenkler tilstedeværelsen af en HAL i høj grad udviklingen af programmer, der skal vide om computerens hardware (f.eks. at brugeren lige har afbrudt en printer eller indsat et USB-flashdrev). Da HAL giver information i samme format på alle platforme, uanset operativsystem og kerneversion, letter den også softwareudvikling på tværs af platforme . Derudover gjorde HAL det muligt at oprette automatiske handlinger (auto-mount diske, auto-konfigurere printere osv.) gennem regler.
HAL er licenseret under GNU General Public License og Academic Free License , og er fri software [2] .
HAL er forældet og forældet . De beslutninger, der blev truffet som grundlag for designet af HAL, viste sig i praksis at være ineffektive, og den eneste udvej var at skabe et nyt delsystem og overføre funktionaliteten. udev [3] blev sådan et system .
I øjeblikket er HAL-understøttelse blevet fjernet fra kernen, og de store distributioner ( Ubuntu [4] , Debian [5] og Fedora [6] ) har fuldført overgangen og bruger Udev .
Den største fordel i det nye udev-undersystem (over HAL) er, at førstnævnte er hændelsesdrevet og har tæt integration med kernen, mens HAL, der er implementeret i brugerområdet som en dæmon , er tvunget til periodisk at polle kernen. Brugen af hændelsesdrevet udev reducerer således belastningen på systemet betydeligt, og dermed strømforbruget. Også beskrivelserne af regler for enheder er lavet i form af simple konfigurationsfiler og er meget enklere og mere forståelige for brugere og udviklere end den XML, der blev brugt tidligere i HAL. Endelig er udev designet ud fra en ren tavle, baseret på tidligere erfaringer, og er fri for forældet eller rodet kode.
I starten blev det meste af HAL-logikken flyttet til udev, og reglerne blev flyttet til et nyt modul kaldet DeviceKit (ikke at forveksle med PolicyKit eller ConsoleKit ).
Udev+DeviceKit-skemaet ændrede sig dog hurtigt noget - udviklerne fandt ud af, at det meste af hardwaren allerede var styret af forskellige softwarekomponenter, og kun regler for diske ( udisks ) [7] og strøm ( upower ) [8] var nødvendige . DeviceKit-projektet blev opdelt i flere mindre dele og er ikke længere brugt eller nævnt [9] .
Således bruger moderne distributioner kun Udev og dets regler (udisks, upower er en del af udev-extras-pakken). Men på grund af kodens inerti kræver mange programmer stadig en forældet HAL (hovedsageligt til at detektere diske), og derfor er distributioner tvunget til at levere en HAL, hvilket effektivt duplikerer logikken (for eksempel Qt3 og Trinity -projektet, der stødte på dette ).
Komponenter | ||
---|---|---|
Biblioteker | ||
Rammer |
| |
Møder |
|