Devices (apparaten) vormen een belangrijk deel van het Linux besturingssysteem. Het is namelijk de manier waarop een Linux-systeem communiceert met de aangesloten hardware. De kernel doet veel op het gebied van de communicatie met de aangesloten randapparaten. Een harde schijf bijvoorbeeld bevat een heleboel informatie over bestanden en een apart gedeelte voor de 'boekhouding'. In dat boekhoudgedeelte wordt bijgehouden welke bestanden er bestaan, hoe groot ze zijn, etc. Als je een bestand opslaat op de harde schijf terwijl een andere gebruiker dat ook doet en de kernel zou zich niet met de boekhouding bemoeien, dan zou het een behoorlijke chaos worden op de harde schijf. Daarom doet de kernel de boekhouding en is zij ook de enige die daadwerkelijk bestanden wegschrijft.
Kernel |
|
---|---|
|
Harddisk driver |
WLAN driver |
|
USB poort |
|
Grafische kaart |
De manier waarop een programma op een Linux-systeem communiceert met de in de kernel aanwezige drivers is via bestanden. Eigenlijk bestaat een Linux-systeem alleen maar uit bestanden en processen. Het betreft hier wel speciale bestanden, de zogenaamde apparaat bestanden (device files). De interactie tussen de hardware en gebruikers vindt plaats via deze apparaat-bestanden:
hardware > kernel driver > apparaat-bestand > programma
bus/usb/001/001 De eerste USB-poort van het systeem.
bus/usb/001/002 De tweede USB-poort van het systeem (enkel zichtbaar indien in gebruik).
dvdrw De DVD-brander van het systeem.
hda Het eerste IDE-apparaat van het systeem.
sda Het eerste niet IDE-apparaat (vb: SATA, USB).
sda1 De eerste partitie op de eerste niet IDE-harddisk van het systeem.
sdb Het tweede niet IDE-apparaat.
null Een device waar u van alles naartoe kunt sturen wat vervolgens daarin verdwijnt.
tty0 De eerste terminal.
zero Een device waar altijd de waarde '0' uit komt.
random Een device waar een willekeurig getal uit komt.
Zoals je ziet worden veel onderdelen van een computersysteem gesymboliseerd door een bestand in de /dev/ map. Een aantal van deze bestanden zullen een belangrijke rol spelen in dit hoofdstuk.
Nu je wat meer weet over device-bestanden gaat dit gedeelte er nog wat dieper op in. Hier komen block en character devices, major en minor device-nummers aan bod.
ls -l
` opdracht:
crw-rw-r-- 1 root root 189, 0 jul 6 19:43
/dev/bus/usb/001/001
brw-rw----
1 root disk 8, 0 jul 6 19:43 /dev/sda
Bij de usb-poort staat een 'c', en bij de 'sda' (de harde schijf) staat een 'b'.
De 'b' staat hier voor een 'block' device en de 'c' voor een 'character' device. De block device file is voor gebufferde communicatie en de character device file is voor ongebufferde communicatie. Het verschil is eenvoudig. Als iemand achter een terminal werkt waarvan het toetsenbord is aangesloten op de tweede USB-poort, dan wil die gebruiker waarschijnlijk niet dat de computer wacht tot een buffer vol is voordat de inhoud wordt verwerkt. Hij wil dat, zodra hij een toets indrukt, deze ook door het systeem wordt ontvangen.
Een programma dat gebruik maakt van een DVD-brander of harde schijf wil graag gebruik maken van gebufferde communicatie want dat komt de efficiëntie ten goede.
Een ander zeer apart device-bestand is FIFO, ook wel 'named pipe' genoemd. Het is een bestand dat door twee programma's gebruikt kan worden om met elkaar te communiceren. Het eerste programma opent het bestand om naar te schrijven, een ander programma opent het bestand om van te lezen. De tekst FIFO betekent First In First Out, oftewel: “wat er als eerste in gaat, komt er ook als eerste uit”. Een FIFO wordt met een 'p' gedefinieerd.
De in de /dev/ aanwezige bestanden
wijken bij een `ls -l
` opdracht
enigszins af van wat je normaal gesproken ziet:
brw-rw---- 1
root disk 8, 0 jul 6 19:43 /dev/sda
-rw-r--r-- 1 root root 1307
jul 2 21:03 /etc/passwd
Geeft de normale versie de grootte
van een bestand weer, bij een device file staan hier twee getallen.
Het eerste getal wordt ook wel het 'major device number' genoemd. Met
dit getal wordt aangegeven welke driver in de kernel bij deze device
file hoort.
Elke driver in de kernel heeft zijn eigen major
device number toegekend gekregen. Het tweede getal is het 'minor
device number'. Dit getal geeft binnen de driver aan om welke variant
het hier gaat. Bijvoorbeeld:
brw-rw---- 1
root disk 8, 0 jul 6 19:43 /dev/sda
brw-rw---- 1 root disk 8, 1
jul 6 19:43 /dev/sda1brw-rw---- 1
root disk 8, 2 jul 6 19:43 /dev/sda2
Zoals je in bovenstaande lijst kunt zien maken al deze device files gebruik van hetzelfde major device number. Ze variëren onderling met het minor device number. Is minor 0 de driver voor de eerste SATA-harddisk, minor 1 is de driver voor de eerste partitie op deze disk en minor 2 is de driver voor de tweede partitie.
De meeste Linux systemen zijn op dit moment pc's en deze zijn meestal voorzien van een harddisk, ook wel 'harde schijf' genoemd. Een harde schijf is een onderdeel in de computer waarin een aantal schijven zitten met daarop een magnetische laag waarop gegevens kunnen worden opgeslagen. De schijven in dit onderdeel draaien zeer snel rond. Boven het oppervlak van de schijf zweeft een opnamekop die gegevens opslaat. De schijven draaien zo snel dat de kop op een zeer kleine afstand boven de schijf blijft zweven.
Een bedieningsarm zorgt er voor dat de kop net als bij een platenspeler heen en weer kan bewegen boven de schijf. Eén en ander is te zien op de afbeelding.
Een schijf wordt opgedeeld in een aantal onderdelen. Ten eerste het aantal 'tracks' of 'cilinders'. Dit is te vergelijken met de jaarringen van een boom. Elke harde schijf heeft op elke schijf een aantal tracks naast elkaar liggen. Elke track is ook weer opgedeeld in delen, 'sectoren' genaamd. Omdat een harde schijf meerdere magnetische schijven kan bevatten, wordt ook vaak het aantal lees/schrijf-koppen vermeld, het aantal 'heads'.
De prijs van harde schijven is door de jaren heen drastisch gedaald. Had de eerste harde schijven een maximale opslagcapaciteit van 5 MB en een prijs van vele duizenden euro's, tegenwoordig kun je voor een luttel bedrag al een harde schijf kopen met een capaciteit van 500 GB.
Een harde schijf wordt altijd aangesloten op een controller. Dit is een stuk elektronica dat de communicatie met de harde schijf regelt. Ook DVD-spelers en tape-units communiceren op dezelfde manier met de controller. Er zijn drie verschillende soorten controllers (en dus ook harde schijven, cd-rom spelers, tape-units, etc.) in omloop.
IDE is de afkorting van Integrated Drive Electronics. Dit type harde schijf was populair en relatief goedkoop. Op een IDE-controller kun je normaliter twee apparaten aansluiten. De eerste wordt daarbij aangeduid als master en de ander als slave. In oudere computers zitten twee IDE-controllers zodat je maximaal 4 schijven (zowel harde schijven als DVD-spelers!) kunt aansluiten. Eigenlijk gebruiken de computers Enhanced IDE (EIDE) omdat IDE zelf maximaal 528 MB schijven ondersteunde en deze capaciteit tegenwoordig enigszins achterhaald is.
De Serial ATA-controller
is vandaag de dag standaard en sneller dan IDE. Serial ATA biedt
boven Parallel ATA (IDE) vele voordelen: zo zijn de kabels dunner
(beter voor de luchtcirculatie) en de aansluiting op de harde
schijven is minder gevoelig.
Voor alle controllers geldt dat
ze niet onderling uitwisselbaar zijn. M.a.w.: je kunt niet een Serial
ATA harde schijf aansluiten op een IDE-aansluiting in uw computer.
Kijk in de documentatie van uw computer of moederbord welke
controllers uw computer ondersteunt.
Start een terminal.
Voer de opdracht `cat
/dev/random
` uit. Wat merk je?
Onderbreek de opdracht
met de toetscombinatie <Ctrl+C>.
Bepaal tot welke soort de volgende device file behoren:
/dev/audio:
/dev/bootsplash:
/dev/dvd:
/dev/console:
dev/initctl:
/dev/dsp:
/dev/sda:
/dev/loop0:
/dev/lp0:
/dev/input/mouse0:
/dev/mixer:
/dev/tty:
/dev/snd/seq:
/dev/xconsole:
Zoek het major en minor device number op van de volgende device files:
/dev/audio:
/dev/console:
/dev/dsp:
/dev/mixer:
/dev/sda:
/dev/loop0:
/dev/snd/seq:
/dev/tty:
Welke hierboven opgesomde devices gebruiken dezelfde driver: