# Besturingssysteem

Een besturingssysteem (ook wel: bedrijfssysteem, in het Engels operating system of afgekort OS) is een programma (meestal een geheel van samenwerkende programma's) dat na het opstarten van een computer in het geheugen geladen wordt en de hardware aanstuurt. Het fungeert als medium tussen de hardware en de computergebruiker, met als opzet dat de gebruiker programma's op een gemakkelijke en efficiënte manier kan uitvoeren. Veelvoorkomende besturingssystemen zijn Unix, Microsoft Windows, Apple macOS, Linux, Apple iOS en Android.
Een besturingssysteem is een verzameling programma's die de interactie tussen systeemcomponenten beheren, zodat toepassingsprogrammeurs bevrijd worden van de noodzaak dergelijke functies in hun programma's op te nemen. Een toepassing is een programma dat een functie uitvoert die rechtstreeks nut heeft voor de gebruiker. Toepassingsprogramma's geven opdrachten aan het besturingssysteem om met de hardware te interageren.

## Geschiedenis

De geschiedenis van besturingssystemen loopt parallel met die van de hardware. Tanenbaum en Woodhull onderscheiden 4 fasen:
* De elektronica in computers van de eerste generatie (1945-1955) bestond uit elektronenbuizen. Dezelfde mensen stonden in voor het ontwerpen, bouwen, gebruiken en onderhouden van de computer. Programma's bestonden uit machinetaal, vaak in de vorm van bedrading. Verdeling van de werktijd werd geregeld door afspraken tussen de programmeurs onderling, en tijdens het werk had één programmeur de computer helemaal voor zich. In die context is een besturingssysteem overbodig.
* De tweede generatie (1955-1965) wordt gekenmerkt door het massaal gebruik van transistoren. Voor het eerst konden computers verkocht worden aan klanten, zodat er een scheiding ontstond tussen de functies van ontwerpers, bouwers, programmeurs en dergelijke. Deze computers werkten vaak met een batchsysteem: de computer leest opeenvolgende taken van een magneetband (batchbestand) en schrijft de resultaten naar een andere magneetband. Het klaarmaken van de inputband en het afdrukken van de resultaatband gebeurde op afzonderlijke machines.
* De opkomst van geïntegreerde schakelingen creëerde de mogelijkheid van multitasking, wat aanleiding gaf tot de derde generatie computers (1965-1980). In deze periode ontstonden veel nieuwe taken voor het besturingssysteem. Spooling maakte het mogelijk de invoer en uitvoer op dezelfde machine als het rekenwerk te laten plaatsvinden. Timesharing laat interactief gebruik van de computer door verschillende gebruikers toe, waarbij elke gebruiker de illusie krijgt de machine voor zich alleen te hebben. Dit creëerde ook de noodzaak van een gebruikersomgeving. Op het einde van de jaren 1960 ontstond het idee van Multics: een grootschalig besturingssysteem dat computerdiensten zou leveren aan een grote groep gebruikers, ongeveer zoals een nutsvoorziening in een stad. Hoewel Multics geen commercieel succes werd, bevatte het veel nieuwe ideeën die door latere besturingssystemen zijn overgenomen, zoals de organisatie van bestanden in mappen. Multics gaf ook aanleiding tot een bescheidener eenpersoonssysteem dat de naam Unix meekreeg en waarvan varianten zoals Linux tot vandaag (2021) een groot deel uitmaken van alle besturingssystemen in de wereld.
* Na 1980 kwam de vierde generatie op in de vorm van homecomputers, in het bijzonder de personal computer van IBM. De belangrijkste verandering in het besturingssysteem was de eis dat de computer zou kunnen gebruikt worden door mensen die niet alleen niets van computers wisten, maar ook niet bereid waren iets te leren. Omdat pc's vaak verbonden waren in lokale netwerken, ontstonden netwerkbesturingssystemen en gedistribueerde besturingssystemen.

## Kenmerken

Het besturingssysteem wordt meestal van een extern geheugen, bijvoorbeeld een harde schijf of een solid state drive (SSD), of als live-system vanaf een verwisselbaar medium zoals een USB-stick, diskette, cd-rom, dvd of (voor ingebedde systemen) een flashgeheugen gelezen. Een schijfloos systeem, dat wil zeggen een systeem zonder SSD of harde schijven, kan opstarten vanaf een netwerk in een zogenaamde Thin client-configuratie. De protocollen BootP en het nieuwere DHCP voorzien hierin.
Het besturingssysteem zorgt onder meer voor het starten en beëindigen van andere programma's, het regelt de toegang tot de harde schijf met het bestandssysteem, het beeldscherm, de invoer van gegevens en de communicatie met de randapparatuur. De andere programma's die gestart kunnen worden, heten applicaties. Zo'n applicatie maakt gebruik van het besturingssysteem door middel van een application programming interface (API). Deze API abstraheert de toegang tot de verschillende randapparatuur, zoals harde schijf, printer en beeldscherm.
Gebruikers kunnen van het besturingssysteem gebruikmaken door middel van een opdrachtregel, zoals MS-DOS of de UNIX-terminal, of een grafische gebruikersomgeving zoals Microsoft Windows of het X Window-systeem.

## Taken
### Hoofdtaken

* Het opstarten van het systeem; er wordt gezorgd dat alle benodigde bestanden worden geladen.
* Het verdelen van toegang tot systeembronnen (RAM-geheugen, opslag, printer etc.) tussen actieve programma's.
* Actieve programma's de mogelijkheid bieden een gebruikersinterface weer te geven. Vrijwel elk besturingssysteem heeft ook zelf een gebruikers-interface. Voorbeelden zijn de DOS-prompt en Windows Verkenner.
* Programma's uitvoeren. Het uit te voeren programma wordt naar het interne geheugen geschreven. De processor voert de opdracht uit.
* Communicatie met randapparatuur
** Invoer: via randapparaten zoals het toetsenbord en de muis moet correct verwerkt worden.
** Uitvoer: via randapparaten zoals de monitor en de printer, deze moeten de juiste instructies krijgen.
* Geheugenbeheer:
** Intern geheugen: indeling en gebruik ervan door een of meer applicaties.
** Extern geheugen: Organisatie voor opslag van gegevens en regeling voor het ophalen en wegschrijven van bestanden.

### Bijkomende taken in complexere systemen

* Multitasking: bepalen welk programma op welk moment moet draaien (als het besturingssysteem het toelaat dat meer programma's tegelijkertijd draaien).
* Gebruikersbeheer bij servers en multi-useromgevingen.
* Uitvoer van achtergrondprocessen.
* Energiebeheer, voornamelijk bij laptops en computers die op batterijen werken.

## Opstarten

Het is gebruikelijk het besturingssysteem na het starten van de computer te laden vanaf een harde schijf. Deze werkwijze geeft de mogelijkheid het besturingssysteem door een meer recente versie te vervangen, of zelfs een geheel ander besturingssysteem te kiezen. Het laden van een systeem vanaf een harde schijf was vroeger minder vanzelfsprekend.
Ook kan het besturingssysteem, net als de firmware, in chips gebrand worden. Dit werkt zelfs sneller dan het starten vanaf een harde schijf, en maakt de hardware compacter. Dit wordt toegepast bij veel mobiele apparaten, zoals personal digital assistants (pda's) en mobiele telefoons
Ook worden computers voorzien van een ingebed systeem, vaak inclusief een toepassingsprogramma. Het gaat dan meestal om een apparaat met slechts één doel, zoals de besturing van een wasmachine, een melkmachine, slagbomen, een weegbrug enz. Diverse besturingssystemen hebben hiervoor een speciale 'embedded' versie, een uitgeklede versie van het besturingssysteem.

### Personal computer

Het eerste programma dat na het inschakelen van een personal computer actief wordt, was tot 2006 het Basic Input/Output System (BIOS). Vanaf 2006 is dit geleidelijk vervangen door EFI, die anno 2020 gebruikt wordt door een overgrote meerderheid van moederbordfabrikanten.
Dit systeem vervult de taak de belangrijkste hardware te testen en vervolgens een besturingssysteem van een aangesloten medium te starten. In tegenstelling tot een besturingssysteem dat op de harde schijf staat, die je uit de computer kunt halen, staat het BIOS op een chip. Het BIOS kan dus niet van de computer verwijderd worden. Wel is het vaak mogelijk een andere versie op de chip te zetten (te 'flashen').

## Twee perspectieven

De functie van het besturingssysteem kan vanuit twee elkaar aanvullende standpunten worden beschreven: als een uitgebreide machine, of als een beheerder van hulpbronnen.

### Het besturingssysteem als uitgebreide machine

De onderdelen van de computerhardware bieden hun functionaliteit meestal aan via een complexe interface. De handleiding van Serial ATA, een standaard voor de communicatie met harde schijven, beslaat bijvoorbeeld honderden bladzijden. Een besturingssysteem verbergt die details achter de eenvoudige abstractie van een bestand dat door een toepassingsprogramma kan worden gecreëerd, gelezen, beschreven of verwijderd.

### Het besturingssysteem als beheerder van hulpbronnen

Het besturingssysteem controleert de toegang tot onderdelen van de hardware zodat de computer correct blijft werken zelfs als verschillende toepassingsprogramma's hetzelfde onderdeel gebruiken. Als verschillende programma's een tekst willen afdrukken op dezelfde printer, zorgt het besturingssysteem ervoor dat de teksten niet door elkaar worden afgedrukt, maar netjes na elkaar en op verschillende bladen papier.