B.3. Hvordan datamaskinen fungerer inni: de forskjellige involverte lagene
En datamaskin er ofte betraktet som noe heller abstrakt, og det ytre, synlige grensesnittet er mye enklere enn den interne kompleksiteten. Slik kompleksitet kommer delvis fra antallet deler som inngår. Imidlertid kan disse delene ses på som lag, hvor et lag bare vekselvirker (samhandler) med lagene direkte over eller under.
En sluttbruker kan klare seg uten å kunne disse detaljene ... så lenge alt fungerer. Når man møter et problem som «Internett fungerer ikke!», er den første tingen å gjøre å identifisere i hvilket lag problemet stammer fra. Fungerer nettverkskortet (hardvare/maskinvaren)? Er det gjenkjent av datamaskinen? Ser Linux-kjernen kortet? Er nettverksinnstillingene riktig satt opp? Alle disse spørsmålene avgrenser et aktuelt lag, og retter fokus mot på en potensiell problemkilde.
B.3.1. Det nederste laget: maskinvaren
La oss starte med en grunnleggende påminnelse om at en datamaskin først og fremst er et sett med maskinvareelementer. Det er generelt et hovedkort, med én (eller flere) prosessor(er), endel RAM, enhetskontrollere, og utvidelsesspor for tilleggskort (for andre enhetskontrollere). Viktigst å merke seg blant disse kontrollerne er IDE (Parallel ATA), SCSI og Serial ATA, for å koble til lagringsenheter som harddisker. Andre kontrollere inkluderer USB, som er i stand til å være vert for et stort utvalg enheter (alt fra nettkamera til termometre, fra tastaturer til hjemmeautomasjonssystemer) og IEEE 1394 (Firewire). Disse kontrollerne lar en ofte koble til flere enheter slik at hele delsystemet håndteres av en kontroller, og derfor vanligvis er kjent som en «buss». Tilvalgskort inkluderer grafikkort (som skjermer kan plugges inn i), lydkort, nettverkskort, og så videre. Noen av hovedkortene har disse funksjonene innebygget, og trenger ikke tilleggskort.
B.3.2. Oppstarteren: BIOS eller UEFI
På egen hånd er maskinvare ute av stand til å utføre nyttige oppgaver uten et tilhørende dataprogram som styrer den. Kontroll av og samspill med maskinvaren er hensikten med operativsystemet og programmene. Disse krever i sin tur funksjonell maskinvare for å kjøre.
Denne symbiosen mellom maskinvare og programvare skjer ikke av seg selv. Når datamaskinen først er slått på, kreves det innledende oppsett. Denne rollen fylles av BIOS eller UEFI, et dataprogram innebygd i hovedkortet og som kjører automatisk ved oppstart. Den primære oppgaven er å søke etter programvare som det kan overlate kontrollen til. For BIOS betyr det vanligvis, som du kanskje har lært om i
Seksjon 9.1, «Systemoppstart», å se etter den første harddisken med en oppstartssektor (også kjent som
master boot record eller
MBR), laste oppstartssektoren, og kjøre den. Fra da av er BIOS vanligvis ikke involvert (før neste omstart). I tilfellet med UEFI, innebærer prosessen skanning av disker for å finne en øremerket EFI-partisjon som inneholder ytterligere EFI-programmer for kjøring.
Oppstartssektoren (eller EFI-partisjonen), inneholder i sin tur et annet dataprogram, kalt oppstartslasteren, som har som formål å finne og kjøre et operativsystem. Siden denne oppstartslasteren ikke er innebygd i hovedkortet, men lastet fra disk, kan det være smartere enn BIOS, noe som forklarer hvorfor BIOS ikke laster operativsystemet selv. For eksempel kan oppstartslasteren (ofte GRUB på Linux-systemer) liste tilgjengelige operativsystemer, og be brukeren om å velge en. Vanligvis er et standardvalg gitt når den løper ut på tid. Noen ganger kan brukeren også velge å legge til parametere som skal sendes til kjernen, og så videre. Til slutt blir en kjerne sporet opp, lastet inn i minnet, og kjørt.
BIOS/ EFI er også ansvarlig for å oppdage og sette opp en rekke enheter. Dette omfatter naturligvis IDE/SATA-enheter (vanligvis harddisken(e) og CD/DVD-ROM-stasjoner), men også PCI-enheter. Oppdagede enheter blir ofte listet opp på skjermen under oppstartsprosessen. Hvis denne listen passerer for fort, kan du bruke Pause-nøkkelen til å fryse den lenge nok til å få den lest. Installerte PCI-enheter som ikke listes opp er et dårlig tegn. I verste fall er enheten defekt. I beste fall kan den ikke virke sammen med den gjeldende versjonen av BIOS eller hovedkortet. PCI-spesifikasjoner utvikler seg, og gamle hovedkort er ikke garantert for å håndtere nyere PCI-enheter.
Både BIOS/UEFI og oppstartslasteren kjører bare noen få sekunder hver. Nå kommer vi til en programvaredel som kjører i lengre tid, operativsystemkjernen. Denne kjernen tar rollen som en dirigent i et orkester, og sikrer koordinering mellom maskinvare og programvare. Denne rollen består av flere oppgaver, deriblant: Å styre maskinvare, administrere prosesser, brukere og tillatelser, filsystemet, og så videre. Kjernen gir en felles basis for alle andre programmer på systemet.
Selv om alt som skjer utenfor kjernen kan bli slått sammen som «brukerlandet», kan vi likevel dele det opp i lag med programvare. Men samhandlingene deres er mer komplekse enn før, og klassifiseringene er ikke alltid så enkle. Et program bruker ofte biblioteker, som i sin tur berører kjernen, men kommunikasjonen kan også involvere andre programmer, eller til og med mange biblioteker som kaller opp hverandre.