Operating system
Operating system (OS), programma dat de bronnen van een computer beheert, met name de toewijzing van die bronnen aan andere programma’s. Typische hulpbronnen zijn de centrale verwerkingseenheid (CPU), computergeheugen, bestandsopslag, invoer-/uitvoerapparaten (I/O) en netwerkverbindingen. Tot de beheerstaken behoort het plannen van het gebruik van hulpbronnen om conflicten en interferentie tussen programma’s te voorkomen. In tegenstelling tot de meeste programma’s, die een taak voltooien en afsluiten, draait een besturingssysteem voor onbepaalde tijd en wordt het pas afgesloten als de computer wordt uitgeschakeld.
Moderne multiprocessing besturingssystemen maken het mogelijk dat vele processen actief zijn, waarbij elk proces een “draad” van berekeningen is die wordt gebruikt om een programma uit te voeren. Een vorm van multiprocessing heet time-sharing, waarbij vele gebruikers de toegang tot de computer kunnen delen door snel tussen hen te schakelen. Tijddeling moet voorkomen dat de programma’s van de gebruikers elkaar storen, en de meeste systemen maken gebruik van virtueel geheugen, waarbij het geheugen, of de “adresruimte”, die door een programma wordt gebruikt in secundair geheugen (zoals op een magnetische harde schijf) kan verblijven wanneer het niet onmiddellijk wordt gebruikt, om op verzoek te worden teruggeswapt naar het snellere hoofdgeheugen van de computer. Dit virtuele geheugen vergroot de beschikbare adresruimte voor een programma en helpt voorkomen dat programma’s elkaar storen, maar het vereist zorgvuldige controle door het besturingssysteem en een reeks toewijzingstabellen om het geheugengebruik bij te houden. Misschien wel de meest delicate en kritische taak voor een modern besturingssysteem is de toewijzing van de CPU; elk proces mag de CPU gedurende een beperkte tijd gebruiken, die een fractie van een seconde kan zijn, en moet dan de controle opgeven en opgeschort worden tot zijn volgende beurt. Het overschakelen tussen processen moet zelf de CPU gebruiken, terwijl alle gegevens van de processen worden beschermd.
De eerste digitale computers hadden geen besturingssystemen. Ze draaiden met één programma tegelijk, dat het commando had over alle systeembronnen, en een menselijke operator zorgde voor alle speciale bronnen die nodig waren. De eerste besturingssystemen werden ontwikkeld in het midden van de jaren vijftig. Dit waren kleine “supervisor-programma’s” die elementaire I/O-bewerkingen uitvoerden (zoals het aansturen van ponskaartlezers en printers) en rekeningen bijhielden van het CPU-gebruik voor de facturering. Supervisor-programma’s boden ook mogelijkheden voor multiprogrammering, zodat verschillende programma’s tegelijk konden draaien. Dit was vooral van belang om te voorkomen dat deze vroege machines, die miljoenen dollars kostten, inactief zouden zijn tijdens langzame I/O-bewerkingen.
In de jaren zestig kregen computers krachtigere besturingssystemen door de opkomst van time-sharing, waarvoor een systeem nodig was om meerdere gebruikers te beheren die CPU-tijd en terminals deelden. Twee vroege time-sharing systemen waren CTSS (Compatible Time Sharing System), ontwikkeld aan het Massachusetts Institute of Technology, en het Dartmouth College Basic System, ontwikkeld aan het Dartmouth College. Andere multiprogrammeerde systemen waren Atlas, aan de universiteit van Manchester, Engeland, en IBM’s OS/360, waarschijnlijk het meest complexe softwarepakket van de jaren zestig. Na 1972 werd het Multics-systeem voor de GE 645-computer van General Electric Co. (en later voor de computers van Honeywell Inc.) het meest geavanceerde systeem, met de meeste mogelijkheden voor multiprogrammering en time-sharing die later standaard werden.
De minicomputers van de jaren zeventig hadden een beperkt geheugen en vereisten kleinere besturingssystemen. Het belangrijkste besturingssysteem uit die periode was UNIX, ontwikkeld door AT&T voor grote minicomputers als een eenvoudiger alternatief voor Multics. Het werd op grote schaal gebruikt in de jaren 1980, deels omdat het gratis was voor universiteiten en deels omdat het ontworpen was met een set gereedschappen die krachtig waren in de handen van ervaren programmeurs. Meer recent is Linux, een open-source versie van UNIX, deels ontwikkeld door een groep onder leiding van de Finse informaticastudent Linus Torvalds en deels door een groep onder leiding van de Amerikaanse computerprogrammeur Richard Stallman, populair geworden op zowel personal computers als grotere computers.
Naast dergelijke systemen voor algemene doeleinden draaien er ook besturingssystemen voor speciale doeleinden op kleine computers die assemblagelijnen, vliegtuigen en zelfs huishoudelijke apparaten aansturen. Het zijn real-time systemen, die zijn ontworpen om snel te reageren op sensoren en hun inputs te gebruiken om machines te besturen. Besturingssystemen zijn ook ontwikkeld voor mobiele apparaten zoals smartphones en tablets. Apple Inc.’s iOS, dat op iPhones en iPads draait, en Google Inc.’s Android zijn twee prominente mobiele besturingssystemen.
Vanuit het oogpunt van een gebruiker of een toepassingsprogramma levert een besturingssysteem diensten. Sommige van deze diensten zijn eenvoudige gebruikerscommando’s zoals “dir”- de bestanden op een schijf weergeven – terwijl andere diensten “systeemaanroepen” op laag niveau zijn, die een grafisch programma kan gebruiken om een afbeelding weer te geven. In beide gevallen biedt het besturingssysteem de juiste toegang tot zijn objecten, in het ene geval de tabellen met schijflocaties en in het andere geval de routines om gegevens naar het scherm over te brengen. Sommige routines, die voor het beheer van de CPU en het geheugen, zijn in het algemeen alleen toegankelijk voor andere delen van het besturingssysteem.
Huidige besturingssystemen voor personal computers bieden gewoonlijk een grafische gebruikersinterface (GUI). De GUI kan een intrinsiek onderdeel van het systeem zijn, zoals in de oudere versies van Apple’s Mac OS en Microsoft Corporation’s Windows OS; in andere gevallen is het een reeks programma’s die afhankelijk zijn van een onderliggend systeem, zoals in het X Window systeem voor UNIX en Apple’s Mac OS X.