Besturingssystemen

Uit Wikibooks
Naar navigatie springen Naar zoeken springen

Doelstellingen[bewerken]

Onderstaande doelstellingen komen in meer of mindere mate aan bod.[1] De cursieve doelstellingen zijn praktijkoefeningen die aansluiten bij de theorie, maar die in dit Wikibook niet behandeld worden.

  • De functie van een controller en een driver toelichten.
  • Het onderscheid tussen systeemprogrammatuur en toepassingsprogrammatuur toelichten.
  • De functies van een besturingssysteem toelichten.
  • Het onderscheid tussen een clientbesturingssysteem en een serverbesturingssysteem toelichten en illustreren met enkele actuele besturingssystemen.
  • Aan de hand van een eenvoudig didactisch model de modulaire architectuur van een actueel besturingssysteem toelichten.
  • Het principe en de voordelen van multitasking en multithreading toelichten.
  • De betekenis en het nut van virtueel geheugen toelichten.
  • Een client besturingssysteem installeren en configureren volgens opgelegde vereisten.
  • Het belang van en de mogelijkheden om het client besturingssysteem up-to-date te houden toelichten.
  • Maatregelen om het verbruik van een computersysteem te beperken toelichten en uitvoeren.
  • Toepassingssoftware installeren, configureren en de-installeren.
  • Het belang van (automatische) updates van toepassingssoftware toelichten.

De uitleg is zo algemeen mogelijk gehouden, maar als je interesse hebt kan je enkele verschillen tussen Windows en Linux nalezen.

Voorbeelden[bewerken]

Er zijn verschillende manieren om besturingssystemen in categorieën te stoppen. Je kan vertrekken uit een merk of bedrijf of je kan de opsplitsing maken in client en server. Die opsplitsing is nogal beperkt en dus kan je nog verder opsplitsen. Sowieso blijkt het moeilijk te zijn om een strikte scheiding te maken tussen de verschillende besturingssystemen.

Merk/bedrijf[bewerken]

Client of server[bewerken]

De vaakst voorkomende opsplitsing volgens 'doel' is deze tussen client (bv. Windows 10, Ubuntu, Android) en server (bv. Windows Server 2016, Ubuntu Server,...):

  • een client OS is een besturingssysteem waar vaak maar één persoon tezelfdertijd gebruik van maakt, vaak rechtstreeks op de hardware waar het OS op is geïnstalleerd.
  • bij een server OS gaat het vaak om meerdere personen die op hetzelfde moment gebruikmaken van het systeem en dit vaak via een netwerk i.p.v. rechtstreeks op de hardware.

Je merkt al dat 'client' versus 'server' niet welomlijnd is: zo kan je op je Windows10 een ftp-serverprogramma installeren, zodat je bestanden kan delen met anderen. Maakt dit je Windows client dan plots een server? Of je kan bij je Ubuntu Server een grafische schil installeren: maakt het jouw server, dan ook een client?

Verder onderverdeling[bewerken]

Ter info geven we nog een verdere onderverdeling volgens "doel"[3]:

  • Desktop[4]: Windows = 80,15 % ; Mac OS 17,55 % ; Linux = 1,12 % ; Chrome OS = 0,25 %
  • Mobile[5]: Android = 63,03 % ; iOS = 35,78 % ; Windows = 0,67 % ; Samsung = 0,38 %
  • Tablet[6]: iOS = 74,41 % ; Android = 24,94 % ; Windows = 0,57 % ; Linux = 0,03 %
  • Onderling[7]: mobile = 32,11 % ; desktop = 60,06 % ; tablet = 7,83 %
  • Server: hier meer Linux dan bij de desktop.
    • Bestandsserver
    • Webserver[8]: Linux = 68,2 % ; Windows = 31,8 % ; OS X < 0,1 %
    • Supercomputers[9]: Linux = 99,6 % ; Unix = 0,4 % ; Windows = 0 %
  • Cloud: Ubuntu = 56,4 % ; andere Linux = 23,8 % ; Windows = 7,9 %[10]
  • Embedded. Een embedded system (ook wel ingebed systeem of geïntegreerd systeem) is een elektronisch systeem (hardware én software) dat is geïntegreerd in gebruiksartikelen of apparaten, met de bedoeling deze een vorm van intelligent gedrag te bezorgen. De essentie van een embedded system is dat er software zit ingebed in een hardware-apparaat. Bv. op smartphones en tablets, waar de GUI en het gebruik dicht aanleunt bij een desktopsysteem. Maar denk ook aan set-top boxes[11], routers, switches en audio engineering, waar Linux weer vaak wordt gebruikt[12].

Ook hier lopen de categorieën in elkaar over. Zo kan je smartphone, tablet en phablet apart bekijken, maar ook samennemen onder de noemer mobile of onder embedded. En voor de cloud zijn ook serverbesturingssytemen nodig.

Het marktaandeel van het ene "doel" t.o.v. het andere verschuift in de loop van de jaren: waar je vroeger met een telefoon enkel kon bellen en sms'en, kan je op een smartphone nu ook heel wat zaken doen die vroeger enkel op de desktop konden. Het totaal aantal desktops zal dus afnemen, maar het is niet zo dat hij ten dode opgeschreven is: sommige zaken gebeuren nog efficiënter dan bij de andere mogelijkheden.

De ontwikkelaars van besturingssystemen zoeken ook naar een manier om één te onderhouden software te hebben, die zich aangepast al naargelang de form factor. Dat scheelt ontwikkelkosten. Bij Microsoft staat dit bekend als Continuum[13] (in combinatie met Universal Windows Platform), bij Apple als Continuity en bij Ubuntu als Convergence. Synoniemen voor elkaar zijn het niet,[14] maar je merkt wel dat ze allen zoeken naar manieren om vloeiender over te gaan van de ene form factor naar de andere. Zo is het bij Continuum en Convergence de bedoeling dat als je je smartphone dan aansluit op een muis, toetsenbord en extern scherm, vanzelf de desktop-modus te voorschijn komt.

Architectuur[bewerken]

Architectuur OS
Toepassingsprogramma's
Window manager
Kernel met drivers
Hardware

Het besturingssysteem heeft een modulaire architectuur: het bestaat uit verschillende componenten die gelaagd kunnen voorgesteld worden. Hogere lagen maken gebruik van procedures uit de lagere lagen. In de toplaag worden opdrachten gegeven, de onderste laag bevat de details op het laagste niveau (de hardware om deze opdrachten uit te voeren). In de tabel staat een heel eenvoudig vierlagenmodel, terwijl je in de galerij kan zien hoe er het "in het echt" uitziet. De functies van een besturingssysteem die verder in dit Wikibook worden besproken, merk je vaak op in zo'n detailarchitectuur.

Zo'n lagenmodel is handig, omdat de verschillende types van gebruikers een OS anders bekijken. Zo bekijkt de eindgebruiker een computersysteem in termen van toepassingen (bv. een tekstverwerker). Deze toepassing of applicatie wordt in een bepaalde programmeertaal geschreven door een toepassingsprogrammeur. Hij maakt gebruik van de voorzieningen van het OS bij het ontwikkelen van de toepassing. Zo zal bv. een tekstverwerker een systeemaanroep doen naar het OS om een bestand te openen of om deze af te drukken. Het "openingsvenster" (als onderdeel van de window manager) of "het afdrukken" (als onderdeel van I/O) heeft de toepassingsprogrammeur niet zelf geschreven. Het zal dan uiteindelijk de printer driver zijn (als onderdeel van de kernel) die het bestand echt afdrukt op de printer (hardware).

Hardware[bewerken]

Geen software zonder hardware (bij het deel over het opstartproces wordt dieper ingegaan op het opstarten). Het besturingssysteem verdeelt de toegang tot systeembronnen tussen de actieve processen. De belangrijkste systeembronnen zijn:

  • Processor. Het is de verantwoordelijkheid van het besturingssysteem om te zorgen voor een optimale verdeling van de beschikbare verwerkingstijd tussen de verschillende toepassingen die gelijktijdig werken op een computer.
  • Intern geheugen. Een belangrijke taak van het OS is het toewijzen van (RAM-)geheugen voor het uitvoeren van een proces of instructie. Meer informatie lees je straks bij de geheugenbeheerder.
  • Randapparaten. Verzorgen van verkeer van (input) en naar (output) randapparaten.
    • 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.
  • Opslagmedia. Het besturingssysteem bepaalt waar gegevens geschreven worden, en zorgt er ook voor dat bijvoorbeeld het gevraagde bestand van de juiste plaats wordt opgehaald. Daarnaast wordt ook de beveiliging van de gegevens geregeld waaronder de toegangsrechten en machtigingen, het gemeenschappelijk gebruik en het vergrendelen van bestanden.

In de besproken functies en andere hoofdstukken (opslagbeheer, processor,...) zullen deze systeembronnen meermaals aan bod komen.

Kernel met drivers[bewerken]

Een kernel[15] is het meest centrale en meest onzichtbare onderdeel van een besturingssysteem, de kern die alle basisvoorzieningen verzorgt voor de andere delen van het besturingssysteem. De diensten van de kernel kunnen dus door andere delen van het besturingssysteem en computerprogramma's worden gebruikt d.m.v. een verzameling programma-interfaces die meestal system calls oftewel systeemaanroepen genoemd worden. Systeemprogrammatuur is dus software die nodig is voor het functioneren van het systeem, zoals software die zorgt voor het kopiëren van bestanden en die netwerkverkeer regelt. Deze software kan in de vorm van achtergrondprocessen zijn (bv. services/diensten/daemons). Bij functies wordt dit uitgebreider besproken.

Een driver of stuurprogramma is een specifiek stuk software dat een verbinding legt tussen de hardware (de controller) en het besturingssysteem. Dankzij de driver kan een programmeur op een uniforme manier het besturingssysteem aanspreken. Zo moet een programmeur van een tekstverwerker niet weten welke printer precies aanwezig is bij de eindgebruiker.

De controller (bv. memory controller, USB controller, Network interface controller) is dan een chip, een uitbreidingskaart of een losstaand apparaat dat communiceert met een randapparaat.

De windowmanager[bewerken]

Een windowmanager of vensterbeheerder, ook wel Windowing system of Desktop environment (DE), is software die de plaatsing en het uiterlijk van vensters afhandelt in een venstersysteem. Zo hebben de programmeurs minder werk en krijg je een consistent gebruik en uiterlijk binnen het OS.

Bij Mac en Windows is er altijd gekozen voor een gecontroleerd en beperkt aantal manieren voor interactie met, en weergave van vensters op een scherm. Dit t.o.v. Unix-achtige besturingssystemen, waar er meer dan 100 windowmanagers beschikbaar zijn (zo gebruikt Lubuntu een andere, lichtere window manager dan Ubuntu). Bij Android heb je stock Android (bv. de Nexus- en Pixel-lijn), fabrikanten die een aangepaste Android installeren ofwel een aangepaste Android die je zelf installeert.

Toepassingsprogramma's[bewerken]

Toepassingsprogramma's, toepassingsprogrammatuur of applicaties zijn algemene benamingen voor alle software die een voor de eindgebruiker (min of meer) nuttige toepassing heeft. Over het algemeen draaien toepassingsprogramma's 'op' (of 'onder') een bepaald besturingssysteem (d.i. systeemprogrammatuur).

Voorbeelden van applicaties zijn: tekstverwerker (zoals LibreOffice of Word), e-mailprogramma (zoals Thunderbird en Outlook) en mediaspelers (zoals VLC en Windows Media Player). Er bestaan ook steeds meer webapplicaties zoals Pixlr of de e-mailapplicaties van Outlook en GMail). De term apps wordt gebruikt voor toepassingsprogramma's die draaien op een smartphone, smartwatch, tablet of een ander mobiel apparaat.

Functies[bewerken]

Software...[bewerken]

... uitvoeren[bewerken]

Dit is waarschijnlijk de bekendste functie van een besturingssysteem: dankzij het OS kunnen we programma's opstarten. Dit komt o.a. neer op:

  • Het opstarten van het besturingssysteem zelf: er wordt gezorgd dat alle benodigde bestanden worden geladen. Meer info bij het opstartproces
  • Het uit te voeren programma staat vaak op een opslagmedium, dat veel te traag is om snel uit te voeren. Dus wordt het programma naar het snellere interne geheugen (RAM) geschreven. De processor voert de opdracht uit.
  • Actieve programma's de mogelijkheid bieden om een gebruikersinterface weer te geven (via de windowmanager), dit kan zowel grafisch (GUI) als via een commandolijn (CLI).

Dit uitvoeren is in drie puntjes opgesomd, maar er komt nog meer bij kijken, zoals zal blijken uit de andere functies van het OS.

... installeren[bewerken]

Het besturingssysteem komt vaak al out of the box met enkele toepassingsprogramma's, maar dat is vaak niet voldoende. Het systeem moet dus een mogelijkheid aanbieden om extra software te gebruiken:

  • Er bestaat portable software, waardoor je ze zonder een echte installatie kan starten (bv. vanaf een USB-stick). Een veelgebruikt platform voor Windows waarop portable software wordt aangeboden is PortableApps.com.
  • Je hebt een setupprogramma, dat je doorheen de installatie loodst. Bij sommige setups heb je beheerdersrechten nodig en wordt de software systeembreed geïnstalleerd, zodat ook andere gebruikers van het OS deze software kunnen gebruiken. Soms wordt een programma in de gebruikersmap geïnstalleerd en zijn er geen extra rechten nodig.
  • Je gebruikt een pakketmanagersysteem (PMS)[16] (ook bekend als store), een collectie van software om het proces van het installeren, upgraden, configureren en verwijderen van software van een computer gemakkelijker te maken. De stappen verlopen ongeveer als volgt:
    • De gebruiker vraagt de installatie van een bepaalde toepassing. Bij commerciële software moet mogelijks betaald worden.
    • De PMS bepaalt alle afhankelijkheden (sommige programma's hangen af van andere deelprogramma's of frameworks om te kunnen werken).[17]
    • De PMS haalt alle benodigde software op vanuit een repository (dit is een opslaglocatie vanwaar softwarepakketten gedownload kunnen worden, vaak te vinden op het internet).
    • De PMS installeert en configureert en vraagt soms interactie van de gebruiker (bij het installeren van een nieuwe kernel zal de PMS aanraden om het systeem opnieuw te starten ; de eindgebruiker moet akkoord gaan met een specifieke licentie).
    • De gebruiker gebruikt de software.

Bij het grote publiek is het PMS idee wellicht het bekendst geworden onder de App Store van Apple en Google Play in 2008. Later zijn er nog vele app stores bijgekomen die dit voorbeeld volgden, bv. Windows Store in 2012. Voor wie de geschiedenis goed heeft gevolgd, weet dat dit concept het eerst op grote schaal aanwezig was binnen de Linux distributies, al vanaf 1993! Enkele bekende pakketmanagers, waarvan sommige eerder voor de "gewone" eindgebruiker zijn bedoeld, terwijl andere eerder voor de IT'er handig zijn (bv. omdat zaken via de commandolijn kunnen worden bediend):

Eindgebruiker IT'er
Windows Windows Store Chocolatey
Mac OS Mac App Store HomeBrew
Linux GNOME Software apt en dpkg
Android Google Play F-Droid
iOS App Store

... updaten[bewerken]

Het up-to-date houden van software is belangrijk. Niet alleen voor de nieuwe mogelijkheden, maar ook voor het oplossen van bugs. Vooral als het gaat om security bugs.

Het belang van een up-to-date systeem
Begin augustus 2014 worden verschillende gebruikers van Synology-systemen getroffen door ransomware, waardoor hun bestanden versleuteld worden. Ze moeten aan de criminelen honderden euro's betalen om weer bij hun bestanden te kunnen. Er werd gebruik gemaakt van een kwetsbaarheid die al in december gedicht was. Wie DiskStation Manager had bijgewerkt naar de nieuwste versie, liep geen gevaar, aldus Synology. [18]

Na 13 jaar ondersteuning, stopt Microsoft in april 2014 met veiligheidsupdates. De FOD Financiën in België had zeven jaar de tijd om zich hierop voor te bereiden. Bij Financiën draaiden op dat moment echter nog 10.000 computers op het gepensioneerde Windows XP, wat hen kwetsbaar maakt voor hackers en virussen. Volgens StatCounter draaien wereldwijd nog behoorlijk wat pc's XP: 08/15=8% ; 09/18=2,51%! [19]


Om je software up-to-date te houden zijn er enkele mogelijkheden:

  • Je controleert zelf of er een nieuwe versie ter beschikking is. Maar vaak gebeurt dit niet of niet regelmatig genoeg.
  • De toepassing heeft zijn eigen updatemechanisme. Het nadeel is hier dat iedere toepassing dan zijn eigen updatemechanisme moet hebben en dat je als beheerder vaak een afzonderlijke goedkeuring per toepassing moet geven.
  • Het updaten van toepassings- en systeemprogrammatuur wordt uitbesteed aan het OS, meer specifiek aan een pakketmanager of App store. Het voordeel is dat dit centraal kan gebeuren.

Er is altijd een afweging die moet gemaakt worden, want een update kan ook nieuwe bugs met zich meebrengen. Hoe belangrijker de software voor een organisatie, hoe belangrijker het testen van zo'n update. Bij software die nog werkt, maar niet meer ondersteund wordt, moet altijd de afweging gemaakt worden of het niet beter is te upgraden naar de nieuwste versie (ook als je moet betalen) of naar alternatieve software moet uitwijken.

Het veilig houden van een OS betekent ook dat je als beheerder moet nagaan of alle geïnstalleerde software wel nog wordt gebruikt. Hoe meer software op een systeem staat, hoe groter de kans op lekken.

Gebruikersbeheer[bewerken]

Het kunnen aanmaken van gebruikers is belangrijk, zodat iedere gebruiker zijn eigen werkomgeving kan hebben. Er zijn verschillende types van accounts: beheerders (die bv. software kunnen installeren), gewone gebruikers (die vaak geen software kunnen installeren, maar wel een eigen werkomgeving hebben) en gasten (die kunnen gebruikmaken van de pc, maar na afmelden worden instellingen en documenten vaak gewist). Aan de gebruikers kunnen ook rechten worden toegekend, zodat de ene gebruiker niet zomaar toegang heeft tot de documenten van een andere gebruiker. De controle van deze toegang gebeurt door het OS.

Multiuser is een begrip dat gebruikt wordt als een besturingssysteem of een applicatie concurrente (tezelfdertijd) toegang toelaat van meerdere gebruikers van een computer. Zo zal een databank vaak meerdere gebruikers tezelfdertijd toegang kunnen verlenen. Ook bij een multiseat of een LTSP-systeem hebben meerdere gebruikers tezelfdertijd toegang. Merk op dat bv. een “gewone” Windows XP maar één gebruiker tezelfdertijd toeliet (single-user). Verwar multi-user dus niet met het feit dat je meerdere gebruikers kan aanmaken.

Energiebeheer[bewerken]

Samen met de toename van toestellen die op batterijen werken, wordt het ook belangrijker om het energieverbruik onder controle te houden. Enkele mogelijkheden:

  • Het OS zet het scherm op zwart bij niet-gebruik
  • Het OS kan het scherm dimmen
  • Het OS kan de processor (of zijn kernen) onderklokken of bepaalden kernen uitschakelen/laten idlen
  • Het OS zet het toestel in slaapstand (of suspend to RAM) na enkele minuten inactiviteit. De status van het toestel (oa. openstaande programma's en documenten) wordt dan in RAM bewaard, daarna wordt de stroom naar onnodige subsystemen afgesloten. Het RAM-geheugen verbruikt enkel nog net voldoende energie, om zijn inhoud niet te verliezen.
  • Een stapje verder is hibernation (of suspend to disk) waar de status van het toestel op permanente opslag wordt bewaard (bv. HDD of SSD). Het voordeel is dat deze permanente opslag geen energie verbruikt om zijn inhoud te bewaren. Het nadeel is dat het iets langer duurt om terug de oorspronkelijke status te krijgen, omdat permanente opslag trager is dan RAM-geheugen.
  • Een mengvorm is hybrid sleep (of suspend to both) waarbij zowel de slaapstand als hibernation wordt toegepast. Zolang de batterij van bv. een laptop het uithoudt is de slaapstand handig, maar als deze uiteindelijk toch leeg is, kan alsnog de status van de machine hersteld worden, dankzij hibernation.

Dit energiebeheer kan je via het OS naar de hand zetten. Je hebt er bv. onderstaande mogelijkheden, die je vaak verder kan verfijnen:

  • Energiebesparing: als je een harde schijf trager laat draaien of een CPU trager laat werken, dan verbruikt je systeem minder energie. Het scherm is ook een grote slokop, dus door deze te dimmen kan je ook veel besparen.
  • Hoge prestaties: het tegengestelde van energiebesparing.
  • Gebalanceerd: er wordt een evenwicht gezocht tussen het energieverbruik en de prestaties.

Multitasking en de scheduler[bewerken]

De vijf basistoestanden van een proces

Een computer/besturingssysteem lijkt op één moment met alles tezelfdertijd bezig: muziek afspelen, e-mail binnenhalen, foto uploaden, klok wijzigen, updates op de achtergrond starten, een bestand opslaan, een bestand openen,... Dat is echter maar schijn: op één bepaald moment is een (single) core in theorie maar bezig met één iets (het running proces). Maar door de snelheid waarmee de processor werkt lijkt het echter dat hij veel op één moment doet. Een 3 GHz core kan zo 3 miljard "dingen" per seconde doen!

Laten we uitgaan van 1 processor(kern), die dus maar één iets op één moment kan doen: er is dus één running proces. Nieuwe processen worden eerst ready: ze zijn geladen in het RAM-geheugen, maar kunnen op dat eigenste moment niet worden uitgevoerd door de processor: de processor(kern) is nl. al bezig met een ander proces (het running proces). Zo zullen er meerdere processen in deze ready-status zijn. Na een zekere tijd (timeout) kan het running proces de ready-status krijgen, zodat een ander ready-proces de kans krijgt om uitgevoerd (running) te worden.

Het kan dat dit running proces bv. komt aan een instructie dat een bestand opent. Voor de giga-snelle processor lijkt dit een eeuwigheid totdat dit bestand ingeladen is van het trage opslagmedium. Dit proces krijgt dan de status blocked: het heeft geen zin om het nog in de running-status te houden, omdat het toch niets kan doen, enkel wachten. Doordat dit proces de blocked-status krijgt, kan een ander ready-proces worden uitgevoerd en dus de running-status krijgen. Als het bestand is ingeladen, kan deze van de blocked- naar de ready-status.

Om het geheel te laten werken moet er dus een soort dienstregeling (scheduler) in de kernel zijn, die bepaalt welk proces op welk moment uitgevoerd mag/kan worden. Dit is een belangrijk onderdeel van de kernel, want een slechte dienstregeling zal ervoor zorgen dat de eindgebruiker een systeem als traag ervaart. De dienstregeling kiest dus welke toestand het best geschikt is en zal dus vooral wisselen tussen 'running', 'blocked' en 'ready'.

Multitasking is een methode om één processor schijnbaar meerdere taken (programma's of delen daarvan) tegelijkertijd te laten uitvoeren. Het besturingssysteem wisselt giga-snel tussen de verschillende actieve programma's. Bij onderstaand voorbeeld wordt bij de ene core gewisseld tussen de tekstverwerker en het e-mailprogramma en bij de andere core tussen de browser en antivirus. In het echt zijn er véél meer processen waartussen gewisseld moet worden.

Multitasking

Multithreading[bewerken]

Multithreading is een programmeermodel dat een grotere taak (het proces) opsplitst in meerdere kleinere taken (de threads), op een zodanige manier dat de threads afzonderlijk van elkaar kunnen worden uitgevoerd. Threads binnen één proces delen elkaars resources (bv. het geheugen), wat bij twee afzonderlijke processen (standaard) niet zo is.

Binnen één proces (of programma) kunnen zo verschillende taken van één proces "tegelijkertijd" op meerdere cores worden uitgevoerd. Zo krijg je een snelheidswinst. Een webbrowser kan bijvoorbeeld met behulp van threads meerdere taken tegelijk uitvoeren zoals het ophalen van een webpagina van een server en het afhandelen van de acties van de gebruiker in menu's of dialoogvensters.

Hieronder merk je een gelijkaardig voorbeeld zoals bij multitasking, maar hier gaat het om één proces (i.p.v. vier afzonderlijke), met vier threads. Het proces is een meet- en controleprogramma, met daarin een thread voor het bekomen van data, een voor de gebruikersinterface, een voor de netwerkcommunicatie en een voor het loggen. Door de aanwezigheid van twee cores, kunnen twee van de vier threads tezelfdertijd worden uitgevoerd. Zonder threads kan dit programma maar aan één core worden toegekend. De Apache HTTP server maakt gebruik van thread pools: een pool van listener threads om te luisteren naar binnenkomende aanvragen en een pool van server threads voor het behandelen van die aanvragen.

Multithreading

Zelfs als er maar een single core is, kan er met threads snelheidswinst zijn, omdat de scheduler sneller kan wisselen tussen threads van één proces, dan tussen afzonderlijke processen (bv. omdat het geheugen tussen threads gedeeld wordt, maar niet tussen afzonderlijke processen).

Programmeurs moeten goed nadenken bij gebruik van multithreading! Threads hebben nl. toegang tot hetzelfde geheugendeel en als de ene thread iets wijzigt, waarvan de andere niet weet, kan dit fouten opleveren. Bovendien kan een crash van één thread het volledige proces laten crashen!

Multitasking en multithreading lijken wel op elkaar, maar verwijzen duidelijk naar iets anders:

  • Multitasking verwijst naar meerdere programma’s, elk met hun eigen bronnen (resources, zoals bv. geheugen). Het is alsof er een kookwedstrijd is, waarbij elke kok zijn eigen ingrediënten en kookboek gebruikt.
  • Multithreading verwijst naar delen van één programma of toepassing, waarbij de bronnen (zoals het geheugen) gedeeld worden. Het is alsof meerdere koks hetzelfde kookboek aan het lezen zijn, hun ingrediënten delen en zijn instructies volgen (niet noodzakelijk vanaf dezelfde pagina).

De interrupt handler[bewerken]

Ter info een schematische voorstelling van een interrupt.

Een interrupt (letterlijk onderbreking) is een verzoek om aandacht van een hardwarecomponent aan de processor (er bestaat ook een software interrupt). Een interrupt handler zal alle aanvragen bijhouden en volgens een bepaalde prioriteit zo snel mogelijk afhandelen door de juiste routine te starten. Na deze routine moet het besturingssysteem zorgen dat de processor terug kan verderdoen met wat hij bezig was. Door de snelheid waarmee een processor werkt is al dit wisselen tussen routines/processen vaak onmerkbaar voor de eindgebruiker.

Twee voorbeelden om dit principe te illustreren:

  • Als je je muis beweegt, dan verwacht je dat het OS hier zo snel mogelijk op reageert, door de muiscursor op het scherm te bewegen. Hiervoor genereert de muis een interrupt, om het besturingssysteem op de hoogte te brengen van de actie van de eindgebruiker. Het is de interrupt handler die de muis-routine moet starten, zodat je muis ook op het scherm meebeweegt. Nadat de muiscursor op het scherm is verplaatst zorgt het OS dat de processor kan verderdoen waarmee hij bezig was.
  • Stel dat er (nieuwe) data via de netwerkadapter aangeleverd wordt. Als de processor moet wachten op data die binnenkomt, dan is dat voor hem een eeuwigheid. Het is gemakkelijker als de netwerkadapter (=NIC) het besturingssysteem op de hoogte brengt van nieuwe data (of zijn NIC-buffer die volzit) en dus een interrupt genereert. De processor hoeft dan niet te wachten, maar kan ondertussen andere zaken doen, totdat de interrupt handler een interrupt ontvangt van de netwerkadapter, waarop hij de juiste routine moet starten die de data van de netwerkadapter verwerkt.

De geheugenbeheerder[bewerken]

Virtueel geheugen combineert intern geheugen met andere opslagmedia

Met betrekking tot het (RAM-)geheugen zijn er bepaalde zaken die we verwachten:

  • Als een programma wordt opgestart zorgt het OS dat er niet alleen geheugen is gereserveerd voor het programma zelf, maar ook voor bepaalde datastructuren. Als je je tekstverwerker opstart en vervolgens een bestand opent, dan moet voor dit alles het nodige geheugen voorzien worden.
  • Bij het ontwerpen van een programma is het gemakkelijk om uit te gaan van veel geheugen, netjes aaneengesloten en voor jouw programma alleen. Dit is het virtueel geheugen. Gelukkig kan je volgens dit idee programmeren, maar 'in het echt' moet het OS wel voor volgende zaken zorgen:
    • Het fysieke RAM-geheugen kan te klein zijn om alle programma's te kunnen laden. In dat geval zal het OS een stuk van een ander opslagmedium (HDD, SSD,...) gebruiken als uitbreiding van het RAM-geheugen: de swap-ruimte of wisselgeheugen. Tijdelijk niet gebruikte gegevens uit het RAM-geheugen kunnen daar worden bewaard om zo meer werkgeheugen (RAM) vrij te houden voor belangrijkere zaken. Het voordeel is dat er zo kan worden verder gewerkt, het nadeel is dat het opslagmedium niet zo snel is als het RAM-geheugen.
    • Het adres in dat virtueel geheugen is niet hetzelfde als het fysieke adres, dus moet er een vertaling van het ene naar het andere gebeuren. Zo kan blijken dat de fysieke plaats versnipperd is en dus niet netjes aaneengesloten is.
    • Het fysieke geheugen is er niet voor één programma alleen, maar het moet gedeeld worden met andere processen, waarbij het ene proces niet zomaar toegang mag krijgen tot het geheugen van een ander proces.
  • Als de eindgebruiker een programma sluit, dan verwacht je dat het geheugen dat dit programma innam netjes terug wordt vrijgegeven.

Het is duidelijk dat een besturingssysteem geheugenbeheer moet voorzien, zodat alles beheersbaar kan verlopen.

Bronnen, noten en/of referenties
  1. (nl) De doelstellingen komen uit het leerplan D/2015/7841/003, d.i. het leerplan Toegepaste Informatica van de richting informaticabeheer, derde graad tso.
  2. In het tweakers.net-artikel "De lange weg naar Android 1.0" lees je meer over het parcours van Android.
  3. (en) Informatie over de marktaandelen: zie bv. de engelstalige wikipedia
  4. Global Stats, België, Desktop
  5. Global Stats, België, Mobile
  6. Global Stats, België, Tablet
  7. Global Stats, België, Desktop vs Mobile vs Tablet
  8. w3techs.com: Usage of operating systems for websites
  9. Supercomputers, bron TOP500. Zie deze afbeelding
  10. (en) thecloudmarket.com, gegevens op 11 september 2017.
  11. (nl) Bv. de Digicorder van Telenet, zie tweakers.net
  12. (nl) Zie 10 Voorbeelden van Linux-succes, Linux everwhere: routers and audio en Linux gebaseerde toestellen
  13. (nl) Zie ook de review van Tabletsmagzine: "Continuum: maak van je tablet of smartphone een Windows 10 desktop"
  14. (en) Op getwired.com kan je lezen over Continuum vs. Continuity – Seven letters is all they have in common
  15. (en) Enkele voorbeelden van kernelarchitecturen: De Linux kernel map, De linux kernel (Wikimedia Commons) en de Window NT architectuur
  16. Merk op dat Windows Update geen pakketmanager is: je kan er niet zomaar software mee installeren en bovendien zal deze enkel Microsoft programma's updaten (bv. de Windows-kernel, Internet Explorer en Microsoft Office).
  17. Voor diegene die een pakketmanager moeten onderhouden is het oplossen van afhankelijkheden geen gemakkelijk probleem. Dit staat bekend als de Dependency hell.
  18. (nl) Synology: ransomware treft alleen ongepatchte systemen 2014-08-06
  19. (nl) Windows XP maakt Financiën kwetsbaar 2014-08-09
Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.