Ett operativsystem är ett grundläggande programvara som hanterar datorns hårdvara och resurser samt tillhandahåller tjänster för datorprogram. Det fungerar som ett gränssnitt mellan användaren, applikationer och datorns hårdvara. Operativsystemet ansvarar för att säkerställa att alla komponenter i datorn fungerar tillsammans smidigt.
Datorns hårdvara hanteras via små program som kallas ”drivrutiner”. När du installerar ny maskinvara måste du installera en drivrutin för att den nya hårdvaran ska fungera korrekt. Förutom drivrutiner använder vi varierande applikationer för olika ändamål, exempelvis Microsoft Word. Men drivrutiner och applikationer ensamma kan inte hantera datorns hårdvara effektivt; det krävs ett operativsystem.
Operativsystemet ansvarar för viktiga funktioner som:
- Resurshantering: Hanterar datorns minne, processorer, lagringsutrymme och andra resurser.
- Filhantering: Organiserar och kontrollerar datafiler på datorns lagringsenheter.
- Enhetshantering: Styr och kommunicerar med externa enheter som skrivare, skannrar och andra anslutna enheter.
- Användargränssnitt: Ger användare ett sätt att interagera med datorn, antingen via kommandoradsgränssnitt (CLI) eller grafiskt användargränssnitt (GUI).
Exempel på populära operativsystem inkluderar Windows, macOS, Linux och Android.
Hardware Abstraction Layer – HAL
Operativsystemet spelar en central roll i att hantera kommunikationen mellan datorn och dess kringutrustning, såsom skrivare, bildskärmar och andra externa enheter. För att göra detta använder operativsystemet drivrutiner, som är små program som möjliggör kommunikation mellan hårdvara och mjukvara. I de flesta moderna operativsystem finns drivrutiner för de vanligaste enheterna inbyggda, och vid behov kan operativsystemet automatiskt ladda ner och installera drivrutiner för ny ansluten hårdvara, ofta via internet. Windows operativsystem har exempelvis ett separat uppdaterings system som automatiserar datorns uppdateringar, inklusive drivrutiner.
När olika mjukvaror styrs av egna arbetsmetoder kan det ibland vara svårt att utföra rätt instruktioner som är specifika för varje program. För att förenkla denna process finns en komponent i operativsystemet som kallas Hardware Abstraction Layer, eller HAL. HAL fungerar som en mellanhand som abstraherar den underliggande hårdvaran från mjukvaran, vilket innebär att applikationer kan kommunicera med hårdvaran utan att behöva känna till dess specifika detaljer.
Med andra ord fungerar HAL som en virtuell dator som möjliggör kompatibilitet mellan olika typer av hårdvara och mjukvara. Applikationer som körs i användarläge använder HAL för att få åtkomst till datorns hårdvara som körs i kärnaläge. En av de största fördelarna med HAL är att operativsystemet inte behöver unika drivrutiner för varje enskild hårdvaruenhet. Istället kan operativsystemet använda generiska drivrutiner som fungerar med flera olika typer av liknande hårdvara. Detta förenklar både utveckling och underhåll av operativsystemet och förbättrar kompatibiliteten med olika enheter.
Processer
Processer är körbara enheter som kan startas av användaren genom att öppna ett program eller av andra processer genom operativsystemets mekanismer. Alla processer måste schemaläggas för att resurser som CPU-tid ska kunna användas effektivt och rättvist. Schemaläggning är en metod där operativsystemet bestämmer i vilken ordning och hur länge varje process får tillgång till systemresurser. Det finns flera olika metoder för att schemalägga processer:
- Round-robin: I denna metod tilldelas varje process en fast tidskvanta (en kort tid att köra) och CPU roterar mellan processerna i en cyklisk ordning. När en process har använt sin tilldelade tid, ställs den längst bak i kön och väntar på sin tur igen. Detta ger alla processer en chans att exekveras och förhindrar att någon process monopoliserar CPU.
- FIFO (First-In-First-Out): Denna schemaläggnings teknik kör processer i den ordning de kommer in i kön. Den första processen som startas är den första som exekveras, och den körs tills den är klar innan nästa process i kön börjar. Till skillnad från round-robin är FIFO inte cyklisk, vilket innebär att processerna inte byter plats i kön.
- Lottoschemaläggning: Detta är en rättvis och slumpmässig metod där CPU-tid fördelas genom ett lotterisystem. Varje process får ”lotter”, och processorn lottar ut sin tid baserat på dessa lotter. I längden jämnar det ut sig och resulterar i en fördelning som liknar round-robin, men med en mer slumpmässig karaktär. Detta säkerställer att alla processer får en chans att exekveras, även om tilldelningen sker slumpmässigt.
När du startar ett program i Windows skapas en ny process för programmet. Denna process tilldelar programmet ett privat virtuellt adress-utrymme och en egen referenstabell. Eftersom ett programs virtuella adress-utrymme är privat kan det inte påverka eller ändra data som tillhör andra program. Varje program körs isolerat från de andra, vilket innebär att om ett program kraschar påverkas inte andra program eller operativsystemet av denna krasch. Detta bidrar till systemets stabilitet och säkerhet.
Applikationshantering
Som sagt körs applikationer och tjänster som processer på en dator, vilket innebär att allt som sker på datorn när den är igång utförs genom dessa processer. Operativsystemet ansvarar för att tilldela varje process tillgång till datorns resurser, såsom kommunikationskanaler, processorkraft, RAM-minne och lagringsutrymme.
När vi använder applikationer som behöver åtkomst till datorns hårdvara, stöter vi på begränsningar eftersom applikationer inte kan känna till alla detaljer om varje enskild datorkomponent. Dessutom kan applikationer inte ges fullständig åtkomst till datorns hårdvara eller total kontroll över drivrutinerna, eftersom det skulle kunna leda till instabilitet och säkerhetsproblem.
För att hantera detta problem delas datorns körningsläge upp i två olika nivåer: användarläge (user mode) och systemläge (kernel mode). I användarläget har applikationer begränsad åtkomst till systemresurser och kommunicerar med hårdvaran genom operativsystemets gränssnitt. Systemläget, å andra sidan, är där operativsystemets kärna körs och har fullständig kontroll över hårdvaran och drivrutinerna.
Operativsystemet fungerar som en förmedlare som styr kommunikationen mellan användaren, applikationerna och datorns hårdvara. Det gör att applikationer kan fungera korrekt på olika typer av hårdvara utan att behöva hantera de tekniska detaljerna för varje specifik komponent.
Bild 2 illustrerar två olika datorer (A och B) med olika hårdvara. Operativsystemet skapar en enhetlig kommunikationsstruktur som gör det möjligt för applikationer att interagera med hårdvaran på ett enhetligt sätt, oavsett vilken dator eller hårdvarukonfiguration som används. Bild 3 visar de fyra lager eller skikt som är självständiga men som samarbetar för att möjliggöra denna interaktion mellan applikationer och hårdvara.