Toen computers nog deden wat je dacht
Arnout van Kempen over rommelen in een digitale wereld.
Nog even nostalgie. In de tijd van de 8-bits computers, maar ook nog de eerste 16-bits computers, was het relatief simpel om een computer te doorgronden. Ook op vrij geavanceerde systemen als de IBM PC, die al met harde schijven, floppy drives, een enorm geheugen van wel 640K, grafische kaarten en vooral een echt operating system (ms-dos) kon werken, deed een computer toch vooral wat je dacht dat de computer deed.
Bij het starten werd door de POST gecontroleerd of alle onderdelen functioneerden, waarna de CPU het programma in het ROM begon uit te voeren waarmee een besturingssysteem, veelal ms-dos, werd geladen. Dit bestond uit de bestanden MSDOS.SYS met de kernel en IO.SYS met de standaard device drivers die, in samenspraak met het BIOS dat computerspecifiek was, voor de basis I/O zorgden. Vervolgens werden de shell COMMAND.COM, de specifieke device drivers via CONFIG.SYS en tenslotte een opstartscript in AUTOEXEC.BAT geladen en uitgevoerd.
Een programma dat een service van ms-dos nodig had, deed dat via een int 21h call. Maar als je als programmeur wist wat je deed, kon je ook een directe call op het BIOS doen, bijvoorbeeld via een int 13h call voor disk toegang. Via een TSR kon je daar nog je eigen functionaliteit aan toevoegen. Zo schreef ik in die tijd voor mezelf een anti-virus programma dat alle calls op int 13h monitorde, om verdachte activiteiten af te vangen en om het MBR te beschermen tegen aanvallen.
Dat werkte prachtig en gaf heel veel mogelijkheden. Als programmeur wist je exact wat je computer deed en het operating system was een prettige hulp, die je terzijde kon schuiven als je dat wilde.
Toen kwam MS Windows naar de PC, later gevolgd door bijvoorbeeld OS/2, MacOS (voor de Mac) en Linux (voor vrijwel ieder systeem).
Deze operating systems waren allemaal in meer of mindere mate multi-tasking en multi-user. En dan kan je niet hebben dat individuele gebruikers aan het besturingssysteem gaan rommelen, het passeren of zelfs gaan verbouwen. De CPU’s van Intel kregen protected mode, waarbij het operating system de kans krijgt om gebruikers een virtuele computer voor te schotelen, waar de gebruiker niet omheen kan. Wat de programmeur ziet is niet langer de echte computer, maar een virtualisatie van een computer, die door het operating system wordt beheerd.
Aardig om te bedenken voor wie het tot hier toe heeft volgehouden en van alles geleerd heeft over C en Rust: ik heb u een beetje voor de gek gehouden. Zoals iedere computer u voor de gek houdt. Wat je als programmeur denkt te zien, is prima. Daar moet je mee werken en je moet ook echt doen alsof dat de echte computer is. Maar dat is het niet. De echte computer blijft voor normale programmeurs, en dus zeker voor normale gebruikers, altijd buiten beeld. Wie nu nog grappen wil uithalen zoals ik dat vroeger kon doen met mijn TSR als anti-virus programma, zal zich bezig moeten gaan houden met kernel-programmeren. Ook leuk, maar wel heel specialistisch.
En ook niet echt nodig. Want alles wat je vroeger met ms-dos/IBM PC’s kon doen, kan je onder een modern operating system ook nog doen. Alleen: altijd via het O/S, met toestemming.
Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.
Gerelateerd
Over bits & bytes
Arnout van Kempen over rommelen in een digitale wereld.
En arrays dan?
Arnout van Kempen over rommelen in een digitale wereld.
Typecasting in COBOL
Arnout van Kempen over rommelen in een digitale wereld.
Gewone variabelen
Arnout van Kempen over rommelen in een digitale wereld.
Bestanden in soorten en maten
Arnout van Kempen over rommelen in een digitale wereld.