Operativsystem
Operativsystem (OS), program som hanterar en dators resurser, särskilt fördelningen av dessa resurser mellan andra program. Typiska resurser är den centrala processorenheten (CPU), datorminne, fillagring, in- och utmatningsenheter (I/O) och nätverksanslutningar. Till förvaltningsuppgifterna hör att planera resursanvändningen för att undvika konflikter och störningar mellan program. Till skillnad från de flesta program, som slutför en uppgift och avslutas, körs ett operativsystem på obestämd tid och avslutas först när datorn stängs av.
Moderna flerprocessoperativsystem gör det möjligt för många processer att vara aktiva, där varje process är en ”beräkningstråd” som används för att utföra ett program. En form av multiprocessing kallas tidsdelning, vilket gör att många användare kan dela på datortillgången genom att snabbt växla mellan dem. Tidsdelning måste skydda mot störningar mellan användarnas program, och de flesta system använder virtuellt minne, där det minne eller ”adressutrymme” som används av ett program kan ligga i sekundärt minne (t.ex. på en magnetisk hårddisk) när det inte används omedelbart, för att vid behov bytas tillbaka till det snabbare huvudminnet i datorn. Detta virtuella minne både ökar det adressutrymme som är tillgängligt för ett program och hjälper till att förhindra att program stör varandra, men det kräver noggrann kontroll av operativsystemet och en uppsättning tilldelningstabeller för att hålla reda på hur minnet används. Den kanske mest känsliga och kritiska uppgiften för ett modernt operativsystem är tilldelningen av CPU:n. Varje process tillåts använda CPU:n under en begränsad tid, som kan vara en bråkdel av en sekund, och måste sedan ge upp kontrollen och bli avstängd tills nästa tur. Växling mellan processer måste i sig använda CPU:n samtidigt som alla processernas data skyddas.
De första digitala datorerna hade inga operativsystem. De körde ett program i taget, som hade kontroll över alla systemresurser, och en mänsklig operatör tillhandahöll de specialresurser som behövdes. De första operativsystemen utvecklades i mitten av 1950-talet. Det var små ”supervisorprogram” som tillhandahöll grundläggande I/O-operationer (t.ex. kontroll av hålkortsläsare och skrivare) och som förde räkenskaper över CPU-användningen för fakturering. Supervisorprogrammen gav också möjlighet till multiprogrammering så att flera program kunde köras samtidigt. Detta var särskilt viktigt för att dessa tidiga maskiner som kostade flera miljoner dollar inte skulle vara inaktiva under långsamma I/O-operationer.
Datorerna fick kraftfullare operativsystem på 1960-talet i och med uppkomsten av tidsdelning, som krävde ett system för att hantera flera användare som delade CPU-tid och terminaler. Två tidiga tidsdelningssystem var CTSS (Compatible Time Sharing System), som utvecklades vid Massachusetts Institute of Technology, och Dartmouth College Basic System, som utvecklades vid Dartmouth College. Andra flerprogrammerade system var Atlas vid universitetet i Manchester, England, och IBM:s OS/360, förmodligen 1960-talets mest komplexa programvarupaket. Efter 1972 blev Multics-systemet för General Electric Co.’s GE 645-dator (och senare för Honeywell Inc.’s datorer) det mest sofistikerade systemet, med de flesta av de möjligheter till multiprogrammering och tidsdelning som senare blev standard.
Minidatorerna på 1970-talet hade begränsat minne och krävde mindre operativsystem. Det viktigaste operativsystemet under den perioden var UNIX, utvecklat av AT&T för stora minidatorer som ett enklare alternativ till Multics. Det blev allmänt använt på 1980-talet, dels för att det var gratis för universiteten, dels för att det utformades med en uppsättning verktyg som var kraftfulla i händerna på skickliga programmerare. På senare tid har Linux, en version av UNIX med öppen källkod som delvis utvecklats av en grupp som leds av den finske datavetenskapsstudenten Linus Torvalds och delvis av en grupp som leds av den amerikanske dataprogrammeraren Richard Stallman, blivit populärt på persondatorer såväl som på större datorer.
Förutom sådana generella system körs specialoperativsystem på små datorer som styr löpande band, flygplan och till och med hushållsapparater. Det är realtidssystem som är utformade för att snabbt reagera på sensorer och använda deras inmatningar för att styra maskiner. Operativsystem har också utvecklats för mobila enheter som smartphones och surfplattor. Apple Inc:s iOS, som körs på iPhones och iPads, och Google Inc:s Android är två framstående mobila operativsystem.
Från en användares eller ett tillämpningsprograms synvinkel tillhandahåller ett operativsystem tjänster. En del av dessa är enkla användarkommandon som ”dir” – visa filerna på en disk – medan andra är ”systemanrop” på låg nivå som ett grafikprogram kan använda för att visa en bild. I båda fallen ger operativsystemet lämplig tillgång till sina objekt, tabellerna med diskplatser i det ena fallet och rutinerna för att överföra data till skärmen i det andra. Vissa av dess rutiner, de som hanterar processorn och minnet, är i allmänhet endast tillgängliga för andra delar av operativsystemet.
Högre tiders operativsystem för persondatorer har ofta ett grafiskt användargränssnitt (GUI). Det grafiska gränssnittet kan vara en integrerad del av systemet, som i de äldre versionerna av Apples Mac OS och Microsoft Corporations Windows OS; i andra fall är det en uppsättning program som är beroende av ett underliggande system, som i X Window-systemet för UNIX och Apples Mac OS X.