B.3. Hur en dator fungerar inuti: de olika lagren som är inblandade
En dator betraktas ofta som något ganska abstrakt, och det synliga externa gränssnittet är mycket enklare än dess inre komplexitet. Sådan komplexitet kommer från antalet delar som är involverade. Dessa delar kan dock betraktas i lager, där ett lager endast interagerar med de direkt ovanför eller under.
En slutanvändaren kan klara sig utan att känna till dessa detaljer… så länge allt fungerar. Vid konfrontation med ett problem så som ”Internet fungerar inte!”, är det första man ska göra att försöka identifiera i vilket lager felet uppstår. Fungerar nätverkskortet (hårdvara)? Hittas det av datorn? Kan Linux-kärnan se det? Är nätverksparametrarna korrekt konfigurerade? Alla dessa frågor isolerar ett specifikt lager och fokuserar på en potentiell källa till problemet.
B.3.1. Det djupaste lagret: hårdvaran
Låt oss börja med den inledande påminnelsen om att en dator i första hand är en uppsättning hårdvarudelar. Generellt finns det ett huvudkort (känt som moderkort) med en processor (eller flera processorer), lite RAM, styrenheter för andra enheter, platser för expansionskort (med styrenheter för andra enheter). Väsentliga bland dessa styrenheter är IDE (Parallell ATA), SCSI och Seriell ATA, då dessa ansluter lagringsenheter så som hårddiskar. Andra styrenheter inkluderar USB, som kan användas för att ansluta en stor mängd enheter (allt från webbkameror till termometrar, från tangentbord till hemautomationssystem) och IEEE 1394 (Firewire). Dessa styrenheter tillåter ofta anslutning av flera enheter, vilket leder till att det fullständiga undersystemet som hanteras av en styrenhet ofta refereras till som en ”buss”. Expansionskort inkluderar grafikkort (till vilket bildskärmar ansluts), ljudkort, nätverkskort, o.s.v. Vissa moderkort har dessa funktioner inbyggda, och behöver därför inte expansionskort.
B.3.2. Uppstartaren: BIOS eller UEFI
Hårdvara kan inte på egen hand utföra nyttiga uppgifter utan en motsvarande programvara som driver den. Att kontrollera och interagera med hårdvaran är därför syftet för operativsystemet och programmen. Dessa, å sin sida, kräver fungerande hårdvara för att köra.
This symbiosis between hardware and software does not happen on its own. When the computer is first powered up, some initial setup is required. This role is assumed by the BIOS or UEFI, a piece of software embedded into the main board that runs automatically upon power-up. Its primary task is searching for software it can hand over control to. Usually, as you may have learned in
Avsnitt 9.1, ”Systemstart”, in the BIOS case, this involves looking for the first hard disk with a boot sector (also known as the
master boot record or
MBR), loading that boot sector, and running it. From then on, the BIOS is usually not involved (until the next boot). In the case of UEFI, the process involves scanning disks to find a dedicated EFI partition containing further EFI applications to execute.
Startsektorn (eller EFI-partitionen) innehåller en annan bit programvara som kallas startinläsaren, vars uppgift är att hitta och köra ett operativsystem. Då startinläsaren inte är inbyggd på moderkortet, utan läses in från disk, kan den vara smartare än BIOS, vilket förklarar varför BIOS inte läser in operativsystemet själv. Startinläsaren (ofta GRUB på Linux-system) kan till exempel lista de tillgängliga operativsystemen och be användaren att välja ett. Efter en tidsgräns finns vanligtvis ett standardval. Ibland kan användaren också välja att lägga till parametrar att skicka till kärnan, o.s.v. Slutligen hittas en kärna, läses in i minne och exekveras.
BIOS/UEFI är också ansvarigt för att detektera och initiera ett antal enheter. Detta inkluderar självklart IDE-/SATA-enheter (vanligtvis hårddiskar och CD-/DVD-ROM-enheter), men också PCI-enheter. Detekterade enheter listas ofta på skärmen under uppstarten. Om denna lista går för snabbt kan Paus-tangenten användas för att frysa den länge nog för att den ska kunna läsas. Installerade PCI-enheter som inte syns här är ett dåligt omen. I värsta fall är enheten trasig. I bästa fall är den endast inkompatibel med den aktuella versionen av BIOS eller moderkortet. PCI-specifikationer utvecklas och gamla moderkort garanterar inte att de kan hantera nyare PCI-enheter.
Både BIOS/UEFI och startinläsaren kör endast ett par sekunder vardera; nu får vi den första biten programvara som kör under en längre tid, operativsystemets kärna. Denna kärna får rollen som dirigent i en orkester, och säkerställer koordinationen mellan hårdvara och programvara. Denna roll involverar flera uppgifter, inklusive: köra hårdvara, hantera processer, användare och rättigheter, filsystemet o.s.v. Kärnan tillhandahåller en gemensam bas för alla andra program på systemet.
Även om allting som händer utanför kärnan kan samlas ihop under uttrycket ”användarrymd”, kan vi fortfarande separera det i olika lager av programvara. Interaktionen mellan dem är mer komplex än tidigare och klassifikationerna är inte lika enkla. Ett program använder vanligen bibliotek, vilka i sin tur blandar in kärnan, men kommunikationen kan också involvera andra program eller flera bibliotek som anropar varandra.