Multimedia

Het vorige deel: Deel 3b: Afbeeldingen digitaliseren


3.3 Operating systems

In het eerste deel heb je gezien wat microcontrollers, embedded systemen en firmware zijn en wat ze doen. De elektronica slaagt erin inkomende signalen van sensoren of invoer van mensen te digitaliseren. In grotere digitale systemen zoals laptops, desktopcomputers, tablets, smartphones enz. zijn zoveel onderdelen of modules aanwezig dat er meer nodig is dan een enkelvoudige chip of controller voor de verwerking.

“An operating system is the level of programming that lets you do things with your computer. The operating system interacts with a computer's hardware on a basic level, transmitting your commands into language the hardware can interpret. The OS acts as a platform for all other applications on your machine. Without it, your computer would just be a paperweight.”1

3.3.1 OS en API

Een computer is eigenlijk niet veel meer dan een krachtige rekenmachine. Het Engelse “to compute” betekent niet meer of minder dan “berekenen”. Het rekent met nullen en enen en sluits die door een reeks processors (verwerkers) en circuits. In vergelijking met een microcontroller of SoC (zie deel 1) is de laptop, tablet, smartphone of desktopcomputer waarmee je werkt, vooral bedoeld als een zeer veelzijdig toestel. Je moet het voor meerdere taken kunnen inzetten. Het is geen ijverige werkmier of honingbij die voor één specifieke taak wordt ingezet. Een OS of operating system maakt het mogelijk om complexe programma's uit te voeren die gebruik maken van de aanwezige hardware. De mogelijkheden van de hardware vormen vaak de grens waar software aan gebonden is. Een operating software is over het algemeen niet geprogrammeerd in de aanwezige chips of hardware, want dan zou een operating system weinig flexibel zijn. Besturingssystemen zoals het bekende Linux, Mac OS X, Windows... verschijnen in de vorm van te installeren software.

Cool, maar wat doet zo'n besturingssysteem nu eigenlijk. Vergelijk het met de manager in een bedrijf. Een OS (vanaf nu gebruiken we gemakshalve de afkorting OS, van 'operating system' of 'besturingssysteem') bekijkt welke taken aan de gang zijn en verdeelt de middelen die hiervoor beschikbaar zijn, zoals het RAM-geheugen (het tijdelijke werkgeheugen dat wordt gewist als je het toestel uitschakelt), de benodigde opslagruimte, toegang tot randapparatuur, rekenkracht van de processor... In het ideale geval zorgt het OS ervoor dat iedereen (elke gebruiker, elk stuk software...) zijn taak naar wens kan uitvoeren en het systeem niet crasht wegens overbelast.

Een programmeur (of een groep) die een programma schrijft voor een specifieke taak, moet niet van nul beginnen. Hij beschikt reeds over een aantal in het systeem aanwezige functies of mogelijkheden. Vergelijk het naar analogie even met iemand die een huis bouwt: je moet niet zelf je bakstenen bakken, planken zagen, kalk blussen of je eigen truweel smeden. Je kan heel eenvoudig bestaande elementen inzetten om het gewenste eindresultaat te bereiken. De vergelijking loopt uiteraard mank. Maar zonder twijfel heb je die standaardfunctionaliteit bij een digitaal systeem al wel eens opgemerkt. Het OS zorgt er voor dat een softwareontwikkelaar niet rechtstreeks code moet schrijven om bepaalde invoer- of uitvoerapparaten aan te spreken of bestanden te openen of bewaren. Het OS vormt een eenvoudige laag (een interface) tussen de software en de hardware. Denk terug aan de tekening bij het einde van het eerste deel (deel 0!). De grens tussen elke laag in een digitaal systeem (in dit geval tussen de lagen “logic” en “io”, en daarnaast de lagen “logic” en “storage”) vormt een interface, een grens waar beide lagen met elkaar kunnen communiceren. De interface tussen software en hardware heet de API of Application Programming Interface.

Een voorbeeldje: wanneer je onder Mac OS X een bestand wil openen, krijg je in zo wat elk programma een gelijkaardig dialoogvenster te zien, met dezelfde functionaliteit. Die mogelijkheden om bestanden te openen, te bewaren, af te drukken... worden geleverd door de API van het OS. Cool of verwarrend?

Het printdialoogvenster in LibreOffice onder Mac OS X.



Het printdialoogvenster in Voorvertoning onder Mac OS X.

De meeste programma’s gebruiken dezelfde dialoogvensters en bijna identieke knoppenbalken. Programmeurs maken namelijk gebruik van de api’s die het besturingssysteem biedt. Een API maakt het immers mogelijk om op eenvoudige wijze systeemtaken (bestanden openen, opslaan, afdrukken) uit te voeren. De programmeur schrijft bijvoorbeeld een stuk code dat het print-dialoogvenster van Windows opent.

Omdat niet alleen de processor, maar ook het besturingssysteem en de corresponderende api’s verschillen, is het niet zonder meer mogelijk om een Windowsprogramma op pakweg een Mac OS X- of Linuxmachine te installeren en omgekeerd.

Heel wat ‘programmeurs’ gebruiken een visuele IDE (Integrated Development Environment). Daarin kunnen ze grafisch aan de slag volgens het wysiwyg-principe (what you see is what you get). In zo’n omgeving kan de ontwikkelaar bedieningselementen zoals vensters, knoppen, menubalken enzovoort naar zijn ontwerpvenster slepen en de nodige functionaliteit programmeren. De ontwikkelaar moet zorgen voor een gemakkelijk te bedienen gui (Graphical User Interface) zoals vensters, knoppen enz. en die bedieningselementen moet hij laten ‘samenwerken’ met achterliggende verwerkings- en opslagfuncties. Wanneer de gebruiker bijvoorbeeld op een knop drukt, leest het programma gegevens uit een databank of bestand in of kan het nieuwe gegevens opslaan. Voor Windows en Mac OS X bestaan IDE’s die standaard voorzien zijn van toegang tot de API-functies van het besturingssysteem en de standaard-gui-elementen (knoppen, vensters, menu’s). Een programmeur kan ook gebruikmaken van een platformonafhankelijke IDE, bijvoorbeeld Qt, waarin hij codes kan schrijven voor meerdere besturingssystemen. De ide neemt in dat geval de vertaalslag voor de verschillende systemen voor zijn eigen rekening. Daarnaast kan een ontwikkelaar zich ook bedienen van een widget toolkit, een widget library of gui toolkit. Zo’n toolkit is een stuk software dat de programmeur de mogelijkheid biedt om vensters, menubalken, knoppen en andere gui- elementen in zijn code op te nemen. Sommige van deze toolkits (bijvoorbeeld gtk) hebben ‘huiseigen’ dialoogvensters voor de gecompileerde programma’s.

3.3.2 Open en gesloten besturingssystemen bij de vleet

Het miniaturiseren van de computer en zijn onderdelen heeft ertoe geleid dat de computer is uitgegroeid tot een product dat vooral sinds de jaren 1990 in zowat elke huiskamer staat. Niet alleen de hardware, maar ook de programma’s zijn een bron van inkomsten voor firma’s. Naast commerciële software, waarbij de gebruiker enkel de gecompileerde versie kan kopen maar niet de originele broncode, bestaat er ook een tweede circuit, waarbij eveneens de broncodes beschikbaar worden gesteld. Deze opensourcesoftware is een doorn in het oog van veel commerciële softwareontwikkelaars.

Via internet werken ontwikkelaars over heel de wereld samen aan de succesvolste opensourceprogramma’s, tegenwoordig vaak via een open softwareplatform dat speciaal is bedoeld om met groepen mensen aan dezelfde code te werken nl. GIT, zogenaamde “versie controle beheer” -software. De gebruikers downloaden de gecompileerde versie, en installeren en gebruiken die software gratis. Ontwikkelaars duiken in de code en het is zelfs toegelaten de code voor andere doeleinden te gebruiken of er blokjes code uit te gebruiken. Zo lang ze de originele auteur maar blijven vermelden ... en dat is niet meer dan normaal, toch?

Een van de belangrijkste opensourceprojecten is gnu/Linux. Dit besturingssysteem werd als hobby ontwikkeld door Linus Thorvalds (1969) als alternatief voor Microsoft Windows. Hij gooide de basiscode van zijn systeem in 1991 op het internet. Sindsdien werken wereldwijd ontwikkelaars en bedrijven aan verbeteringen en uitbreidingen van het systeem. Om programmeurs die elkaar niet persoonlijk kennen via internet met elkaar te laten samenwerken en overlappingen te voorkomen, werden versiecontrolesystemen ontwikkeld. Dit zijn softwareprogramma’s die het beheer van de code automatiseren en controleren. Daar de code vrij is, is het aan anderen toegestaan hun eigen versie te schrijven en publiceren. Linux wordt vooral op internetservers en door kenners gebruikt. Sinds de jaren negentig van de 20e eeuw beheerst het besturingssysteem Windows van Microsoft de markt van de ‘personal computers’. Microsoft sluit hiervoor overeenkomsten met producenten en leveranciers, zodat nieuwe computers steevast geleverd worden met een installatie van Windows.

Een alternatief voor Windows is de Applecomputer, met het Mac OS-besturingssysteem. Daarnaast bestaan er nog tal van kleine besturingssystemen, vaak hobbyprojecten van individuele ontwikkelaars of ‘community’s’ (groepen van ontwikkelaars die zich organiseren via internet), en professionele systemen op basis van UNIX, een besturingssysteem dat het levenslicht zag in Bell Labs (Bell Telephone Laboratories) in 1969. Een besturingssysteem is in werkelijkheid een stuk software dat bij het starten van de computer in het geheugen wordt geladen. Hierdoor kunnen andere programma’s die voor dat systeem zijn geschreven op een afgesproken manier bepaalde functies van de computer aanspreken en gebruiken. Om dit mogelijk te maken bevat het systeem zogenaamde api’s (application programming interface) of door het systeem vastgelegde codes of functies die je vanuit je eigen code kunt oproepen.

Klassieke ‘desktopprogramma’s’ bestaan vaak uit duizenden, zo niet honderdduizenden regels code. Voordat die code door een computer uitgevoerd kan worden, moet ze – zoals eerder werd gezegd – worden gecompileerd. Dit wil zeggen dat de code door een stuk software (de compiler) in machinetaal (nullen en enen) wordt omgezet. De gecompileerde code kan rechtstreeks door de processor worden uitgevoerd.

Het succes van GSM's en later smartphones en tablets deed de nood ontstaan aan mobiele compacte besturingssystemen. Het is een zeer veranderlijke wereld. Mobiele besturingssystemen verdwijnen al even snel van de markt als de repsectieve merken die ze gebruiken. Een populaire systemen zoals Symbian, Windows Mobile, Palm OS, webOS, Maemo, MeeGo, LiMo… worden niet langer ontwikkeld. Op dit moment zijn Android, Apple iOS, Windows Phone, BlackBerry, Firefox OS, Sailfish OS, Tizen en Ubuntu Touch OS in gebruik. Mobiele toestellen met Android overheersen op dit moment (anno 2015) de markt. Android is een open source besturingssysteem ontwikkeld door Google Inc. op basis van de Linux-kernel. De open source-licentie heeft ertoe geleid dat ook andere fabrikanten het OS inzetten op hun toestellen. Google bundelt Android met een reeks closed source-applicaties zoals Google Play, Google Music, Google Search…2

Interesse in de geschiedenis van Operating Systems? Dan vormen de volgende pagina's een leuke intro:

3.3.3 Basisbesturing: BIOS, UEFI, firmware en bootloader

Je doet het natuurlijk niet, want als je een computer koopt in een standaard computerwinkel of mediaketen, koop je het toestel met een kant-en-klaar geïnstalleerd besturingssysteem. Een PC of laptop komt met Windows, een Applecomputer met Mac OS X. Bij tablets of smartphones stellen we ons nog minder vragen: een iPad of iPhone komt met iOS, een andere tablet of smartphone met Android of Windows. Als je een desktopcomputer zelf samenstelt, moet je het besturingssysteem zelf nog installeren. Toch toont zo'n OS-loze computer ook de nodige output als je hem opstart. Je kent het heus wel van op een Windowstoestel. Bij het opstarten kan je één of andere functietoets indrukken om in een setup- of bootscherm terecht te komen. Hetzelfde geldt wanneer je voor de eerste keer een Raspberry Pi aan je televisiescherm koppelt. Wat je op dat moment te zien krijgt is de firmware. De firmware is een interface die zich als een dun schilletje over de hardware heen legt. Het vormt dus geen onderdeel van het besturingsysteem zelf. Het doel van dit firmwareprogramma is te controleren of alles ok is met de hardware. Zo'n beetje als de conciërge van een winkel of school die 's morgens de deuren opent en alles nog eens controleert om te zien of zich nergens problemen hebben voorgedaan. Op die manier controleert de firmware of de processor, het geheugen, de schijfstations en poorten geen fouten vertonen. Op een Mac heet deze firmware UEFI (Unified Extensible Firmware Interface)4, op een Windowstoestel sprak men tot voor kort steevast over het BIOS (Basic Input Output System)5.

Na de firmware laat standaard de bootloader die op zoek gaat naar beschikbare besturingssystemen (op de harde schijf, in een schijfstation, op een USB-stick). Op de meeste systemen is slechts één besturingssysteem aanwezig, vindt de bootloader er meerdere dan laat hij de gebruiker de keuze welk systeem hij wil opstarten.

3.4 Software en SaaS

Software? Over software valt heel wat te zeggen. Software bestaat in maten en gewichten: van dure professionele pakketten tot al even professionele open source software waarvoor je niets hoeft de betalen. In Deel 6 bekijken we software vanuit multimediaperspectief. We gebruiken software voor het verwerken en bewerken van tekst, drukwerk, beelden, film, animatie, 3D, audio...

Meer en meer software werkt online of maakt op zijn minst de combinatie tussen offline en online mogelijkheden. Meer en meer zien commerciële bedrijven hun software niet als een te verkopen afgewerkt product, maar als dienstverlening (SaaS= software as a service). De software staat in de “cloud” en kan, mits je over de juiste licentie beschikt (en voldoende betaalt), van waar ook gebruikt worden.

Heel wat softwaretoepassingen draaien volledig op het web: Gmail, Google Docs, Facebook enz. zijn enkele van die veelgebruikte online services. Die dienstverlening kan tegen betaling gebeuren of volkomen “gratis” zijn. De producent/leverancier haalt zijn inkomsten uit reclame die vaak op basis van de inhouden van de gebruiker gegenereerd worden.

Die evolutie naar het zien van software als het leveren van een dienst is overal aanwezig. Weinig eindgebruikers zijn nog bereid om een paar duizend euro (of zelfs een paar tientallen euro) te betalen voor één licentie op een bepaald softwareproduct. Die evolutie kent vermoedelijke meerdere oorzaken:

  1. De groei van het internet en de toegenomen snelheid door snelle verbindingen.

  2. De kracht van open source software: Waarom betalen als je even goed kan werken met een gratis product?

  3. Software die als “product” werd verkocht op bijvoorbeeld een CD-rom kon gemakkelijk gekopieerd worden. Software die je via een “huiseigen” installatieprogramma op je computer plaatst en bij elk gebruik de licentiegegevens online controleert, is veel minder makkelijk te kopiëren.

  4. Lang niet iedereen heeft alle functionaliteit nodig. Veel gebruikers zijn tevreden met kleine apps met een welbepaalde mogelijkheid. Kijk maar naar het succes van de appstores van Apple en Google.


1How Mac OS X Works, (http://computer.howstuffworks.com/macs/mac-os-x1.htm), geraadpleegd op 1 september 2015.

2"Mobile operating system", (https://en.wikipedia.org/wiki/Mobile_operating_system#World-Wide_Share_or_Shipments), Geraadpleegd op 8 september 2015.


5UEFI boot: how does that actually work, then? (https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/), geraadpleegd op 1 september 2015.

Operating systems in beeld



home