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
Let us start with a basic reminder that a computer is, first and foremost, a set of hardware elements. There is generally a main board (known as the motherboard), with one (or more) processor(s), some RAM, device controllers, and extension slots for option boards (for other device controllers). Most noteworthy among these controllers are IDE (Parallel ATA), SCSI, and Serial ATA, for connecting to storage devices such as hard disks. Other controllers include USB, which is able to host a great variety of devices (ranging from webcams to thermometers, from keyboards to home automation systems) and IEEE 1394 (Firewire). These controllers often allow connecting several devices so the complete subsystem handled by a controller is therefore usually known as a “bus”. Option boards include graphics cards (into which monitor screens will be plugged), sound cards, network interface cards, and so on. Some main boards are pre-built with these features, and don't need option boards.
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.