En Linux enhetsdriver er vesentlig forskjellig fra sine Windows motstykke . Linux-drivere er opprettet utelukkende for å gi et grensesnitt til maskinvaren . De trenger ikke gjøre noen antakelser om hvordan maskinvaren skal brukes . Også , de vanligvis ikke gi noen form for grafiske grensesnitt for maskinvaren. De fleste drivere for Linux støttet maskinvare er en del av Linux-kjernen kilde treet og vedlikeholdes av Linux -fellesskapet. Funksjon
En enhetsdriver funksjon er å gi tilgang til et stykke maskinvare . I Windows er dette gjort gjennom Application Binary Interface ( ABI ) kaller at Microsoft gir til sjåføren utbygger. Enheten driver for Windows er da gitt til brukeren som en binær søknad.
I Linux er det ingen ABI eller Application Programming Interface ( API ) for enhetsdrivere. I stedet gir Linux-kjernen en stabil userspace grensesnitt for applikasjoner. Enhetsdrivere er opprettet som moduler i Linux -kjernen som skjuler detaljene i hvordan enheten fungerer . Disse modulene samsvare med et sett med standardiserte samtaler som er uavhengige av enhetsdrivere selv.
Egenskaper
En av de viktigste funksjonene i Linux- drivere er at de er modulær . De kan være , og er bygget separat fra resten av kjernen. Dette betyr at hver modul (eller driver) kan brukes eller fjernes fra kjernen under kjøring , avhengig av hvilken maskinvare er tilgjengelig.
Drivere er også bygget med skillet mellom mekanisme og politikk. Mekanismen er hva egenskapene er gitt, og policy er hvordan de har mulighet for å bli brukt . Linux enhetsdriver er politikken gratis. Sjåføren får tilgang til maskinvaren, men forteller ikke brukeren hvordan det kan eller bør brukes .
Device Klassene
Linux -kjernen skiller maskinvareenheter i tre hovedtyper : karakter enheter , blokk enheter, og nettverksgrensesnitt . En Character enheten kan aksesseres som en strøm av tegn eller byte , som ligner på en fil . Disse enhetene inkluderer teksten konsollen , tastaturet og serielle porter .
En blokk enhet er en enhet som bare kan nås i blokker av data ( vanligvis en kilobyte eller annen potens av 2 ) og kan være vert for et filsystem , som en harddisk . Linux tillater programmer å lese og skrive for å blokkere enheter som et tegn enhet, slik at de blir forvaltet på en spesiell måte av kjernen.
En nettverksenhet tillater utveksling av data med andre maskiner . Disse enhetene er vanligvis hardware , men kan også være rent programvare. Kjernen har en annen måte å kommunisere med nettverksenheter enn med karakter eller blokk enheter. I stedet for å lese og skrive til enheten , håndterer det pakkeoverføring .
Driver Licensing
Linux -kjernen er lisensiert under GNU General Public License ( GPL ) som betyr det er åpen kildekode og fritt tilgjengelig for alle å laste ned , modifisere og redistribuere så lenge videreformidles koden er også lisensiert under GPL . Men dette gjelder ikke for Linux- drivere .
Fordi kjernen er modulær , vil enheten driver ikke bli en del av kjernen. I stedet åpner den kjernen gjennom en veldefinert grensesnitt . Hvis enheten driver bare bruker denne modulen grensesnittet , det trenger ikke å være lisensiert under GPL . Men hvis enheten driver faktisk bruker en del av kjernen koden for å jobbe , i stedet for grensesnittet tilgjengelig, må det være dekket under GPL .
Sammenslåing med Kernel
Når en enhetsdriver blir akseptert som "arbeider " av Linux Kernel Development team, vil det bli en del av mainline Linux kernel source treet. Det betyr at det vil bli holdt oppdatert gjennom påfølgende kernel endringer , vil fungere med alle sentrale prosessorer ( CPU) som støttes av Linux , og vil bli fikset og forbedret med Linux -fellesskapet.
Kernel source treet inneholder moduler for det meste av maskinvaren støttes av Linux. Det er derfor , så lenge du bruker Linux støttet maskinvare , kan du laste operativsystemet og har maskinvaren arbeid uten å installere ekstra driverprogramvaren .