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: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
[..]
02:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43ea
05:00.0 PCI bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge (rev 04)
06:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41)
07:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
08:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO
09:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO
0a:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
0b:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
0b:00.1 Encryption controller: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP
0b:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
$
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 048d:c102 Integrated Technology Express, Inc. ITE Device(8910)
Bus 001 Device 004: ID 5986:115f Bison Electronics Inc. Integrated Camera
Bus 001 Device 005: ID 048d:c975 Integrated Technology Express, Inc. ITE Device(8295)
Bus 001 Device 006: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 05e3:0620 Genesys Logic, Inc. GL3523 Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.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.
Applications often access devices by way of special files created within
/dev/
(see sidebar
DET GRUNNLEGGENDE Tilgangstillatelser for enheter). These are special files that represent disk drives (for instance,
/dev/hda
and
/dev/sdc
),
/dev/nvme1n1
partitions (
/dev/hda1
or
/dev/sdc3
or
/dev/nvme1n1p2
), mice (
/dev/input/mouse0
), keyboards (
/dev/input/event0
), soundcards (
/dev/snd/*
), serial ports (
/dev/ttyS*
), and so on.
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.
There are many filesystem formats, corresponding to many ways of physically storing data on disks. The most widely known are ext3 and ext4, but others exist. For instance, vfat is the system that was historically used by DOS and Windows operating systems, which allows using hard disks under Debian as well as under Windows. In any case, a filesystem must be prepared on a disk before it can be mounted and this operation is known as “formatting”. Commands such as mkfs.ext4
(where mkfs
stands for MaKe FileSystem) handle formatting. These commands require, as a parameter, a device file representing the partition to be formatted (for instance, /dev/sda1
). This operation is destructive and should only be run once, except if one deliberately wishes to wipe a filesystem and start afresh.
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.
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.
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»).