Product SiteDocumentation Site

B.4. Vissa uppgifter hanteras av kärnan

B.4.1. Köra hårdvaran

Kärnan har, i första hand, uppgiften att kontrollera hårdvarudelarna, detektera dem, slå på dem när datorn är strömsatt o.s.v. Den gör dem också tillgängliga för programvara på högre nivå med ett förenklat programmeringsgränssnitt, så att program kan dra nytta av enheter utan att behöva känna till detaljer så som vilken expansionsport expansionskortet sitter i. Programmeringsgränssnittet tillhandahåller också ett abstraktionslager; detta låter till exempel videokonferenssystem använda en webbkamera oberoende av tillverkare och modell. Programvara kan helt enkelt använda gränssnittet Video for Linux (V4L, Video för Linux), varpå kärnan översätter funktionsanropen för detta gränssnitt till de hårdvarukommandon som behövs för den specifika webbkamera som används.
The kernel exports many details about detected hardware through the /proc/ and /sys/ virtual filesystems. Several tools summarize those details. Among them, lspci (in the pciutils package) lists PCI devices, lsusb (in the usbutils package) lists USB devices, and lspcmcia (in the pcmciautils package) lists PCMCIA cards. These tools are very useful for identifying the exact model of a device. This identification also allows more precise searches on the web, which in turn, lead to more relevant documents.

Exempel B.1. Exempel på information som tillhandahålls av lspci och 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
Dessa program har en flagga -v som listar ännu mer detaljerad information (som vanligen inte behövs). Avslutningsvis listar kommandot lsdev (i paketet procinfo) kommunikationsresurser som används av enheter.
Applications often access devices by way of special files created within /dev/ (see sidebar TILLBAKA TILL GRUNDERNA Enhetsåtkomstbehörigheter). 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.

B.4.2. Filsystem

Filsystem är en av de väsentligaste aspekterna av kärnan. Unix-system sammanfogar alla lagrade filer i en enda hierarki, vilket låter användare (och program) komma åt data genom att endast känna till dess plats inom den hierarkin.
Startpunkten för detta hierarkiska träd kallas för roten, /. Denna katalog kan innehålla namngivna underkataloger. Till exempel är home en underkatalog till / som kallas /home/. Denna underkatalog kan i sin tur innehålla andra underkataloger, o.s.v. Varje katalog kan också innehålla filer, i vilka faktisk data kommer att lagras. Således refererar namnet /home/rmas/Skrivbord/hej.txt till en fil med namnet hej.txt lagrad i underkatalogen Skrivbord i underkatalogen rmas i katalogen home som finns i roten. Kärnan översätter mellan detta namngivningssystem och den riktiga fysiska lagringsplatsen på disk.
Till skillnad från andra operativsystem, finns det bara en sådan hierarki, och den kan integrera data från flera diskar. En av dessa diskar används som roten och de andras ”monteras” som kataloger i hierarkin (Unix-kommandot kallas mount (montera)); dess andra diskar är sedan tillgängliga under dessa ”monteringspunkter”. Detta tillåter lagring av användares hemkataloger (vanligtvis lagrade i /home/) på en annan hårddisk, vilken kommer att innehålla katalogerna rhertzog och rmas. När disken är monterad på /home/ kommer dessa kataloger att kunna nås på deras vanliga platser, och sökvägar så som /home/rmas/Skrivbord/hej.txt kommer att fortsätta fungera.
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 finns också nätverksfilsystem, så som NFS, där data inte lagras på en lokal disk. Istället skickas data över nätverket till en server som lagrar och hämtar data vid behov. Filsystemsabstraktionen skyddar användaren från att behöva bry sig: filer förblir åtkomliga på det vanliga hierarkiska sättet.

B.4.3. Delade funktioner

Då ett antal funktioner används av all programvara är det vettigt att centralisera dem i kärnan. Delad filsystemshantering tillåter till exempel vilket program som helst att öppna en fil med namn, utan att behöva bry sig om var filen är lagrad fysiskt. Filen kan lagras på flera olika delar på en hårddisk, eller delad över flera hårddiskar, eller till och med lagrade på en fjärrfilserver. Delade kommunikationsfunktioner används av program för att utbyta data oberoende av hur data transporteras. Till exempel kan transport ske över en kombination av lokala eller trådlösa nätverk eller över en telefonlinje.

B.4.4. Hantera processer

En process är en körande instans av ett program. Detta kräver minne för att lagra både programmet självt och dess data. Kärnan är ansvarig för att skapa och spåra dem. När ett program kör tilldelar kärnan först lite minne åt programmet, och läser sedan in den körbara koden från filsystem in i detta minne, och börjar sedan köra koden. Den håller information om denna process, det mest väsentliga är ett identifikationsnummer känt som pid (processidentifierare).
Unix-liknande kärnor (inklusive Linux) kan, likt de flera moderna operativsystem, göra flera saker samtidigt. Med andra ord de tillåter att man kör flera processer ”samtidigt”. Det är faktiskt bara en process som kör åt gången, men kärnan delar in tiden i små intervall och kör varje process i turordning. Då dessa tidsintervall är väldigt korta (i storleksordningen millisekunder), ger detta illusionen av att processerna kör parallell, även om de i verkligheten endast är aktiva under vissa tidsintervall och sover resten av tiden. Kärnans jobb är att justera sina schemaläggningsalgoritmer för att behålla den illusionen, medan systemets globala prestanda maximeras. Om tidsintervallen är för långa kan ett program upplevas som att det inte är responsivt. Om intervallen är för korta förlorar systemet tid då uppgifter växlas mellan allt för fort. Dessa beslut kan justeras med processprioriteter. Högprioriterade processer kommer att köra under länge tidsintervall och oftare än lågprioriterade processer.
Kärnan tillåter förstås att flera oberoende instanser av samma program kör samtidigt. Men var och en kan endast använda sina egna tidsintervall och minne. Deras data förblir därmed oberoende.

B.4.5. Rättighetshantering

Unix-liknande system är också fleranvändarsystem. De tillhandahåller ett rättighetssystem som har stöd för separata användare och grupper; det tillåter också styrning av åtgärder baserade på rättigheter. Kärnan hanterar data för varje process, vilket låter den styra rättigheter. För det mesta identifieras en process av användaren som startade den. Den processen tillåts endast utföra de åtgärder som dess ägare kan utföra. Att försöka öppna en fil kräver till exempel att kärnan kontrollerar processidentiteten mot åtkomsträttigheter (för vidare information om detta specifika exempel se Avsnitt 9.3, ”Hantera behörigheter”).