Product SiteDocumentation Site

B.4. Noen oppgaver som håndteres av kjernen

B.4.1. Styring av maskinvaren

Kjernen har først og fremst som oppgave å kontrollere maskindelene, oppdage dem, slå dem på når datamaskinen blir slått på, og så videre. Den gjør dem også tilgjengelige for programvare på et høyere nivå med et forenklet programmeringsgrensesnitt, slik at programmene kan dra nytte av enheter uten å måtte bekymre seg om detaljer som hvilken kortplass det valgte kortet står i. Programgrensesnittet gir også et abstraksjonslag; det tillater for eksempel at programvare for videokonferanser kan bruke et webkamera uavhengig av merke og modell. Programvaren kan bare bruke grensesnittet Video for Linux (V4L), og kjernen oversetter funksjonskallene i dette grensesnittet til de aktuelle maskinvarekommandoene som trengs når webkameraet brukes.
Kjernen eksporterer mange detaljer om maskinvare den oppdager gjennom de virtuelle filsystemene /proc/ og /sys/. Flere verktøy oppsummerer disse detaljene. Blant dem,lspci (i pakken pciutils) lister PCI-enheter, lsusb (i pakken usbutils) lister USB-enheter, og lspcmcia (i pakken pcmciautils) lister PCMCIA-kort. Disse verktøyene er meget nyttige til å identifisere den eksakte modellen for enheten. Denne identifikasjonen gir også mer presise søk på nettet, noe som i sin tur fører til mer relevant dokumentasjon.

Eksempel B.1. Eksempel på informasjon fra lspci og lsusb

$ lspci
[...]
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 05)
00:01.0 PCI bridge: Intel Corporation 6th-9th Gen Core Processor PCIe Controller (x16) (rev 05)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
00:14.0 USB controller: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation 100 Series/C230 Series Chipset Family Thermal Subsystem (rev 31)
[...]
02:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTL8411B PCI Express Card Reader (rev 01)
03:00.1 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 12)
04:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0bda:5621 Realtek Semiconductor Corp. HD WebCam
Bus 001 Device 002: ID 04ca:3016 Lite-On Technology Corp. 
Bus 001 Device 018: ID 145f:01bc Trust GXT 155 Gaming Mouse
Bus 001 Device 004: ID 04f3:0c03 Elan Microelectronics Corp. ELAN:Fingerprint
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Disse programmene har et -v-valg som lister mye mer detaljert (men vanligvis ikke nødvendig) informasjon. Til slutt¸ lsdev-kommandoen (i pakken procinfo) lister kommunikasjonsressurser som enhetene bruker.
Programmer kobler seg ofte til enheter ved hjelp av spesielle filer som er opprettet i /dev/ (se sidestolpe DET GRUNNLEGGENDE Tilgangstillatelser for enheter). Dette er spesielle filer som representerer platelager (for eksempel, /dev/hda og /dev/sdc), partisjoner (/dev/hda1 eller /dev/sdc3), mus (/dev/input/mouse0), tastatur (/dev/input/event0), lydkort (/dev/snd/*), serieporter (/dev/ttyS*), og så videre.

B.4.2. Filsystemer

Filsystemer er en av kjernens mest fremtredende aspekter. Unix-systemer fletter alle fillagre inn i et enkelt hierarki, som gir brukere (og programmer) tilgang til data ved å kjenne til plasseringen i det hierarkiet.
Startpunktet til dette hierarkiske treet kalles roten, /. Denne katalogen kan inneholde navngitte underkataloger. For eksempel, home-underkatalogen i / kalles /home/. Denne underkatalogen kan i sin tur inneholde andre underkataloger, og så videre. Hver katalog kan også inneholde filer, hvor de faktiske dataene blir lagret. Dermed refererer /home/rmas/Desktop/hello.txt-navnet til en fil med navnet hello.txt lagret i Desktop-underkatalog i rmas-underkatalogen i home-katalogen i roten. Kjernen oversetter mellom dette navnesystemet og den faktiske, fysiske lagring på en disk.
I motsetning til andre systemer, er det bare ett slikt hierarki, og det kan integrere data fra flere disker. En av disse diskene brukes som rot, og de andre er «montert» på kataloger i hierarkiet (Unix-kommandoen heter mount); disse andre diskene er deretter tilgjengelige under disse «monteringspunktene». Dette tillater lagring av brukernes hjemmeområder (tradisjonelt lagret i /home/) på en annen harddisk, som da vil inneholde rhertzog og rmas-katalogene. Så snart disken er montert på /home/, blir disse katalogene tilgjengelige på sine vanlige steder, og stier som /home/rmas/Desktop/hello.txt fortsetter å virke.
Det er mange filsystemformater, og tilsvarende mange måter å lagre data fysisk på disker. De mest kjente er ext3 og ext4, men også andre finnes. For eksempel er vfat det systemet som historisk ble brukt av DOS og Windows-operativsystemer, som gjør det mulig å bruke harddisker både under Debian og Windows. Uansett må et filsystem være på plass på en disk før den kan monteres, og denne operasjonen er kjent som «formatering». Kommandoer som mkfs.ext3 (der mkfs står for MaKe FileSystem) tar seg av formatteringen. Disse kommandoer krever, som et parameter, en enhetsfil som representerer den partisjonen som skal formateres (for eksempel /dev/sda1). Operasjonen er destruktiv, og bør bare kjøres en gang, med mindre man bevisst ønsker å fjerne et filsystem og starte på nytt.
Det finnes også nettverksfilsystem, slik som NFS, der data ikke er lagret på en lokal disk. I stedet overføres data via nettverket til en tjener som lagrer og henter dem ved behov. Filsystemabstraksjonen gjør at brukeren ikke trenger bry seg om dette: filene forblir tilgjengelig som vanlig i hierarkiet.

B.4.3. Delte funksjoner

Siden en rekke av de samme funksjonene brukes av all programvare, er det fornuftig å sentralisere dem i kjernen. For eksempel tillater et delt filsystem at et hvilket som helst program bare kan åpne en fil etter navn, uten å trenger å bekymre seg om hvor filen er lagret fysisk. Filen kan lagres i flere ulike utsnitt på en harddisk, eller delt over flere harddisker, eller til og med lagret på en ekstern filtjener. Delte kommunikasjonsfunksjoner blir brukt av programmer til å utveksle data uavhengig av måten dataene transporteres. For eksempel kan transport gjøres over hvilke som helst kombinasjoner av lokale eller trådløse nettverk, eller over en fasttelefon.

B.4.4. Prosesshåndtering

En prosess er en kjørende forekomst av et program. Dette krever minne til å lagre både selve programmet og dets driftsdata. Kjernen er ansvarlig for å opprette og holde rede på dem. Når et program kjøres, setter kjernen først av litt minne, deretter laster den kjørbar kode fra filsystemet inn i dette, og starter så å kjøre programkoden. Den tar vare på informasjon om denne prosessen, i hvilken det mest synlige er et identifikasjonsnummer som kalles pid (process identifier).
Unix-lignende kjerner (inkludert Linux), som de fleste andre moderne operativsystemer, er i stand til «fleroppgavekjøring». Med andre ord, de kan kjøre mange prosesser «samtidig». Det er faktisk bare en kjørende prosess til enhver tid, men kjernen kutter opp tiden i små deler, og kjører hver prosess etter tur. Siden disse tidssnittene er meget korte (i millisekund-området), skaper de en illusjon av prosesser som kjører i parallell, selv om de faktisk bare er aktive i enkelte tidsintervall, og står i ro resten av tiden. Kjernens jobb er å justere sine tidsplanleggingsmekanismer for å holde på denne illusjonen, og samtidig maksimere den globale systemytelsen. Dersom tidsintervallene er for lange, kan programmet ikke fremstå mindre responsivt enn ønskelig. For kort, og systemet kaster bort tid som følge av hyppig veksling mellom oppgaver. Disse beslutningene kan justeres med prosessprioriteringer. Høyt prioriterte prosesser vil kjøre lenger, og med mer hyppige tidsintervaller enn lavt prioriterte prosesser.
Kjernen tillater naturligvis kjøring av flere uavhengige instanser av det samme programmet. Men hver kan bare få tilgang til sin egen tildelte tid og sitt eget minne. Deres data forblir dermed uavhengig.

B.4.5. Rettighetshåndtering

Unix-lignende systemer håndterer også flere brukere. De tilbyr et rettighetsforvaltningssystem som håndterer separate brukere og grupper; det gir også kontroll over handlinger basert på tillatelser. Kjernen forvalter data for hver prosess, som lar den kontrollere tillatelser. Mesteparten av tiden er en prosess identifisert med brukeren som startet den. Denne prosessen er får kun gjøre det som er tilgjengelig for brukeren. For eksempel for å prøve å åpne en fil kreves det at kjernen kontrollerer prosessens identitet mot tilgangsbegresninger (for mer informasjon om dette eksempelet, se Seksjon 9.3, «Håndtering av rettigheter»).