Hoe computers werken

Ontdek wat er in een computer gebeurt als die een programma uitvoert. Leer de onderdelen van de Von Neumann-architectuur kennen en ontdek hoe bussen en apparaten die verbinden, hoe logische poorten en de processor instructies uitvoeren in de instructiecyclus en hoe programma’s worden omgezet in machinecode. Vergelijk werkgeheugen en opslag, ontdek waarom cachegeheugen computers snel maakt en hoe het besturingssysteem de computer opstart, programma’s in het geheugen laadt en alles laat samenwerken.

BeginnerLes 3 van 7 in Cursus Informatica: hoe computers, data, algoritmen en internet werken

Wat je leert

  1. Benoem de belangrijkste hardwareonderdelen van een computer, leg het principe van het opgeslagen programma achter de Von Neumann-architectuur uit en beschrijf hoe bussen en invoer- en uitvoerapparaten alles verbinden.
    • Benoem de hoofdonderdelen van een computer en het principe van het opgeslagen programma
      Maak onderscheid tussen hardware en software en beschrijf de Von Neumann-architectuur: een processor, één geheugen voor zowel instructies als gegevens, invoer en uitvoer en de verbindingen daartussen.
    • Leg uit hoe bussen adressen, gegevens en besturingssignalen overbrengen
      Beschrijf de adres-, data- en besturingsbus van de systeembus, volg hoe het geheugen wordt gelezen en beschreven en bereken hoe de busbreedte het adresseerbare geheugen en de overdrachtssnelheid begrenst.
    • Deel invoer- en uitvoerapparaten in en leg uit hoe ze met de processor zijn verbonden
      Deel apparaten in naar hun functie, leg de omzetting tussen analoge signalen en digitale gegevens uit en beschrijf hoe controllers, apparaatstuurprogramma’s, interrupts en directe geheugentoegang langzame apparaten laten samenwerken met een snelle processor.
  2. Laat zien hoe transistors en logische poorten met bits rekenen, benoem de onderdelen van de CPU, doorloop de instructiecyclus en leg uit waardoor de ene processor sneller is dan de andere.
    • Onderzoek met logische poorten hoe hardware met bits rekent
      Lees de waarheidstabellen van de logische basispoorten, bereken de uitvoer van een klein circuit en leg uit hoe poorten die uit transistors zijn opgebouwd getallen optellen en bits opslaan.
    • Benoem de onderdelen van de processor en beschrijf hun functies
      Beschrijf de besturingseenheid, de rekenkundige en logische eenheid, de algemene en speciale registers, de klok en de processorkernen en de taak van elk onderdeel tijdens de uitvoering van een programma.
    • Doorloop de instructiecyclus
      Volg de stappen die de CPU voor elke instructie herhaalt, houd de registers bij tijdens een kort programma en leg uit hoe sprongen en interrupts veranderen wat daarna wordt uitgevoerd.
    • Leg uit waardoor een processor sneller wordt
      Vergelijk de effecten van klokfrequentie, aantal processorkernen, cachegrootte en pipelining en schat hoe elk daarvan de tijd voor een taak verandert.
  3. Beschrijf machinecode en instructiesets, lees een kort programma in assembleertaal en leg uit hoe compilers, assemblers, linkers en interpreters broncode omzetten in een werkend programma.
    • Lees machinecode en assembleertaal
      Leg uit wat een machine-instructie bevat, waarom een instructieset programma’s aan een processorfamilie bindt en hoe assembleertaal machinecode leesbaar maakt.
    • Leg uit hoe compilers en interpreters broncode omzetten in werkende programma’s
      Vergelijk compileren en interpreteren, volg de stappen van bronbestand tot uitvoerbaar bestand en leg bytecode en virtuele machines uit en waarom hetzelfde programma op verschillende computers kan draaien.
  4. Vergelijk het hoofdgeheugen met de verschillende soorten secundaire opslag, leg de geheugenhiërarchie en het gebruik van cachegeheugen uit en kies geschikte opslag voor een taak.
    • Beschrijf het hoofdgeheugen en hoe het wordt geadresseerd
      Leg RAM en ROM, vluchtigheid, byteadressen en capaciteitseenheden uit en leg uit waarom een programma in het hoofdgeheugen moet staan om te worden uitgevoerd.
    • Vergelijk technieken voor secundaire opslag
      Leg uit hoe harde schijven, SSD’s, flashmedia, optische schijven, magneetband en cloudopslag gegevens bewaren en kies opslag op basis van capaciteit, snelheid, kosten, duurzaamheid en draagbaarheid.
    • Leg de geheugenhiërarchie en het gebruik van cachegeheugen uit
      Orden de niveaus van registers tot archiefopslag naar snelheid, grootte en kosten, leg uit waarom caches werken en bereken hoe cachetreffers en cachemissers de gemiddelde toegangstijd beïnvloeden.
  5. Beschrijf wat een besturingssysteem doet, hoe een computer opstart en hoe het besturingssysteem programma’s in het geheugen laadt, op de processor uitvoert en van elkaar gescheiden houdt.
    • Beschrijf de rol van het besturingssysteem
      Leg uit hoe het besturingssysteem de processor, het geheugen, de opslag en apparaten beheert, een gebruikersinterface en bestandssysteem biedt en gebruikers en programma’s beveiligt.
    • Volg hoe een computer opstart en een programma uitvoert
      Doorloop de opstartvolgorde, volg hoe het besturingssysteem een programma in het geheugen laadt en start en leg uit hoe virtueel geheugen programma’s gescheiden houdt en ze meer geheugen laat gebruiken dan is geïnstalleerd.

Hoe computers werken: uitleg

5 hoofdstukken

1

Computeronderdelen en de verbindingen ertussen

Een computer wordt gemakkelijker te begrijpen als je de taken van de onderdelen onderscheidt. Invoer brengt gegevens binnen, de processor volgt opgeslagen instructies, het geheugen levert de inhoud waarmee wordt gewerkt en uitvoer presenteert resultaten. De verbindingen zijn net zo belangrijk als de onderdelen: volg een adres, een waarde en een besturingssignaal om te zien hoe een processor het geheugen en apparaten bereikt. Bekijk daarna hoe langzamere apparaten aandacht vragen.

1.1 De onderdelen die een computer laten werken

Een computer ontvangt invoer, volgt instructies om die te verwerken, slaat gegevens op en produceert uitvoer. Deze functies gelden voor een laptop en voor een besturing die verborgen zit in een wasmachine. Het verschil zit in de taak en de aangesloten apparatuur.

Fysieke onderdelen en programma’s

Hardware is de fysieke apparatuur. Software bestaat uit programma’s en de gegevens waarmee ze werken. De CPU is de processorchip, niet de hele computerbehuizing. Een moederbord verbindt de CPU met RAM, opslag, een GPU, de voeding en apparaatpoorten. De GPU verzorgt het tekenen en ander werk waarbij vergelijkbare bewerkingen op veel waarden worden toegepast. Een telefoon combineert veel van deze functies in een systeem op een chip (SoC).

RAM bevat instructies en gegevens die op dat moment worden gebruikt. Een opslagstation bewaart programma’s en opgeslagen bestanden zonder stroom. Bij een computer met 16 GB geheugen en een SSD van 512 GB beschrijft de eerste capaciteit het RAM en de tweede de opslag. Een groter opslagstation levert niet meer werkgeheugen op.

Een programma opgeslagen als gegevens

De Von Neumann-architectuur heeft een CPU, hoofdgeheugen dat zowel instructies als gegevens bevat, invoer- en uitvoerapparaten en bussen die ze verbinden. John von Neumann beschreef dit ontwerp in het “First Draft of a Report on the EDVAC” uit 1945. Het centrale idee is het opgeslagen programma: instructies zijn binaire waarden in het geheugen, klaar om door de CPU te worden opgehaald.

Eerdere machines zoals ENIAC werden met schakelaars en kabels voor taken ingesteld. Door een nieuw programma te laden kan een computer met opgeslagen programma van taak veranderen zonder de bedrading aan te passen. De Manchester Baby voerde op 21 juni 1948 een programma uit in herschrijfbaar elektronisch geheugen.

Het geheugen kent niet aan elk patroon een betekenis toe. De byte 01000001 kan het getal 65, de ASCII-letter “A” of een deel van een instructie voorstellen. Wat de CPU of het programma met het patroon doet, bepaalt de betekenis. Bij het ophalen van een instructie behandelt de CPU het opgehaalde patroon als instructie.

Waarom de processor moet wachten

Instructies en gegevens delen de route tussen de CPU en het hoofdgeheugen. Het geheugen levert ze bovendien langzamer dan de CPU ze kan gebruiken. Deze beperking is het Von Neumann-knelpunt. Een snelle processor kan daardoor tijd kwijt zijn met wachten op de volgende waarde. Kleine, snelle caches bewaren bruikbare kopieën dicht bij de CPU en beperken veel van deze wachttijden.

OntwerpInstructies en gegevensNuttig gevolg
Von NeumannDelen het hoofdgeheugen en het pad ernaartoeEén geheugen bevat een wisselende combinatie van code en gegevens.
HarvardHebben afzonderlijke geheugens en padenEen instructie en een gegevenswaarde kunnen tegelijk worden opgehaald.

Kleine microcontrollers en signaalprocessoren gebruiken vaak een Harvard-ontwerp. Moderne CPU’s voor algemeen gebruik combineren de ideeën: gedeeld hoofdgeheugen, maar afzonderlijke niveau 1-caches voor instructies en gegevens.

Computers in andere apparaten

Een ingebed systeem voert een specifieke taak uit binnen een groter apparaat. Een thermostaat leest een temperatuursensor, verwerkt de meetwaarde en regelt de verwarming. Het opgeslagen programma blijft meestal in niet-vluchtig geheugen staan. De functies van processor, geheugen en invoer en uitvoer zijn nog steeds aanwezig, ook zonder toetsenbord, scherm of volledig desktopbesturingssysteem.

Belangrijkste punten

  • Hardware is fysieke apparatuur; software levert programma’s en gegevens.
  • De CPU is één onderdeel, apart van RAM, opslag en de computerbehuizing.
  • Een computer met opgeslagen programma haalt binaire instructies op die in het geheugen staan.
  • Een bitpatroon krijgt betekenis door de manier waarop het wordt gebruikt.
  • Caches verminderen het wachten dat ontstaat door het knelpunt tussen CPU en geheugen.

1.2 Hoe adressen, waarden en commando’s zich verplaatsen

Een processor heeft drie dingen nodig om het geheugen te gebruiken: een locatie, de over te dragen waarde en een commando dat het geheugen vertelt wat het moet doen. Als je deze functies uit elkaar houdt, kun je een busoverdracht veel gemakkelijker volgen.

Drie functies op een klassieke systeembus

Een bus is een gedeeld communicatiepad. In een klassieke parallelle systeembus dragen verschillende draden of printsporen tegelijk bits.

Onderdeel van de busWat wordt overgebrachtRichting bij een geheugentoegang door de CPU
AdresbusDe te gebruiken locatieVan de CPU naar het geheugen of een apparaat
DatabusEen instructie of gegevenswaardeNaar de CPU bij lezen; van de CPU af bij schrijven
BesturingsbusLees-, schrijf-, timing- en interruptsignalenHangt af van het signaal

Een adres duidt een locatie aan; het is niet de waarde die daar is opgeslagen. Adres 200 kan vandaag 7 bevatten en later 9, zonder dat het adres verandert. Een bruikbare vergelijking is een genummerde brievenbus: het nummer duidt de bus aan, terwijl de inhoud kan veranderen.

Volg een lees- en een schrijfbewerking

Om adres 200 te lezen, zet de CPU 200, binair 11001000, op de adresbus en stuurt een leescommando over de besturingsbus. Het geheugen geeft de waarde op die locatie, hier 7, terug via de databus. De CPU kopieert die naar een register.

Om 9 naar adres 201 te schrijven, zet de CPU 201 op de adresbus, 9 op de databus en een schrijfcommando op de besturingsbus. Het geheugen vervangt de inhoud van locatie 201. Als 201 over de databus zou worden gestuurd, zou de verkeerde waarde worden verstuurd; het adres en de inhoud hebben verschillende functies.

De adresbreedte begrenst het aantal locaties

Met n adresbits zijn er 2n verschillende adressen. Als elk adres één byte aanduidt, is dat ook het aantal adresseerbare bytes.

  • 16 bits geven 216=65.536 adressen, oftewel 64 KiB.
  • 32 bits geven 232=4.294.967.296 adressen, oftewel 4 GiB.
  • Een toename van 20 naar 21 bits verdubbelt de capaciteit van 1 MiB naar 2 MiB.

Elk extra bit verdubbelt het aantal combinaties. Als je het aantal bits verdubbelt van 16 naar 32, wordt het aantal locaties vermenigvuldigd met 216; het verdubbelt niet alleen. Deze berekening geeft een adresseringslimiet, niet de hoeveelheid RAM die werkelijk is geïnstalleerd.

De databreedte begrenst elke overdracht

Een 64-bitsdatapad draagt 8 bytes in één overdracht. Een 8-bitspad heeft vier overdrachten nodig om een waarde van 4 bytes over te brengen. Bandbreedte meet hoeveel gegevens per seconde kunnen worden verplaatst:

bandbreedte=bytes per overdracht×overdrachten per seconde

Bij 1 miljard overdrachten per seconde draagt een pad van 8 bytes 8 miljard bytes per seconde, oftewel 8 GB/s. De adresbreedte bepaalt hoeveel locaties kunnen worden aangeduid; de databreedte bepaalt hoeveel tegelijk wordt verplaatst.

Het woord van een CPU is de natuurlijke werkgrootte, meestal 32 of 64 bits. Een 64-bitsprocessor vereist niet dat elke verbinding 64 draden heeft. Het geïmplementeerde adresbereik kan ook minder dan 64 bits gebruiken.

Moderne verbindingen behouden dezelfde functies

Geheugenkanalen, PCI Express en USB vervangen één gedeelde bus door meerdere verbindingen. PCI Express en USB zijn serieel: bits reizen na elkaar over snelle draadparen. Adressen, waarden en commando’s worden in berichten verpakt. Ze duiden nog steeds een bestemming aan, dragen inhoud en coördineren de overdracht.

Belangrijkste punten

  • Een adres duidt een locatie aan; gegevens zijn de inhoud die wordt overgedragen.
  • Lees- en schrijfcommando’s worden als besturingssignalen overgebracht.
  • Een adres van n bits heeft 2ⁿ mogelijke waarden; bij adressering per byte is de capaciteit 2ⁿ bytes.
  • Elk extra adresbit verdubbelt het adresbereik.
  • Bandbreedte is gelijk aan het aantal bytes per overdracht vermenigvuldigd met het aantal overdrachten per seconde.
  • Seriële verbindingen dragen adresserings-, gegevens- en besturingsinformatie in berichten.

1.3 Gegevens invoeren in en uitvoeren uit een computer

Een invoerapparaat levert gegevens; een uitvoerapparaat presenteert een resultaat of zet het om in een handeling. De indeling beschrijft de rol van het apparaat in het systeem. Ze beschrijft niet hoe ingewikkeld het apparaat vanbinnen is.

Deel in naar de handeling

Toetsenborden, camera’s, microfoons, barcodescanners en sensoren leveren invoer. Schermen, printers, luidsprekers en actuatoren leveren uitvoer. Een actuator verandert iets fysieks, bijvoorbeeld door een klep te openen of een motor te laten draaien.

Sommige apparaten doen beide. Een touchscreen registreert aanrakingen en toont beelden. Een headset combineert een microfoon met luidsprekers. Een netwerkadapter verstuurt en ontvangt gegevens. Opslagstations voeren ook lees- en schrijfbewerkingen uit via invoer-uitvoercontrollers, maar hun belangrijkste doel is gegevens bewaren. Daarom vormen ze de afzonderlijke categorie secundaire opslag.

Een printer kan een processor bevatten die een pagina omzet in afdrukbare punten. De printer blijft een uitvoerapparaat vanwege wat die voor de computer doet. Een draadloze muis levert net als een muis met kabel invoer.

Zet continue signalen om in getallen

Geluid en temperatuur veranderen continu: het zijn analoge signalen. Een analoog-digitaalomzetter (ADC) meet een signaal met regelmatige tussenpozen en codeert de samples als getallen. Een digitaal-analoogomzetter (DAC) zet digitale waarden om in analoge uitvoer, zoals het signaal dat een luidspreker aanstuurt.

Voor één audiokanaal dat 44.100 keer per seconde wordt bemonsterd met 16 bits per sample:

44.100×16=705.600 bits per seconde

Dit is de ruwe gegevenssnelheid van de samples. Elke seconde bevat 44.100 metingen en elke meting heeft 16 bits nodig. Door bemonsteren en coderen kan een computer de opname opslaan en verwerken.

Hardwarecontroller, softwarestuurprogramma

Apparaten verbinden via poorten of draadloze verbindingen zoals USB, HDMI, Bluetooth of wifi. Een apparaatcontroller is een schakeling die communicatie op laag niveau afhandelt en registers beschikbaar stelt die de CPU kan lezen of beschrijven. Een apparaatstuurprogramma is software die verzoeken van het besturingssysteem vertaalt naar commando’s voor het apparaat. De controller is hardware; het stuurprogramma is software.

Laat apparaten aandacht vragen

Bij polling controleert de processor herhaaldelijk een statusregister. Dit is eenvoudig, maar een apparaat dat meestal niets doet, kan veel controles zonder nuttig resultaat veroorzaken.

Bij een interrupt geeft de controller een signaal wanneer aandacht nodig is. In het eenvoudige model van de instructiecyclus voltooit de CPU de huidige instructie, bewaart de onderbroken toestand en voert een interruptafhandelaar uit. Daarna herstelt de CPU de bewaarde toestand en gaat verder. Een toetsaanslag of een voltooide leesbewerking van een schijf kan deze reeks in gang zetten.

Mensen en veel apparaten handelen veel langzamer dan een CPU. Een persoon typt slechts enkele tekens per seconde, terwijl een processor miljarden instructies per seconde kan uitvoeren. Interrupts laten de CPU tussen gebeurtenissen door werken.

Bij een grote overdracht laat directe geheugentoegang (DMA) een apparaat of DMA-controller een blok rechtstreeks naar of vanuit RAM verplaatsen. De CPU bereidt de bewerking voor en werkt aan iets anders. Een interrupt bij voltooiing laat de CPU weten wanneer het blok klaar is. Door DMA hoeft de CPU niet elke byte te kopiëren; de CPU blijft wel betrokken bij het regelen en afronden van de overdracht.

Belangrijkste punten

  • Deel invoer en uitvoer in op basis van de handeling die voor de computer wordt uitgevoerd.
  • Een ADC codeert bemonsterde analoge invoer; een DAC produceert analoge uitvoer.
  • Een controller is hardware, terwijl een stuurprogramma software is.
  • Polling controleert herhaaldelijk; een interrupt geeft aan dat aandacht nodig is.
  • DMA draagt blokken over tussen een apparaat en RAM zonder dat de CPU elke byte kopieert.
2

Hoe een processor werk uitvoert

Binnen een processor vormen eenvoudige circuits samen een machine die een programma kan volgen. Begin met poorten die op bits werken en bekijk daarna de registers en besturingssignalen die een instructie door de CPU laten gaan. Een korte doorloop maakt de veranderende toestand zichtbaar. Klokfrequentie, processorkernen, caches en pipelines verklaren waarom het uitvoeren van hetzelfde nuttige werk op verschillende systemen verschillend veel tijd kan kosten.

2.1 Van schakelaars naar berekeningen

De kleinste bewerkingen van een computer komen voort uit circuits die schakelen tussen twee signaalniveaus. Een hoge spanning stelt 1 voor en een lage spanning 0. Deze niveaus staan voor bits; een chip herkent de betekenis van een foto of een zin niet.

Poorten zetten invoerbits om in uitvoer

Een transistor werkt als een elektronisch bestuurde schakelaar. Kleine groepen vormen logische poorten, elk met een vaste regel voor invoer en uitvoer. Een waarheidstabel vermeldt elke invoercombinatie en de bijbehorende uitvoer. Bij twee ingangen zijn er vier combinaties; in het algemeen zijn voor n ingangen 2n rijen nodig.

NIET keert de enkele invoerwaarde om. De poorten met twee ingangen werken als volgt:

ABENOFXORNANDNOR
0000011
0101110
1001110
1111000

EN vereist dat beide invoerwaarden 1 zijn. OF vereist minstens één, waarbij beide ook mogelijk zijn. XOR vereist verschillende invoerwaarden. NAND keert EN om; NOR keert OF om. Als je OF leest als “één maar niet allebei”, verwar je die met XOR.

Om (A AND B) OR (NOT C) uit te rekenen voor A = 1, B = 0, C = 0, werk je vanaf de ingangen naar buiten. A AND B geeft 0. NOT C geeft 1. Ten slotte geeft 0 OR 1 de waarde 1. Schrijf de tussenliggende uitvoerwaarden op, zodat de laatste poort de juiste invoer krijgt.

Poorten tellen binaire cijfers op

Een halve opteller ontvangt twee bits. De somuitvoer is XOR en de overdrachtsuitvoer is EN. Bij twee invoerwaarden 1 is het sombit 0 en het overdrachtsbit 1: het resultaat van twee bits is 10, oftewel 2.

Een volledige opteller ontvangt ook een overdracht uit de vorige kolom. Door deze circuits te koppelen kan een ALU langere getallen optellen. Volg 0110 plus 0011 vanaf rechts:

  1. De meest rechtse kolom geeft 1, zonder overdracht.
  2. De volgende kolom heeft twee 1’en: schrijf 0 en draag 1 over.
  3. De volgende heeft 1, 0 en overdracht 1: schrijf 0 en draag 1 over.
  4. De meest linkse heeft 0, 0 en overdracht 1: schrijf 1.

Het resultaat is 1001, oftewel 9. Een overdracht hoort bij de volgende kolom; als je die weglaat, verandert de waarde.

Poorten kunnen een bit bewaren

Terugkoppeling betekent dat de uitvoer van een circuit wordt teruggeleid naar de invoer. Kruislings gekoppelde NAND- of NOR-poorten vormen een latch die één bit bewaart zolang de stroom aanstaat. Een flipflop neemt een nieuw bit op bij een klokflank, zodat de veranderingen synchroon lopen met de klok van de processor. Registers gebruiken opslagcircuits die door de klok worden gestuurd. SRAM-cachecellen gebruiken latchachtige circuits; DRAM slaat lading op in condensatoren.

NAND en NOR zijn elk universeel: met elk poorttype afzonderlijk kun je elke logische functie bouwen. Als je beide NAND-ingangen met A verbindt, krijg je A NAND A, wat werkt als NIET A.

Dit zijn abstractielagen. Transistors vormen poorten; poorten vormen optellers, registers en besturingscircuits; die vormen een processor die instructies uitvoert. Een programmeur kan de instructielaag gebruiken zonder de schakelaars daaronder te ontwerpen.

Belangrijkste punten

  • Waarheidstabellen vermelden elke invoercombinatie.
  • OF omvat het geval waarin beide invoerwaarden 1 zijn; XOR sluit dat uit.
  • Bereken een circuit via de tussenliggende uitvoerwaarden van de poorten.
  • Een halve opteller produceert een XOR-som en een EN-overdracht.
  • Terugkoppeling slaat bits op; klokflanken sturen veranderingen in flipflops.
  • NAND en NOR zijn elk voldoende om elke logische functie te bouwen.

2.2 De werkende onderdelen van de processor

De CPU, of processor, voert de instructies van een programma uit. De besturingseenheid stuurt het werk aan, de rekenkundige en logische eenheid voert bewerkingen uit en de registers bevatten de waarden die direct nodig zijn. Een klok coördineert veranderingen in deze circuits.

Het werk aansturen en uitvoeren

De besturingseenheid haalt een instructie op, decodeert die en geeft besturingssignalen af. Ze kan het geheugen bijvoorbeeld opdracht geven een waarde terug te sturen, twee invoerwaarden voor de ALU selecteren en een register inschakelen om het resultaat op te slaan. De besturingseenheid coördineert de bewerking; de ALU voert de rekenkundige of logische bewerking uit.

Tot de ALU-bewerkingen behoren optellen, aftrekken, vergelijken, bitverschuivingen en bewerkingen met poorten zoals EN en XOR. Resultaten werken ook statusvlaggen bij. Een nulvlag geeft een resultaat van nul aan; een negatiefvlag legt een negatief resultaat vast. Een vertakking kan een vlag controleren om de volgende instructie te kiezen.

Registers bewaren de directe werktoestand

Registers zijn zeer kleine, snelle opslaglocaties in de processor. Een algemeen register bevat meestal één woord. Zo biedt x86-64 16 algemene registers voor gehele getallen en 64-bits ARM 31. Programma’s gebruiken die om waarden dicht bij de ALU te houden.

De processor uit het leerboek maakt de volgende functies zichtbaar:

RegisterFunctie
Programmateller, PCAdres van de volgende op te halen instructie
Geheugenadresregister, MARAdres voor de volgende lees- of schrijfbewerking in het geheugen
Geheugendataregister, MDRWaarde die net is gelezen of zo wordt weggeschreven
Instructieregister, CIRInstructie die wordt gedecodeerd en uitgevoerd
Accumulator, ACCWerkwaarde en ALU-resultaat in de leermachine

Het MDR wordt ook het geheugenbufferregister (MBR) genoemd. Het CIR wordt ook het instructieregister (IR) genoemd. Echte chips organiseren deze taken op complexere manieren, maar met het model kun je volgen hoe een instructie en de bijbehorende gegevens zich verplaatsen.

De PC bevat een adres, geen totaal van voltooide instructies. Een sprong kan de PC terugsturen om een lus te herhalen. MAR en MDR verschillen ook: een adres zoals 10 gaat in het MAR; de waarde op adres 10 gaat in het MDR.

Een klokcyclus is één tijdstap

De klokfrequentie telt pulsen per seconde en wordt gemeten in hertz (Hz). Een klok van 3 GHz produceert 3 miljard cycli per seconde. De duur van één cyclus is:

13.000.000.000 s≈0,33 ns

Een puls laat delen van een circuit een stap verder gaan. Sommige instructies hebben meerdere tijdstappen nodig en moderne processoren laten het werk aan meerdere instructies overlappen.

Meer dan één processorkern

Een processorkern beschikt over de besturing, rekeneenheid, registers en cache die nodig zijn om een instructiestroom uit te voeren. Vier kernen kunnen vier stromen tegelijk uitvoeren. Een programma heeft daar voordeel van als het werk over de kernen kan worden verdeeld; alleen al het hebben van vier kernen splitst niet elke taak op.

Een GPU heeft veel kleinere verwerkingseenheden die geschikt zijn om vergelijkbare bewerkingen op veel gegevens tegelijk uit te voeren. Pixels tekenen, video verwerken en sommige berekeningen voor machinaal leren hebben deze vorm. Een CPU is geschikt voor een bredere combinatie van instructies en beslissingen.

Denk aan een keuken: de besturingseenheid verdeelt de taken, de ALU voert ze uit, registers bevatten ingrediënten die direct voorhanden zijn en het geheugen levert meer. De CPU volgt bitpatronen mechanisch; de bruikbare betekenis komt van het programma.

Belangrijkste punten

  • De besturingseenheid coördineert bewerkingen; de ALU voert rekenkundige en logische bewerkingen uit.
  • Vlaggen leggen toestanden vast, zoals een resultaat van nul, voor latere vertakkingen.
  • PC, MAR, MDR, CIR en ACC bevatten verschillende delen van de huidige werktoestand.
  • Een klokcyclus is een tijdstap, niet noodzakelijk een voltooide instructie.
  • Meerdere processorkernen helpen bij werk dat parallel kan worden uitgevoerd.

2.3 Volg een instructie door de CPU

De instructiecyclus laat de onderdelen van de processor samenwerken om een programma uit te voeren. Elke cyclus haalt een instructie op, bepaalt de bewerking en voert die uit. Een doorloop legt de veranderingen in registers en geheugen vast, zodat de oorzaak van elk resultaat zichtbaar wordt.

Haal de instructie op

In de eenvoudige processor verloopt het ophalen als volgt:

  1. Kopieer de PC naar het MAR.
  2. Zet het adres op de adresbus en stuur een signaal om het geheugen te lezen.
  3. Ontvang de instructie via de databus in het MDR.
  4. Kopieer de instructie naar het CIR.
  5. Verhoog de PC naar de volgende instructie.

In de leermachine neemt elke instructie één locatie in, dus gaat de PC met 1 omhoog. Een processor met adressering per byte verhoogt de PC met de lengte van de instructie in bytes. Tijdens de uitvoering wijst de PC al voorbij de opgehaalde instructie.

Decodeer en voer uit

De besturingseenheid scheidt de operatiecode, die de bewerking aangeeft, van de operand, die een waarde, register of adres levert. Daarna stuurt de besturingseenheid de signalen die nodig zijn om de instructie uit te voeren. Een laadinstructie leest gegevens, een optelinstructie gebruikt de ALU, een opslaginstructie schrijft gegevens en een sprong verandert de PC. Sommige beschrijvingen noemen het wegschrijven van het resultaat een afzonderlijke fase: terugschrijven.

Doorloop een volledig programma

De leermachine heeft één accumulator. Hier gebruiken LOAD, ADD en STORE geheugenadressen als operanden.

Address  Instruction      Data address  Value
0        LOAD 10          10            7
1        ADD 11           11            5
2        STORE 12         12            0
3        HALT

Begin met PC 0. Door LOAD 10 op te halen gaat de PC naar 1. De uitvoering zet adres 10 in het MAR, leest 7 via het MDR en zet de ACC op 7. De operand 10 duidt een locatie aan; die is niet de geladen waarde.

Vervolgens wordt ADD 11 opgehaald en wordt de PC 2. Geheugenlocatie 11 levert 5. De ALU telt 7 en 5 op, zodat de ACC 12 bevat. Door STORE 12 op te halen gaat de PC naar 3. De uitvoering zet adres 12 in het MAR en waarde 12 in het MDR en schrijft daarna 12 naar die locatie. De ACC blijft 12. Ten slotte gaat de PC door het ophalen van HALT naar 4 en stopt de leermachine bij de uitvoering. Er zijn vier instructies uitgevoerd.

Vertakkingen vervangen het volgende adres

JUMP 0 zet tijdens de uitvoering 0 in de PC, ongeacht de vorige waarde. JUMPZ 6 springt alleen als de ACC nul is. Als die instructie van adres 4 is opgehaald, maakt het ophalen de PC eerst 5. De uitvoering zet de PC daarna op 6 als de ACC nul is; anders blijft de PC 5. Zo kan een reeks een route kiezen of een lus herhalen.

Interrupts en echte processoren

Op de grens tussen instructies controleert de CPU in dit model op interrupts. Om een interrupt af te handelen, bewaart de CPU de PC en andere werkregisters, voert de afhandelaar uit en herstelt daarna de bewaarde toestand. Het onderbroken programma gaat verder met de eigen waarden en het volgende adres.

Een CPU haalt niet een heel bronprogramma in één keer op. De CPU voert machine-instructies uit, vaak meerdere voor één instructie in de broncode. Moderne CPU’s laten intern werk overlappen en veranderen de volgorde, terwijl ze de vereiste resultaten van het programma behouden.

Belangrijkste punten

  • Bij het ophalen wordt de instructie via MAR en MDR in het CIR gelezen.
  • De PC wordt tijdens het ophalen verhoogd; de uitvoering van een sprong kan dat adres vervangen.
  • Een adresoperand moet worden gebruikt om de waarde te lezen die op dat adres is opgeslagen.
  • STORE schrijft de ACC naar het geheugen zonder de ACC te veranderen in deze leermachine.
  • Bij de afhandeling van een interrupt wordt de onderbroken werktoestand bewaard en hersteld.
  • Echte processoren laten werk overlappen terwijl ze de vereiste programmaresultaten behouden.

2.4 Waarom een programma eerder klaar is

De prestaties van een processor hangen af van het werk dat een programma nodig heeft en hoe snel de computer dat werk voltooit. Klokfrequentie, nuttig werk per cyclus, wachttijd en mogelijkheden voor parallel werk spelen allemaal een rol.

Klokfrequentie en een vast aantal cycli

Voor een taak waarvoor een bekend aantal klokcycli nodig is:

tijd=benodigde cyclicycli per seconde

Een taak die 6 miljard cycli nodig heeft, duurt 2 seconden bij 3 GHz en 1,5 seconde bij 4 GHz. In deze vergelijking blijft het aantal cycli gelijk. Bij verschillende processorontwerpen kan een programma een verschillend aantal cycli nodig hebben. Een chip van 3,5 GHz kan daarom beter presteren dan een chip van 4 GHz door meer nuttige instructies per cyclus te voltooien.

Hogere klokfrequenties gebruiken ook meer energie en produceren warmte. Thermische snelheidsbegrenzing verlaagt de klokfrequentie wanneer een processor te heet wordt. Dit helpt verklaren waarom prestatiewinst door meer komt dan het verhogen van het aantal gigahertz.

Processorkernen verdelen alleen het parallelle deel

Stel dat een taak op één processorkern 10 seconden duurt. Twee seconden moeten na elkaar worden uitgevoerd; acht seconden kunnen gelijkmatig over vier kernen worden verdeeld. Als we de overhead voor coördinatie buiten beschouwing laten:

2+84=4 seconden

Als je de hele 10 seconden door vier deelt, krijg je 2,5 seconde, maar dan verdeel je ten onrechte ook het sequentiële werk. Zelfs een onbeperkt aantal kernen kan die twee seconden niet wegnemen. Meerdere kernen helpen ook om afzonderlijke programma’s tegelijk te laten draaien, zelfs als elk programma maar één kern gebruikt.

Een pipeline laat fasen overlappen

In een pipeline met drie fasen wordt één instructie uitgevoerd terwijl de volgende wordt gedecodeerd en een andere wordt opgehaald. Elke instructie doorloopt nog steeds alle drie de fasen. De winst is dat er in een bepaalde tijd meer instructies worden voltooid.

Als elke fase één cyclus duurt, kosten tien onafhankelijke instructies zonder overlap 30 cycli. Een ideale pipeline heeft drie cycli nodig om de eerste instructie te voltooien en één extra voor elke resterende instructie:

3+(10−1)=12 cycli

Een vertakking kan al opgehaalde instructies onbruikbaar maken. Het weggooien van dat werk kost cycli, dus voorspellen processoren vertakkingen. Ook werkelijke afhankelijkheden en wachttijden voor het geheugen voorkomen dat een pipeline altijd de ideale snelheid haalt.

Blijf de processor voorzien

Een cache bewaart kopieën van instructies en gegevens dichtbij. Meer bruikbare cachecapaciteit kan het aantal keren dat RAM moet worden geraadpleegd verminderen, vooral wanneer een programma herhaaldelijk een werkverzameling gebruikt die eerder niet in de cache paste. Als die werkverzameling er al in past, helpt extra capaciteit mogelijk weinig.

De geheugenbandbreedte begrenst hoe snel veel waarden kunnen aankomen. De opslagsnelheid is van belang bij het openen van bestanden of starten van toepassingen: de overstap van een harde schijf naar een SSD kan de vertraging verminderen, ook al blijft de CPU gelijk. De woordgrootte en de instructies die een processor ondersteunt, beïnvloeden ook voor welke taken die geschikt is.

Meer transistors, andere toepassingen

De wet van Moore beschrijft de waarneming van Gordon Moore, voor het eerst gedaan in 1965 en herzien in 1975, dat het aantal transistors ongeveer elke twee jaar verdubbelde. Deze historische trend is geen regel dat programma’s volgens een vast schema twee keer zo snel worden. Nu het verkleinen van onderdelen is vertraagd, gebruiken chipontwerpers extra transistors voor processorkernen, caches, GPU’s en gespecialiseerde versnellers. Een bruikbare vergelijking kijkt naar de tijd die dezelfde taak onder dezelfde omstandigheden kost.

Belangrijkste punten

  • Vergelijk de uitvoeringstijd voor de werkelijke taak, niet alleen de klokfrequentie.
  • Meer processorkernen verminderen alleen het werk dat over de kernen kan worden verdeeld.
  • Pipelining verhoogt de doorvoersnelheid door instructiefasen te laten overlappen.
  • Cachegeheugen, geheugenbandbreedte, opslag en warmte kunnen het nuttige werk van de CPU beperken.
3

Hoe geschreven programma’s machine-instructies worden

Een leesbaar programma en de instructies die een CPU uitvoert, zijn verschillende vormen van hetzelfde bedoelde werk. Assembleertaal toont afzonderlijke bewerkingen en vertakkingen; compilers en interpreters verbinden code in een hogere programmeertaal met die bewerkingen. Door een bouwproces te volgen zie je waarom een bronbestand verschilt van een uitvoerbaar bestand, waarom bibliotheken van belang zijn en waarom software naar een ander platform verplaatsen een nieuwe bouw of een geschikte uitvoeromgeving kan vereisen.

3.1 De instructies lezen die een processor uitvoert

Machinecode bestaat uit binaire instructies voor een bepaald type processor. Assembleertaal schrijft die instructies met leesbare namen. Beide beschrijven bewerkingen die veel dichter bij de hardware liggen dan een hogere programmeertaal zoals Python of C.

Bewerkingen en operanden

Een instructie bevat een operatiecode die aangeeft wat er moet gebeuren en meestal één of meer operanden die aangeven wat moet worden gebruikt. Een operand kan een register of geheugenadres aanduiden of rechtstreeks een waarde leveren. De betekenis volgt uit de vastgelegde indeling van de instructie.

Bekijk een 8-bitscodering voor een leermachine. De eerste vier bits bevatten een operatiecode; de laatste vier een adres. Als LOAD gelijk is aan 0001, wordt LOAD 10 dan 0001 1010, omdat decimaal 10 binair 1010 is. Vier bits voor de operatiecode maken 24=16 operatiecodes mogelijk. Vier adresbits duiden de locaties 0 tot en met 15 aan. Deze codering laat een beperkt formaat zien; de andere doorlopen van de leermachine gebruiken uitgeschreven instructies met grotere adressen.

Een instructiesetarchitectuur (ISA) definieert de instructies, coderingen en registers die een processor biedt. x86-64, ARM en RISC-V zijn voorbeelden. De A64-instructies van ARM zijn 32 bits lang; x86-64-instructies variëren van 1 tot 15 bytes. De woordgrootte van een 64-bitsprocessor bepaalt niet de lengte van elke instructie.

Een leesbare lus

Een assembler zet geheugensteuntjes en labels in assembleertaal om in machinecode voor een ISA. Nuttige instructiegroepen zijn gegevensoverdracht, rekenkundige en logische bewerkingen, besturing van de uitvoeringsvolgorde en systeem- of invoer-uitvoerbewerkingen.

Dit accumulatorprogramma telt af vanaf 3. SUB 21 trekt de inhoud van adres 21 af. JUMPZ vertakt als de ACC nul is.

0  LOAD 20
1  SUB 21
2  STORE 20
3  JUMPZ 5
4  JUMP 0
5  HALT

20 holds 3; 21 holds 1.

Bij de eerste doorgang leest LOAD 3, laat SUB 2 over en slaat STORE 2 op. De nulcontrole slaagt niet, dus start JUMP 0 een nieuwe doorgang. De tweede doorgang slaat 1 op en springt terug. De derde slaat 0 op, dus gaat JUMPZ 5 naar HALT.

De eerste twee doorgangen gebruiken elk vijf instructies. De laatste gebruikt er vier vóór HALT, dat ook als instructie meetelt: 5+5+4+1=15. Als je alleen de zes geschreven regels telt, mis je de herhaalde uitvoeringen.

Eén broncode-instructie, meerdere instructies

Een instructie in een hogere programmeertaal zoals total = price + tax kan worden omgezet in bewerkingen om een waarde te laden, er een andere bij op te tellen en het resultaat op te slaan. Hogere programmeertalen drukken variabelen, keuzes, lussen en functies uit zonder elk register te noemen. In assembleertaal komt elke geschreven instructie meestal overeen met één machine-instructie en de taal is sterk afhankelijk van de ISA.

Machinecode voor x86-64 kan niet rechtstreeks als ARM-code worden uitgevoerd. De broncode kan opnieuw worden gecompileerd voor ARM of een vertaal- of emulatielaag kan het verschil opvangen.

RISC en CISC

RISC-ontwerpen zoals ARM en RISC-V geven de voorkeur aan eenvoudige, regelmatige instructies. Veel daarvan gebruiken instructies met een vaste lengte, maar RISC-V kan gecomprimeerde 16-bitsvormen combineren met standaard 32-bitsinstructies. CISC-ontwerpen zoals x86 bieden complexere instructies van variabele lengte. Moderne x86-processoren breken instructies op in eenvoudigere interne bewerkingen. Deze labels beschrijven ontwerpbenaderingen en garanderen niet dat de ene machine sneller is.

Belangrijkste punten

  • Een operatiecode kiest een bewerking; operanden geven de invoer of bestemmingen aan.
  • Een ISA definieert het machinecodecontract dat een processor implementeert.
  • Een assembler vertaalt leesbare geheugensteuntjes naar machinecode.
  • Lussen voeren sommige instructies herhaaldelijk uit, zodat het aantal uitvoeringen verschilt van het aantal regels.
  • Programma’s in hogere programmeertalen hebben vertaling nodig of een interpreter die in machinecode is geïmplementeerd.
  • RISC en CISC beschrijven stijlen van instructiesets, met uitzonderingen op eenvoudige regels voor de lengte.

3.2 Van broncode naar een werkend programma

Broncode is leesbare programmatekst. Een processor voert machine-instructies uit, dus moet een hulpmiddel de kloof overbruggen. Compilatie en interpretatie beschrijven manieren om dat te doen; veel echte implementaties combineren ze.

De vertaalprogramma’s
HulpmiddelHet werk
AssemblerVertaalt assembleertaal naar machinecode
CompilerVertaalt code naar een andere vorm, vaak machinecode of bytecode
InterpreterVoert de bewerkingen van een programma uit terwijl het draait

De meeste compilers werken voordat een programma start. Een just-in-timecompiler (JIT) werkt tijdens de uitvoering. Een interpreter is zelf een machinecodeprogramma: de CPU voert de interpreter uit, die de bewerkingen van het bronprogramma uitvoert.

Volg de bouw van een C-programma

Het commando clang hello.c -o hello bouwt een uitvoerbaar bestand met de naam hello uit hello.c. Een bouwprogramma zoals make kan compilercommando’s voor de programmeur regelen. De belangrijkste fasen zijn:

  1. Voorverwerking: verwerk richtlijnen zoals #include <stdio.h> en voeg daarmee declaraties uit headerbestanden toe aan de broncode.
  2. Compileren: vertaal de C-code naar bewerkingen op het niveau van assembleertaal.
  3. Assembleren: codeer die bewerkingen als machinecode in objectbestanden.
  4. Linken: verbind objectcode en verwijzingen naar bibliotheken om een uitvoerbaar bestand te maken.

Headerbestanden beschrijven bibliotheekinterfaces; door een headerbestand op te nemen, wordt de gecompileerde implementatie van de bibliotheek niet vanzelf naar het programma gekopieerd. Linken verzorgt de verbinding met die code. Statisch linken kopieert de vereiste bibliotheekcode naar het uitvoerbare bestand. Dynamisch linken legt afhankelijkheden van gedeelde bibliotheken vast die worden geladen en gekoppeld wanneer dat nodig is.

Het uitvoerbare bestand is gericht op een ISA en een bestandsformaat van een besturingssysteem. Voor een ARM-Mac en een x86-64-Windows-computer zijn daarom afzonderlijke systeemeigen builds nodig. Ook na het wijzigen van de broncode moet je een gecompileerd uitvoerbaar bestand opnieuw bouwen voordat de wijziging effect heeft.

Fouten ontstaan in verschillende fasen

Een compiler kan syntaxisfouten melden, zoals een ontbrekende puntkomma in C, en typefouten waar de taal typen controleert. Een geslaagde compilatie bewijst niet dat het programma het juiste probleem oplost. Een logische fout levert een verkeerd resultaat op. Een uitvoeringsfout ontstaat terwijl het programma draait, bijvoorbeeld bij deling door een invoerwaarde die nul blijkt te zijn.

Een eenvoudige interpreter kan pas bij een fout aankomen nadat eerdere instructies zijn uitgevoerd. Python controleert eerst de syntaxis van een heel bestand, maar een niet-gedefinieerde naam kan nog steeds pas een fout opleveren wanneer de uitvoering die bereikt. De vertaalmethode alleen vertelt je niet wanneer elke soort fout wordt gevonden.

Bytecode en virtuele machines

Java compileert broncode naar bytecode, instructies voor de Java Virtual Machine (JVM). Elk ondersteund platform biedt een eigen JVM. Die kan bytecode interpreteren en veelgebruikte delen tijdens de uitvoering compileren naar de machinecode van de lokale CPU. De bytecode blijft overdraagbaar omdat de platformspecifieke JVM de hardwareverschillen afhandelt.

CPython compileert Python ook naar bytecode en voert die uit met een virtuele machine. PyPy gebruikt een JIT-compiler en JavaScript-engines in browsers gebruiken ook JIT-compilatie. “Gecompileerd” en “geïnterpreteerd” beschrijven implementaties, geen blijvende eigenschappen van een taal.

Vooraf gecompileerde systeemeigen code vermijdt meestal herhaald interpretatiewerk. Interpretatie maakt het handig om na een wijziging direct uit te voeren, terwijl bytecode en JIT overdraagbaarheid combineren met optimalisatie tijdens de uitvoering. Bij elke route volgt de CPU uiteindelijk machine-instructies en laadt het besturingssysteem de benodigde uitvoerbare code in het geheugen.

Belangrijkste punten

  • Compilers vertalen code; interpreters voeren bewerkingen uit terwijl het programma draait.
  • De bouw van een C-programma omvat voorverwerking, compilatie, assemblage en linken.
  • Statisch linken neemt bibliotheekcode op; dynamisch linken legt afhankelijkheden van gedeelde bibliotheken vast.
  • Compilatie kan syntaxisfouten opsporen terwijl logische fouten en uitvoeringsfouten blijven bestaan.
  • Bytecode wordt uitgevoerd via een platformspecifieke virtuele machine.
  • JIT-compilatie vertaalt tijdens de uitvoering; talen kunnen verschillende implementaties hebben.
  • Systeemeigen uitvoerbare bestanden zijn afhankelijk van zowel een ISA als een bestandsformaat van een besturingssysteem.
4

Geheugen, opslag en snelle kopieën

De plaats waar een computer gegevens bewaart, bepaalt mede of ze stroomuitval overleven en hoe snel ze kunnen worden gebruikt. Vergelijk RAM als werkgeheugen met blijvende opslag en volg daarna de hiërarchie van registers tot archieven. Opslagkeuzes hangen niet alleen af van de capaciteit, maar ook van toegangspatronen. Caching verklaart hoe een kleine, snelle opslagplaats veel langzame ophaalacties kan besparen. Een gewogen gemiddelde laat zien hoe sterk missers het resultaat beïnvloeden.

4.1 Werkgeheugen en de adressen ervan

Het hoofdgeheugen bevat de instructies en gegevens die op dat moment voor de CPU beschikbaar zijn. Voor een gewone toepassing die op een SSD staat, brengt het besturingssysteem eerst de benodigde code en gegevens naar RAM. De CPU haalt vervolgens instructies op via het geheugen- en cachesysteem.

RAM, DRAM en SRAM

RAM is geheugen met directe toegang: een locatie kan worden bereikt zonder alle eerdere locaties te doorlopen. Gewoon RAM als werkgeheugen is vluchtig, dus de inhoud gaat zonder stroom verloren. Als je een document opslaat, worden de gegevens naar niet-vluchtige opslag gekopieerd.

Het hoofdgeheugen gebruikt DRAM, dat bits als lading in kleine condensatoren opslaat. De lading lekt weg, dus de cellen moeten worden ververst, meestal binnen een verversingsinterval van 64 ms. SRAM gebruikt latchachtige transistorcircuits die hun toestand behouden zolang er stroom is. Het hoeft niet te worden ververst, maar gebruikt meer ruimte en kost meer per bit. De snelheid maakt het geschikt voor processorcaches.

SoortBewaart een bit metGebruikelijke rolBehoudt de inhoud zonder stroom?
DRAMLading in een condensatorHoofdwerkgeheugenNee
SRAMEen latchachtig circuitCPU-cacheNee
FirmwareflashgeheugenVastgehouden ladingOpstartinstructiesJa

ROM, of alleen-lezengeheugen, is niet-vluchtig geheugen dat wordt gebruikt voor vaste instructies zoals firmware. Moderne UEFI- of BIOS-firmware staat normaal in bijwerkbaar flashgeheugen. De geadverteerde bestandscapaciteit van een telefoon is flashopslag, ook als een beschrijving die informeel “ROM” noemt; de telefoon schrijft er regelmatig bestanden naartoe.

Een byte heeft een adres

In per byte adresseerbaar geheugen duidt elk adres één byte aan. Een geheel getal van 4 bytes dat begint op decimaal adres 1000, bezet de locaties 1000, 1001, 1002 en 1003. De volgende ongebruikte locatie is 1004. Adressen worden vaak hexadecimaal geschreven, zoals 0x7FFE0010, omdat hexadecimale notatie bitpatronen compact weergeeft.

Het adres geeft aan waar bytes te vinden zijn. Het getal lezen dat als adres is geschreven, is iets anders dan de waarde lezen die op dat adres is opgeslagen.

Capaciteitseenheden gebruiken twee systemen

Een byte bevat 8 bits. Een kleine letter b betekent bits; een hoofdletter B betekent bytes.

Decimale eenheidBytesBinaire eenheidBytes
kB1.000KiB1.024
MB1.000.000MiB1.048.576
GB1.000.000.000GiB1.073.741.824
TB1.000.000.000.000--

Een station dat als 1 TB wordt verkocht, bevat 1012 bytes. In GiB is het aantal:

1012230≈931 GiB

Sommige besturingssystemen geven dit binaire aantal weer met het label “GB”. Het andere getal volgt uit de grootte van de eenheid; het is geen bewijs dat er ruimte ontbreekt.

Capaciteit verschilt van processorsnelheid

Met meer RAM kunnen meer draaiende programma’s en gegevens tegelijk gereed blijven. Wanneer werkgegevens de capaciteit van RAM overschrijden, kan het besturingssysteem pagina’s naar de opslag verplaatsen, waardoor de toegang langzamer wordt. Extra RAM helpt bij dat tekort, maar verhoogt de klokfrequentie van de CPU niet. Opgeslagen bestanden verwijderen maakt opslagruimte vrij. Programma’s of tabbladen die je niet nodig hebt sluiten, kan werkgeheugen vrijmaken.

Belangrijkste punten

  • RAM als werkgeheugen is vluchtig; opslaan brengt gegevens over naar niet-vluchtige opslag.
  • DRAM moet worden ververst; SRAM gebruikt latchcircuits en is geschikt voor snelle caches.
  • Firmware blijft zonder stroom behouden en kan in bijwerkbaar flashgeheugen staan.
  • Elk adres in per byte adresseerbaar geheugen duidt één byte aan.
  • Decimale GB en binaire GiB gebruiken verschillende aantallen bytes.

4.2 Opslag kiezen voor de taak

Secundaire opslag bewaart programma’s en bestanden zonder stroom. Vergeleken met RAM biedt die meer capaciteit tegen lagere kosten per byte, maar met langzamere toegang. Verschillende opslagtechnieken bieden verschillende afwegingen tussen snelheid, kosten, draagbaarheid en duurzaamheid.

Harde schijven en SSD’s

Een harde schijf (HDD) bewaart magnetische patronen op ronddraaiende schijven. Een bewegende kop zoekt het juiste spoor en wacht daarna tot het gewenste deel van de schijf eronderdoor draait. Beide bewegingen vergroten de toegangsvertraging.

Bij 7.200 omwentelingen per minuut duurt één omwenteling:

607.200 s≈8,3 ms

De gemiddelde wachttijd door het draaien is een halve omwenteling, ongeveer 4,2 ms. Dit is alleen het deel door het draaien, niet de volledige leestijd; zoeken en overdragen kosten ook tijd. Bewegende onderdelen maken een werkende harde schijf ook kwetsbaar voor schokken.

Een SSD bewaart lading in flashcellen en heeft geen bewegende onderdelen. Kleine leesbewerkingen op willekeurige plaatsen duren tientallen microseconden in plaats van de milliseconden die gebruikelijk zijn bij toegang tot een harde schijf. SSD’s zijn stil, bestand tegen schokken en geschikt voor draagbare computers. Harde schijven bieden bij grote verzamelingen doorgaans lagere kosten per terabyte.

Flashcellen verdragen een beperkt aantal wis- en schrijfcycli. De controller gebruikt slijtagespreiding om schrijfbewerkingen over de cellen te verdelen. USB-sticks, geheugenkaarten en telefoonopslag gebruiken ook flashgeheugen, al beïnvloeden de controller en interface hun prestaties.

Optische schijven en magneetband
MediumHoe het gegevens opslaat of leestGeschikte toepassing
Cd, dvd, Blu-rayEen laser leest markeringen op een reflecterende laagMedia verspreiden of een schijfarchief bewaren
MagneetbandGegevens staan achter elkaar op een lange bandGrote reservekopieën en archieven

Gebruikelijke capaciteiten zijn ongeveer 700 MB voor een cd, 4,7 GB voor een enkellaags-dvd en 25 GB voor een enkellaagse Blu-ray-schijf. Optische media zijn draagbaar, maar traag vergeleken met moderne opslagstations.

Magneetband biedt lage kosten voor grote archieven. Door de sequentiële toegang moet het station spoelen om een ver verwijderd bestand te bereiken. Harde schijven en SSD’s bieden directe toegang: ze bereiken een gekozen locatie zonder alle eerdere gegevens te doorlopen. Magneetband is daardoor geschikter voor geplande grote reservekopieën dan voor een toepassing die herhaaldelijk verspreide kleine bestanden opent.

Cloudopslag is een dienst

Cloudopslag bewaart bestanden op apparatuur in de datacenters van een aanbieder. De onderliggende media zijn nog steeds SSD’s, harde schijven of magneetband. Een netwerkverbinding voegt toegangs- en overdrachtsvertraging toe. De dienst biedt delen, toegang op afstand en kopieën op een andere locatie, met terugkerende kosten en afhankelijkheid van de toegangscontrole en betrouwbaarheid van de aanbieder.

Houd rekening met de beperkende factor

Toegangstijd is de vertraging voordat gegevens beginnen aan te komen. Overdrachtssnelheid meet hoe snel ze daarna worden overgebracht. Bij het lezen van veel kleine bestanden treedt de toegangsvertraging telkens opnieuw op; bij één groot aaneengesloten bestand speelt de overdrachtssnelheid een grotere rol.

Een SSD is geschikt voor de actieve programma’s van een laptop. Harde schijven zijn geschikt voor een server die 20 TB aan video voordelig opslaat. Magneetband of een cloudarchief is geschikt voor bedrijfsgegevens die langdurig worden bewaard, terwijl een USB-stick handig is om bestanden mee te nemen. Kies op basis van capaciteit, toegangstijd, overdrachtssnelheid, kosten per byte, stroomverbruik, betrouwbaarheid en draagbaarheid. Doordat een SSD uit chips is gemaakt, wordt die nog geen RAM als werkgeheugen: het blijft niet-vluchtige opslag achter een opslagcontroller.

Belangrijkste punten

  • Toegang tot een harde schijf omvat zoek- en draaivertraging; SSD’s hebben geen bewegende onderdelen.
  • Slijtagespreiding verdeelt schrijfbewerkingen over flashcellen.
  • Magneetband biedt sequentiële toegang en is geschikt voor grote archieven.
  • Cloudopslag gebruikt fysieke opslag die via een netwerk bereikbaar is.
  • Toegangstijd en overdrachtssnelheid meten verschillende delen van een leesbewerking.
  • Kies opslag op basis van het toegangspatroon en de praktische behoeften van de taak.

4.3 Bruikbare gegevens dicht bij de CPU houden

Een computer combineert verschillende soorten opslag omdat snelle toegang, grote capaciteit en lage kosten niet samen in één techniek voorkomen. De geheugenhiërarchie plaatst een kleine hoeveelheid zeer snelle opslag dicht bij de CPU en grotere, langzamere opslag verder weg.

De niveaus van de hiërarchie

Van snelst en kleinst naar langzamer en groter zijn de belangrijkste niveaus registers, L1/L2/L3-cache, RAM, SSD, harde schijf en archiefopslag. De kosten per byte dalen doorgaans naarmate de capaciteit groeit.

NiveauVoorbeeld van toegangstijdGebruikelijke omvang
RegistersFractie van een nanosecondeEnkele kilobytes of minder
L1-cacheOngeveer 1 nsTientallen tot honderden kilobytes per processorkern
L2-cacheEnkele nsTot enkele megabytes
L3-cacheOngeveer 10–20 nsEnkele tot tientallen megabytes
RAMOngeveer 50–100 nsEnkele tot tientallen gigabytes
SSDOngeveer 20–100 µsHonderden gigabytes tot terabytes
Harde schijfOngeveer 5–10 msEnkele terabytes

Deze tijden tonen de orde van grootte, niet één vaste specificatie voor elk apparaat. Als je uitgaat van 1 ns voor L1, 100 ns voor RAM en 10 ms voor een harde schijf, duurt toegang tot RAM ongeveer 100 keer zo lang als toegang tot L1 en toegang tot de harde schijf ongeveer 100.000 keer zo lang als toegang tot RAM.

Treffers, missers en bruikbare kopieën

Een cache van de CPU gebruikt SRAM om blokken te bewaren die uit het hoofdgeheugen zijn gekopieerd. Hardware doorzoekt de cacheniveaus voordat gegevens uit RAM worden opgehaald. Bij een treffer wordt de gevraagde inhoud in de cache gevonden. Bij een misser moeten gegevens van een langzamer niveau worden opgehaald en kan een kopie in de cache worden geplaatst.

Het trefferpercentage is het aantal treffers gedeeld door alle toegangen. Bij 950 treffers op 1.000 toegangen is dat 95%. Een misser betekent niet dat gegevens ontbreken of beschadigd zijn; het betekent dat de snelle kopie niet beschikbaar was.

Waarom eerdere toegang toekomstige toegang voorspelt

Temporele lokaliteit betekent dat onlangs gebruikte inhoud waarschijnlijk binnenkort opnieuw wordt gebruikt. Een lus leest herhaaldelijk een teller en de eigen instructies. Ruimtelijke lokaliteit betekent dat adressen in de buurt waarschijnlijk binnenkort worden gebruikt. Het lezen van opeenvolgende lijstelementen volgt dit patroon.

Een cache haalt een hele cachelijn binnen, meestal 64 aangrenzende bytes, en maakt zo gebruik van ruimtelijke lokaliteit. Meerdere niveaus brengen capaciteit en zoektijd in evenwicht: één enorme cache zou meer tijd kosten om te doorzoeken.

Bereken de gemiddelde vertraging

Stel dat een cachecontrole 1 ns duurt en een RAM-toegang 100 ns. Een misser kost beide, dus duurt 101 ns. Bij een trefferpercentage van 95%:

0,95×1+0,05×101=6 ns

Bij een trefferpercentage van 80%:

0,80×1+0,20×101=21 ns

Het tweede gemiddelde is 21÷6=3,5 keer zo groot. Weeg de volledige kosten van een treffer en een misser naar hoe vaak elk voorkomt. Als je de cachecontrole bij een misser vergeet, verandert het antwoord van dit model.

Caching buiten de processor

Het besturingssysteem bewaart bestandsinhoud in RAM als cache. Een browser bewaart gedownloade webbestanden op de opslag als cache en contentdistributienetwerken bewaren kopieën dicht bij gebruikers. Ze hergebruiken allemaal kopieën dichtbij om herhaald langzaam ophalen te voorkomen. Als je een browsercache wist, verwijder je browserbestanden; je wist daarmee geen CPU-cachecircuits. CPU-caches bevatten kleine geheugenblokken, geen georganiseerde bibliotheek van volledige documenten.

Belangrijkste punten

  • De hiërarchie maakt een afweging tussen snelheid en kosten per byte enerzijds en capaciteit anderzijds.
  • Bij een cachetreffer wordt een snelle kopie gevonden; bij een misser worden gegevens van een langzamer niveau opgehaald.
  • Temporele lokaliteit hergebruikt inhoud; ruimtelijke lokaliteit gebruikt adressen in de buurt.
  • De gemiddelde toegangstijd weegt de volledige kosten van treffers en missers.
  • Browser-, bestands- en CPU-caches gebruiken hetzelfde algemene idee op verschillende lagen.
5

Hoe het besturingssysteem de onderdelen laat werken

Voor het openen van een toepassing is meer nodig dan een processor en een programmabestand. Het besturingssysteem wijst geheugen toe, verdeelt processortijd, controleert toegangsrechten en biedt diensten voor bestanden en apparaten. Volg het opstarten van firmware tot kernel en volg daarna een draaiende teksteditor via de geheugengebieden, invoergebeurtenissen en een opslagverzoek. Virtueel geheugen verbindt de adressen zoals elk proces die ziet met het fysieke RAM dat het mag gebruiken.

5.1 De dagelijkse taken van het besturingssysteem

Een besturingssysteem beheert hardware en levert diensten aan toepassingen. Windows, macOS en Linux worden gebruikt op pc’s en servers; Android en iOS op mobiele apparaten. Het zichtbare bureaublad is slechts één onderdeel van dit werk.

Beheer systeembronnen en verberg hardwaredetails

Als beheerder van systeembronnen wijst het besturingssysteem processortijd, werkgeheugen, bestanden en apparaten toe aan programma’s en gebruikers. Als abstractie biedt het eenvoudigere bewerkingen die hardwaredetails verbergen. Een teksteditor kan vragen om “open het bestand report.txt” zonder schijfsporen of apparaatcommando’s te kiezen.

FunctieWat het besturingssysteem doet
ProcesbeheerStart, plant en beëindigt draaiende programma’s
GeheugenbeheerWijst geheugen toe en houdt programma’s gescheiden
BestandsbeheerOrganiseert bestanden, mappen en opgeslagen gegevens
ApparaatbeheerCommuniceert met apparaten via stuurprogramma’s
BeveiligingHandhaaft accounts en toegangsrechten
NetwerkbeheerLevert diensten voor het uitwisselen van gegevens

Via de gebruikersinterface kunnen mensen om dit werk vragen. Een grafische gebruikersinterface (GUI) gebruikt vensters, pictogrammen, menu’s en aanraking of een aanwijzer. Een opdrachtregelinterface (CLI) accepteert getypte commando’s. Commando’s zoals ls op Linux en macOS of dir op Windows tonen bestanden; scripts kunnen commando’s combineren voor herhaalde taken.

De kernel beheert bewerkingen met speciale bevoegdheden

De kernel is de kern van het besturingssysteem die verantwoordelijk is voor de aansturing van hardware en beschermde systeembronnen. Toepassingen draaien in de gebruikersmodus met beperkte bevoegdheden. Kernelcode draait in de kernelmodus met meer bevoegdheden. Een toepassing vraagt een beschermde dienst aan via een systeemaanroep, bijvoorbeeld om het besturingssysteem een bestand te laten lezen.

De kernel controleert de toegangsrechten en voert de toegestane handeling uit. Een defecte toepassing kan niet zomaar met een gewone instructie in de gebruikersmodus de controle over elk apparaat overnemen of het beschermde geheugen van een ander proces lezen.

Verdeel processortijd

De procesplanner bepaalt welk gereedstaand programma processortijd krijgt. Door korte beurten op één verwerkingsstroom lijken muziek afspelen en een document bewerken tegelijk te gebeuren. Meerdere processorkernen maken het ook mogelijk om werk werkelijk op hetzelfde moment uit te voeren. Sommige CPU’s ondersteunen hardwarematige multithreading binnen een kern, maar tijd delen blijft nodig wanneer er meer werk klaarstaat dan de hardware tegelijk kan uitvoeren.

Geef bestanden namen en apparaten stuurprogramma’s

Een bestandssysteem houdt bestandsinhoud en metadata bij, zoals grootte, datums en toegangsrechten. Mappen vormen een hiërarchie; een pad duidt een bestand aan, bijvoorbeeld /home/sam/notes.txt op Linux. NTFS, APFS en ext4 zijn voorbeelden van bestandssystemen.

Als je een bestand verwijdert, wordt meestal de vermelding in de map verwijderd en komt de ruimte vrij voor hergebruik. Dat verschilt van het bewust overschrijven van elke byte. Oude gegevens zijn soms nog te herstellen, vooral op harde schijven; gewoon verwijderen garandeert niet dat gegevens veilig zijn gewist.

Een stuurprogramma vertaalt algemene apparaatverzoeken naar commando’s die een controller begrijpt. Standaardstuurprogramma’s handelen veel toetsenborden en USB-sticks af, terwijl sommige apparaten een specifiek stuurprogramma vereisen.

Deel software in naar functie

Het besturingssysteem, stuurprogramma’s en hulpprogramma’s zoals programma’s voor reservekopieën zijn systeemsoftware. Browsers, teksteditors, games en spreadsheetprogramma’s zijn toepassingssoftware. Mobiele systemen leggen de nadruk op batterijduur, aanraking en het scheiden van apps; servers ondersteunen netwerkdiensten. Een realtimebesturingssysteem voldoet aan vastgelegde reactietermijnen voor besturingstaken. Zeer eenvoudige ingebedde apparaten kunnen één programma uitvoeren zonder een volledig besturingssysteem.

Belangrijkste punten

  • Het besturingssysteem beheert gedeelde systeembronnen en verbergt hardwaredetails achter diensten.
  • Met systeemaanroepen vragen toepassingen met beperkte bevoegdheden in de gebruikersmodus diensten van de kernel aan.
  • De procesplanner verdeelt processortijd over werk dat klaarstaat.
  • Bestandssystemen houden bestandsinhoud, namen, paden en toegangsrechten bij.
  • Stuurprogramma’s verbinden algemene verzoeken van het besturingssysteem met apparaatspecifieke commando’s.
  • Systeemsoftware laat de computer werken en onderhoudt die; toepassingen voeren taken voor gebruikers uit.

5.2 Van inschakelen tot een opgeslagen document

Het starten van een computer en het starten van een toepassing omvatten verschillende fasen. Bij het opstarten krijgt het besturingssysteem de controle. Daarna ontstaat door het laden van een toepassing een draaiend proces dat de processor, het geheugen en diensten van het besturingssysteem gebruikt.

Begin met blijvende instructies

Bij het inschakelen bevat RAM als werkgeheugen geen bruikbaar draaiend programma. De CPU begint met firmware die in niet-vluchtig geheugen is opgeslagen. Op een moderne pc bereidt UEFI-firmware de hardware voor en voert opstartcontroles uit, vaak de zelftest bij het inschakelen (POST) genoemd. De firmware kiest een opstartapparaat en start een bootloader. De bootloader laadt de kernel van het besturingssysteem in RAM en draagt de besturing daaraan over. De kernel bereidt geheugenbeheer, stuurprogramma’s en diensten voor voordat het aanmeld- of startscherm verschijnt.

Maak van een programmabestand een proces

Een programma bestaat uit opgeslagen instructies. Een proces is een draaiend exemplaar, met geheugen, registertoestand en systeembronnen. Afzonderlijke exemplaren van één teksteditor kunnen afzonderlijke documenten bevatten, ook al zijn ze gestart vanuit hetzelfde programmabestand.

Om een toepassing te starten controleert het besturingssysteem het uitvoerbare bestand en het recht om het uit te voeren, maakt een adresruimte, laadt de code en gegevens die eerst nodig zijn, richt een stapelgeheugen in en stelt het adres van de startinstructie in. Meer pagina’s kunnen worden geladen zodra ze worden gebruikt. De procesplanner geeft het proces tijd op de CPU, die de machine-instructies van het proces uitvoert.

Verschillende gebieden bevatten verschillende inhoud
GebiedInhoud
CodeMachine-instructies
GegevensGlobale variabelen
HeapGeheugen dat tijdens de uitvoering wordt aangevraagd
StapelgeheugenActieve functieaanroepen, lokale waarden en retouradressen

Een functie aanroepen voegt informatie toe aan het stapelgeheugen; bij terugkeer komt het deel van die aanroep vrij. Herhaalde aanroepen zonder eindpunt kunnen het stapelgeheugen uitputten en een stapeloverloop veroorzaken. Een geheugenlek ontstaat wanneer een programma geheugen vasthoudt dat het niet meer nodig heeft, waardoor de vastgehouden geheugentoewijzing groeit. Alleen het gebruik van veel geheugen is niet voldoende om een geheugenlek vast te stellen.

Maak onderscheid tussen adressen en fysieke locaties

Virtueel geheugen geeft elk proces een eigen adresruimte. Het besturingssysteem en de geheugenbeheereenheid (MMU) van de CPU koppelen virtuele adressen aan fysiek RAM in geheugenpagina’s, vaak van 4 KiB. Twee processen kunnen 0x1000 gebruiken voor verschillende fysieke locaties. Toegangsrechten verhinderen ongeoorloofde lees- of schrijfbewerkingen; het besturingssysteem kan ook expliciet gedeelde pagina’s toestaan.

Een verboden toegang veroorzaakt een fout die het proces kan beëindigen. Op Linux of macOS kan een C-programma een “segmentatiefout” melden. Een virtueel adres duidt een locatie aan in de adresruimte van dat proces, niet noodzakelijk een byte met hetzelfde nummer in RAM.

Bij een grote geheugenvraag kan het besturingssysteem inactieve pagina’s naar een wisselbestand op de opslag verplaatsen. Het ophalen van een pagina in bijvoorbeeld 100 µs duurt ongeveer 1.000 keer zo lang als een RAM-toegang van 100 ns. Herhaaldelijk pagina’s verplaatsen, overmatige pagina-uitwisseling genoemd, kan het grootste deel van de uitvoeringstijd in beslag nemen. De actieve geheugenvraag verminderen of RAM toevoegen kan helpen.

Volg een toetsaanslag door de lagen

Een toetsenbordcontroller geeft een interruptsignaal. De afhandelaar en het stuurprogramma van het besturingssysteem ontvangen de gebeurtenis en geven die door aan het proces van de teksteditor. De editor werkt het document in het eigen geheugen bij en vraagt de grafische diensten van het besturingssysteem om het scherm bij te werken. Bij opslaan wordt het bestandssysteem gevraagd het document naar de opslag te schrijven. Wanneer het proces eindigt, neemt het besturingssysteem het geheugen en de systeembronnen terug. Opgeslagen gegevens blijven behouden; wijzigingen die alleen in het procesgeheugen staan, verdwijnen.

Belangrijkste punten

  • Firmware start voordat de bootloader de kernel laadt.
  • Een proces is een draaiend exemplaar van een programma met een eigen toestand.
  • Code, gegevens, heap en stapelgeheugen bevatten verschillende delen van een proces.
  • Virtueel geheugen koppelt procesadressen aan RAM en handhaaft toegangsrechten.
  • Geheugenuitwisseling gebruikt opslag voor pagina’s; frequente overdrachten kunnen overmatige pagina-uitwisseling veroorzaken.
  • Bewerken verandert het werkgeheugen; opslaan schrijft het document naar de opslag.
  • Het besturingssysteem neemt de systeembronnen van een proces terug wanneer het proces eindigt.

Hoe computers werken: voorbeelden

5 Walkthroughs

1

Volg de paden binnen een computer

13 stappen
Verbind het ontwerp met opgeslagen programma met geheugenoverdrachten en apparaatgebeurtenissen.
  1. 1
    IntroductieVolg een eenvoudige handeling

    Bij het openen van een foto zijn verschillende onderdelen betrokken: invoer vraagt de handeling aan, opslag bewaart het bestand, RAM bevat de inhoud waarmee wordt gewerkt en de processor volgt instructies om de foto te tonen. Instructies delen het geheugen met gegevens, volgens het Von Neumann-ontwerp, zodat één machine veel taken kan uitvoeren.

    We onderscheiden die taken, volgen één geheugenoverdracht en bekijken hoe apparaten aandacht krijgen (met een interrupt) zonder de CPU te laten wachten. Deze functies beschrijven ook een telefoon of een besturing in een groter apparaat.

  2. 2
    UitlegZoek de werkende onderdelen

    De CPU voert instructies uit. RAM bevat de huidige instructies en gegevens; een SSD of harde schijf bevat blijvende bestanden. Invoerapparaten leveren gegevens en uitvoerapparaten presenteren resultaten of zetten die om in een handeling.

    Het moederbord verbindt deze onderdelen. Een telefoon combineert veel functies in een systeem op een chip. De volledige computerbehuizing is niet de CPU: de processor is één onderdeel binnen het systeem.

  3. 3
    KernpuntProgramma’s zijn geheugeninhoud

    In het Von Neumann-ontwerp bevat één hoofdgeheugen instructies en gegevens. De CPU haalt daaruit binaire instructies op, zodat een nieuw geladen programma dezelfde hardware een andere taak kan geven.

    Een bitpatroon heeft voor het geheugen geen ingebouwde betekenis. De byte 01000001 kan 65, de ASCII-letter “A” of een deel van een instructie voorstellen. Het gebruik bepaalt de interpretatie.

  4. 4
    UitdagingVerander de taak

    Een temperatuurregelaar en een laptop bevatten allebei processoren, geheugen en invoer en uitvoer. Waarom is de regelaar een ingebed systeem en waardoor kan de laptop overschakelen van tekst bewerken naar audio afspelen?

    ---reveal---

    De regelaar voert een specifieke taak uit binnen een ander apparaat. De laptop wisselt van taak door andere opgeslagen instructies uit te voeren. De functies van de hardware blijven gelijk, terwijl het programma verandert welk werk de onderdelen uitvoeren.

  5. 5
    AnalogieKies een brievenbus en daarna de inhoud

    Zie geheugenlocaties als genummerde brievenbussen. Het adres kiest een brievenbus; de gegevens zijn de inhoud. Een leesbewerking vraagt de inhoud op en een schrijfbewerking vervangt die.

    In de klassieke systeembus kiest de adresbus de locatie, draagt de databus de inhoud en draagt de besturingsbus het lees- of schrijfcommando. Als de inhoud verandert, krijgt de locatie nooit een ander nummer.

  6. 6
    VoorbeeldLees adres 200

    De CPU wil de inhoud van geheugenadres 200. De CPU stuurt 200 over de adresbus en zet een leescommando op de besturingsbus.

    Het geheugen vindt die locatie en zet de inhoud, hier 7, op de databus. De CPU ontvangt 7 in een register. Het adres zorgde voor de selectie; de teruggegeven gegevens leveren de waarde. Er vindt geen schrijfbewerking plaats, dus blijft de inhoud van locatie 200 gelijk aan 7.

  7. 7
    UitlegTel locaties en overdrachten

    Met 16 adresbits heeft per byte adresseerbaar geheugen 65.536 locaties, oftewel 64 KiB. Eén adresbit toevoegen verdubbelt dat bereik.

    De databreedte beantwoordt een andere vraag. Een 64-bitspad verplaatst 8 bytes per overdracht. Bij een miljard overdrachten per seconde is de bandbreedte 8 GB/s. Met meer adresbits kun je meer locaties aanduiden; met meer databits kun je meer inhoud per overdracht verplaatsen.

  8. 8
    UitdagingHoud de twee breedtes uit elkaar

    Een per byte adresseerbaar leersysteem heeft 11 adresbits en een 16-bitsdatapad. Hoeveel geheugen kan het adresseren en hoeveel bytes worden per overdracht verplaatst?

    ---reveal---

    Het kan 211=2.048 bytes adresseren, oftewel 2 KiB. Het datapad draagt 2 bytes per overdracht omdat elke byte 8 bits heeft. Als je het aantal adressen met twee vermenigvuldigt, ga je er ten onrechte van uit dat elk adres twee bytes aanduidt.

  9. 9
    UitlegZet signalen en waarden in elkaar om

    Een microfoon levert invoer en een luidspreker levert uitvoer. Geluid verandert continu, terwijl een computer digitale waarden bewaart. Een ADC bemonstert invoer en codeert metingen als getallen; een DAC zet digitale uitvoerwaarden om in een analoog signaal.

    Een touchscreen heeft twee functies: aanrakingen registreren levert invoer en een beeld tonen levert uitvoer. Een apparaat kan verwerkingscircuits bevatten en toch op basis van die functie worden ingedeeld.

  10. 10
    VerbandController en stuurprogramma werken samen

    Een controller is hardware die met een apparaat communiceert. Een stuurprogramma is software die verzoeken van het besturingssysteem omzet in commando’s voor die controller.

    Polling vraagt herhaaldelijk of het apparaat gereed is. Bij een interrupt geeft de controller een signaal wanneer aandacht nodig is. Bij een groot blok kan DMA inhoud tussen het apparaat en RAM verplaatsen terwijl de CPU elders werkt en daarna voltooiing melden.

  11. 11
    UitdagingVermijd controles zonder resultaat

    Een scanner stuurt een grote afbeelding naar RAM. De CPU bereidt de overdracht voor, gaat verder met een andere taak en ontvangt een signaal bij voltooiing. Wat dragen DMA en de interrupt elk bij?

    ---reveal---

    DMA verplaatst het afbeeldingsblok zonder dat de CPU elke byte kopieert. De interrupt meldt dat de overdracht is voltooid, zodat het besturingssysteem die kan afhandelen. De CPU regelt de overdracht nog steeds, maar hoeft niet zelf alle bytes te verplaatsen.

  12. 12
    UitdagingVerbind een meting met een resultaat

    Een kasregelaar leest een digitale temperatuurwaarde in RAM, berekent een beslissing en opent een klep. Wat zijn de invoer en uitvoer, en wat moet tussen het geheugen en de CPU worden overgedragen?

    ---reveal---

    De temperatuurmeting is invoer en het aansturen van de klep is uitvoer. De CPU heeft zowel de opgeslagen besturingsinstructies als de meting uit het geheugen nodig. Adressering kiest die locaties, gegevensoverdracht draagt de inhoud en besturingssignalen coördineren de toegang.

  13. 13
    SamenvattingLees het hele pad

    Bepaal eerst de functie: invoer, verwerking, werkgeheugen, blijvende opslag of uitvoer. Maak daarna onderscheid tussen de locatie die wordt gekozen en de inhoud die wordt verplaatst.

    Opgeslagen instructies vertellen de CPU wat die moet doen; bussen of moderne verbindingen dragen adressering, waarden en commando’s. Controllers en stuurprogramma’s verbinden apparaten, terwijl interrupts en DMA traag of omvangrijk apparaatwerk efficiënt laten samenwerken met een snelle computer.

2

Bouw en doorloop een processorbewerking

19 stappen
Werk van poortuitvoer naar registers, een kort programma en schattingen van de prestaties.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieMaak de uitvoering zichtbaar
  2. 2
    UitlegLees de regel van een poort
  3. 3
    VoorbeeldMaak een overdracht
  4. 4
    UitdagingBereken de tussenliggende uitvoerwaarden
  5. 5
    VerbandBewaar een resultaat tussen stappen
  6. 6
    UitlegVerdeel de taken van de processor
  7. 7
    UitdagingHoud adres en inhoud uit elkaar
  8. 8
    UitlegHaal de instructie op voordat je die gebruikt
  9. 9
    VoorbeeldEerste instructie: laden
  10. 10
    VoorbeeldTweede instructie: optellen
  11. 11
    VoorbeeldDerde en vierde: opslaan en stoppen
  12. 12
    UitdagingVolg of sla een vertakking over
  13. 13
    KernpuntGa verder na een interrupt
  14. 14
    VoorbeeldVergelijk een vast aantal cycli
  15. 15
    VoorbeeldVerdeel alleen het parallelle werk
  16. 16
    UitlegLaat fasen overlappen, geen betekenissen
  17. 17
    UitdagingSchat een nieuwe parallelle taak
  18. 18
    UitdagingVerklaar een onbenutte snelle pipeline
  19. 19
    SamenvattingVerbind bits, toestand en tijd
3

Volg een programma van tekst tot uitvoering

13 stappen
Lees een aftellus en vergelijk systeemeigen builds, interpretatie en bytecode.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieOnderscheid de vormen van het programma
  2. 2
    UitlegSplits een instructie in velden
  3. 3
    UitlegBenoem het hardwarecontract
  4. 4
    VoorbeeldStel een aftelling in
  5. 5
    VoorbeeldTel uitvoeringen, inclusief het verlaten van de lus
  6. 6
    UitdagingVerander de beginwaarde en volg het verlaten van de lus
  7. 7
    UitlegBouw voordat je uitvoert
  8. 8
    VerbandBepaal waar bibliotheekcode staat
  9. 9
    UitdagingVerklaar een geslaagde build met verkeerde uitvoer
  10. 10
    KernpuntOok bij interpretatie wordt machinecode uitgevoerd
  11. 11
    UitdagingVerplaats het programma naar een andere CPU
  12. 12
    UitdagingVolg twee routes naar dezelfde hardware
  13. 13
    SamenvattingHoud de taak van elke laag helder
4

Vergelijk geheugen en bereken cache-effecten

14 stappen
Maak onderscheid tussen blijvende capaciteit, opslagvertragingen en bruikbare snelle kopieën.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieStel twee vragen over opgeslagen gegevens
  2. 2
    UitlegMaak onderscheid tussen werkgegevens en blijvende inhoud
  3. 3
    VoorbeeldLees de capaciteitseenheid
  4. 4
    UitdagingZoek de laatste byte
  5. 5
    UitlegMaak onderscheid tussen wachten en overdragen
  6. 6
    VoorbeeldBereken één deel van de schijfvertraging
  7. 7
    UitdagingKies passend opslaggedrag
  8. 8
    UitlegGa omlaag in de hiërarchie
  9. 9
    VerbandVoorspel de volgende bruikbare bytes
  10. 10
    VoorbeeldTel beide delen van een misser mee
  11. 11
    VoorbeeldVerander het trefferpercentage
  12. 12
    UitdagingBereken een nieuw cachegemiddelde
  13. 13
    UitdagingKies de relevante verbetering
  14. 14
    SamenvattingStem de systeembron af op de behoefte
5

Volg het opstarten, een toetsaanslag en het opslaan

15 stappen
Bekijk hoe diensten van het besturingssysteem, processen en virtueel geheugen hardware met een toepassing verbinden.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVolg een teksteditor door het systeem
  2. 2
    UitlegVraag een dienst aan
  3. 3
    VoorbeeldDeel uitvoeringstijd
  4. 4
    UitdagingBepaal de grens van het besturingssysteem
  5. 5
    UitlegBegin vóór het besturingssysteem
  6. 6
    VoorbeeldMaak het draaiende exemplaar
  7. 7
    UitlegGeef geheugengebieden verschillende taken
  8. 8
    AnalogieGebruik een eigen adresruimte
  9. 9
    UitdagingHoud gelijke adressen gescheiden
  10. 10
    KernpuntOpslag kan geheugen ondersteunen, maar langzaam
  11. 11
    VoorbeeldLever de toetsgebeurtenis af
  12. 12
    VoorbeeldSla op voor na de levensduur van het proces
  13. 13
    UitdagingOnderscheid twee soorten vertraging
  14. 14
    UitdagingVerbind procesbescherming en opslaan
  15. 15
    SamenvattingVolg de diensten in volgorde

Hoe computers werken: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Onderdelen, instructies en alledaags computerwerk10 Oefenvragen

Vraag 1 van 10

Een thermostaat meet een temperatuur en schakelt een verwarming in. Wat maakt de thermostaat tot een ingebed computersysteem?
  1. De thermostaat bewaart metingen alleen zolang de stroom aanstaat.
  2. De thermostaat voert een specifieke besturingstaak uit in een groter apparaat.
  3. De thermostaat verbindt een invoerapparaat rechtstreeks met een uitvoerapparaat.
  4. De thermostaat draait dezelfde algemene toepassingen als een laptop.
Toon antwoordVerberg antwoord
Antwoord: B
Een ingebed systeem is een computer met een specifieke functie binnen een ander apparaat. De thermostaat verwerkt invoer van een sensor volgens instructies en stuurt uitvoer aan. Zowel invoer als uitvoer hebben hoort bij computergebruik, maar dat alleen onderscheidt een ingebed systeem niet van een computer voor algemeen gebruik.

Vraag 2 van 10

De CPU schrijft de waarde 18 naar geheugenadres 92. Wat hoort op de adresbus?
  1. 18
  2. 110
  3. Het schrijfcommando
  4. 92
Toon antwoordVerberg antwoord
Antwoord: D
De adresbus kiest de locatie en draagt dus 92. De waarde 18 gaat over de databus en een schrijfcommando over de besturingsbus. Als je de inhoud met de bestemming verwart, kiest de processor de verkeerde locatie, ook als de waarde zelf correct wordt overgedragen.

Vraag 3 van 10

Een machine leest de barcode van een pakket en drukt een verzendlabel af. Hoe moeten deze twee handelingen worden ingedeeld?
  1. De barcode lezen is invoer; het label afdrukken is uitvoer.
  2. De barcode lezen is uitvoer; het label afdrukken is invoer.
  3. De barcode lezen en het label afdrukken zijn allebei invoer.
  4. De barcode lezen en het label afdrukken zijn allebei uitvoer.
Toon antwoordVerberg antwoord
Antwoord: A
De barcode levert gegevens aan de computer, dus het lezen ervan is invoer. Het afgedrukte label toont een resultaat, dus afdrukken is uitvoer. Een printer kan paginagegevens intern verwerken, maar dat interne werk verandert de uitvoerfunctie in dit systeem niet.

Vraag 4 van 10

Twee invoerbits zijn allebei 1. Wat geeft een XOR-poort met twee ingangen als uitvoer?
  1. 1
  2. 10
  3. 0
  4. 11
Toon antwoordVerberg antwoord
Antwoord: C
XOR geeft alleen 1 als de twee invoerwaarden verschillen, dus gelijke invoerwaarden van 1 en 1 geven 0. OF zou 1 geven omdat minstens één invoerwaarde 1 is. Het resultaat 10 hoort bij de gecombineerde som- en overdrachtsuitvoer van een halve opteller, niet bij de enkele uitvoer van een XOR-poort.

Vraag 5 van 10

Welk onderdeel van de processor voert een aftrekking uit?
  1. De besturingseenheid
  2. De ALU
  3. De programmateller
  4. Het instructieregister
Toon antwoordVerberg antwoord
Antwoord: B
De rekenkundige en logische eenheid voert aftrekkingen en andere rekenkundige en logische bewerkingen uit. De besturingseenheid decodeert de instructie en coördineert de signalen die de aftrekking mogelijk maken, maar de berekening hoort bij de ALU. De PC en het instructieregister bevatten adressen en instructies, niet de schakeling voor de aftrekking.

Vraag 6 van 10

In de leermachine bevat adres 8 LOAD 30 en adres 30 de waarde 14. De PC begint op 8. Wat zijn de PC en ACC nadat deze instructie is uitgevoerd?
  1. De PC is 8; de ACC is 14.
  2. De PC is 9; de ACC is 30.
  3. De PC is 9; de ACC is 14.
  4. De PC is 30; de ACC is 14.
Toon antwoordVerberg antwoord
Antwoord: C
Bij het ophalen gaat de PC van 8 naar 9 omdat de instructie één locatie inneemt. Daarna leest de uitvoering de inhoud van locatie 30, zodat de ACC 14 wordt. Als je 30 in de ACC zou laden, verwar je de adresoperand van de instructie met de waarde op dat adres.

Vraag 7 van 10

Een hulpmiddel zet LOAD, ADD en andere geheugensteuntjes uit assembleertaal om in binaire instructies. Wat voor hulpmiddel is dit?
  1. Een assembler
  2. Een interpreter
  3. Een linker
  4. Een bootloader
Toon antwoordVerberg antwoord
Antwoord: A
Een assembler codeert instructies uit assembleertaal als machinecode voor een bepaalde instructieset. Een linker verbindt objectbestanden en bibliotheekverwijzingen na de assemblage; die vertaalt de geheugensteuntjes niet naar instructies. Een bootloader brengt daarentegen bij het opstarten een besturingssysteem in het geheugen.

Vraag 8 van 10

Een waarde van 6 bytes begint op byteadres 800. Wat is het adres van de laatste byte?
  1. 806
  2. 804
  3. 848
  4. 805
Toon antwoordVerberg antwoord
Antwoord: D
De eerste byte gebruikt adres 800, dus de overige vijf gebruiken 801 tot en met 805. Als je de volledige grootte optelt, krijg je 806: dat is het volgende adres na de waarde, niet de laatste byte. In per byte adresseerbaar geheugen is het laatste adres het beginadres plus de grootte min één.

Vraag 9 van 10

Een teksteditor vraagt een bestand te lezen dat de gebruiker mag openen. Hoe vraagt de editor deze beschermde dienst van het besturingssysteem aan?
  1. Door de kernelmodus over te nemen.
  2. Via een systeemaanroep.
  3. Met directe opslagcommando’s.
  4. Via de eigen firmware.
Toon antwoordVerberg antwoord
Antwoord: B
Een systeemaanroep geeft de editor een gecontroleerde route naar een kerneldienst. De kernel controleert de toegang en voert de bestandsbewerking uit met behulp van de bestands- en apparaatdiensten. Als een gewone toepassing zichzelf naar de onbeperkte kernelmodus zou mogen schakelen, zou dat de bescherming van deze grens tenietdoen.

Vraag 10 van 10

Twee afzonderlijke exemplaren van een programma gebruiken virtueel adres 0x3000 voor privégegevens. Het ene slaat daar 9 op en het andere 22. Waarom kunnen beide waarden behouden blijven?
  1. Hun adresruimten kunnen het adres aan verschillende RAM-locaties koppelen.
  2. Het besturingssysteem bewaart beide in één fysieke pagina en wisselt CPU-beurten af.
  3. Elke schrijfbewerking verandert het virtuele adres van het andere proces.
  4. Beide processen delen één koppeling die de nieuwste waarde bewaart.
Toon antwoordVerberg antwoord
Antwoord: A
Virtuele adressen worden geïnterpreteerd binnen de adresruimte van elk proces. De MMU en het besturingssysteem kunnen hetzelfde geschreven adres aan verschillende fysieke pagina’s koppelen, zodat de privéwaarden gescheiden blijven. Tijd delen alleen biedt deze scheiding niet: CPU-registers bewaren en herstellen maakt geen afzonderlijke geheugenkoppelingen.
Set 2: Verbindingen, vertaling en geheugenkeuzes10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een per byte adresseerbaar apparaat vergroot de adresbreedte van 12 naar 14 bits. Met welke factor groeit de adresseerbare capaciteit?
  1. 2
  2. 14/12
  3. 4
  4. 16
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een sensor bemonstert één kanaal 24.000 keer per seconde met 12 bits per sample. Wat is de ruwe gegevenssnelheid?
  1. 288.000 bits/s
  2. 36.000 bits/s
  3. 2.000 bits/s
  4. 2.304.000 bits/s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

In de leermachine wordt JUMPZ 18 opgehaald van adres 7 terwijl de ACC 4 is. Van welk adres wordt de volgende instructie opgehaald?
  1. 7
  2. 18
  3. 4
  4. 8
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een taak vereist 9 miljard cycli op een bepaalde CPU die op 3 GHz draait. Hoe lang duurt de taak als je wachttijd buiten die cycli buiten beschouwing laat?
  1. 0,33 s
  2. 3 s
  3. 6 s
  4. 27 s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een 8-bitsinstructie voor een leermachine gebruikt vier bits voor de operatiecode, gevolgd door vier adresbits. ADD is 0010. Hoe wordt ADD 13 gecodeerd?
  1. 0010 1101
  2. 1101 0010
  3. 0010 1011
  4. 0010 0011
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Bij de bouw van een C-programma zijn objectbestanden met machinecode gemaakt, maar de bibliotheekverwijzingen moeten nog worden gekoppeld om een uitvoerbaar bestand te maken. Welke fase is nodig?
  1. Voorverwerken
  2. Assembleren
  3. Interpreteren
  4. Linken
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Hoeveel bytes zitten er in 2 KiB?
  1. 2.000 bytes
  2. 256 bytes
  3. 2.048 bytes
  4. 16.384 bytes
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een archief leest één keer per jaar een volledige grote reservekopie en vindt lage kosten per terabyte het belangrijkst. Het is acceptabel om naar de gegevens te spoelen. Welk medium past bij die behoeften?
  1. SRAM-cache
  2. Magneetband
  3. DRAM als hoofdgeheugen
  4. Een optische schijf met kleine capaciteit
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een zoekactie in de cache duurt 2 ns en bij een misser kost RAM nog eens 80 ns. Het trefferpercentage is 90%. Wat is de gemiddelde toegangstijd?
  1. 8,2 ns
  2. 9,8 ns
  3. 82 ns
  4. 10 ns
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een computer speelt audio af terwijl een teksteditor en een browser op één verwerkingsstroom om de beurt aan bod komen. Welke functie van het besturingssysteem verdeelt die beurten?
  1. Bestandstoewijzing
  2. Apparaatdetectie
  3. Procesplanning
  4. Broncodecompilatie
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Keuzes doorlopen en prestaties vergelijken10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Twee computers hebben dezelfde CPU- en RAM-snelheid. Eén gebruikt afzonderlijke geheugens en paden voor instructies en gegevens. Welke gelijktijdige toegang maakt die scheiding mogelijk?
  1. Alle instructies van een programma ophalen.
  2. Een bestand opslaan en zonder stroom bewaren.
  3. Twee willekeurige afhankelijke instructies uitvoeren.
  4. Een instructie en een gegevenswaarde ophalen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat is de uitvoer van (A XOR B) AND (NOT C) wanneer A = 1, B = 1 en C = 0?
  1. 1
  2. 0
  3. 10
  4. 11
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Bij een leesbewerking uit het geheugen is het gekozen adres in het MAR geplaatst. Welk register ontvangt in de leerboek-CPU de inhoud die het geheugen terugstuurt?
  1. MDR
  2. PC
  3. ACC
  4. CIR
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een taak duurt 18 s op één processorkern: 3 s moet sequentieel blijven en 15 s kan gelijkmatig over vijf kernen worden verdeeld. Hoe lang duurt de taak op vijf kernen zonder overhead voor parallel werk?
  1. 3,6 s
  2. 3 s
  3. 6 s
  4. 15,6 s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een lus voor een leermachine heeft LOAD 40, SUB 41, STORE 40, JUMPZ 5, JUMP 0, HALT op adressen 0–5. Locatie 40 begint met 2 en locatie 41 bevat 1. Hoeveel instructies worden vanaf PC 0 tot en met HALT uitgevoerd?
  1. 10
  2. 6
  3. 9
  4. 11
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een Java-bytecodebestand draait op twee verschillende processorfamilies, elk met een geschikte JVM. Wat handelt de hardwareverschillen af?
  1. Een vaste bytecodebreedte die de ISA vervangt.
  2. Een systeemeigen uitvoerbaar bestand in de bytecode.
  3. Het besturingssysteem dat bytecode als systeemeigen code uitvoert.
  4. De platformspecifieke JVM-implementatie.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Twee opslagstations hebben dezelfde aanhoudende overdrachtssnelheid voor een groot bestand. Eén heeft een veel lagere toegangstijd voor willekeurige locaties. Waarom kan dat station toch een map met duizenden kleine bestanden sneller openen?
  1. Kleine bestanden verhogen de aanhoudende bytesnelheid van het station.
  2. Elke afzonderlijke leesbewerking kan een beginvertraging hebben.
  3. Een lagere toegangstijd slaat alle bestandsmetadata over.
  4. Gelijke aanhoudende snelheden geven gelijke openingstijden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een programma leest een lijst in adresvolgorde. Nadat één element is opgehaald, bevat de cache al verschillende volgende elementen. Welke eigenschap verklaart dit voordeel?
  1. Temporele lokaliteit
  2. Niet-vluchtigheid
  3. Ruimtelijke lokaliteit
  4. Sequentiële planning
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een proces leest acht pagina’s. Zes staan al in RAM en kosten elk 60 ns. Voor twee is elk nog een ophaalactie uit de opslag van 120 µs nodig, gevolgd door dezelfde RAM-toegang van 60 ns. Wat is de gemiddelde tijd per pagina als je andere kosten buiten beschouwing laat?
  1. 30,06 µs
  2. 30 µs
  3. 120,06 µs
  4. 0,03 µs
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

De leermachine heeft LOAD 50, SUB 51, JUMPZ 4, ADD 51, STORE 52, HALT op adressen 0–5. Locaties 50 en 51 bevatten allebei 6. Wat staat er op 52 wanneer de machine stopt?
  1. 6
  2. 0
  3. 12
  4. 52
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Gedrag van computersystemen analyseren10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een snellere CPU verbetert een taak nauwelijks die herhaaldelijk wacht op gegevens uit het hoofdgeheugen die niet in de cache staan. Welke verandering pakt het genoemde knelpunt het directst aan?
  1. Een cache die meer hergebruikte gegevens van de taak bevat.
  2. Een groter opslagstation met ongewijzigde toegangssnelheid.
  3. Een nieuw scherm met een hogere pixelresolutie.
  4. Een hogere klokfrequentie met ongewijzigde geheugenwachttijd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een per byte adresseerbaar systeem heeft 18 adresbits en een 32-bitsdatapad. Wat zijn de adresseerbare capaciteit en het aantal bytes per overdracht?
  1. 32 KiB en 18 bytes.
  2. 256 KiB en 32 bytes.
  3. 256 KiB en 4 bytes.
  4. 1 MiB en 4 bytes.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een opslagcontroller kopieert een groot blok naar RAM nadat de CPU de overdracht heeft voorbereid en meldt daarna de voltooiing. Tijdens de overdracht werkt de CPU aan een ander proces. Welk mechanisme verklaart dit?
  1. DMA en herhaalde polling door de CPU.
  2. Kopiëren door de CPU en een interrupt.
  3. Kopiëren door de CPU en herhaalde polling.
  4. DMA gevolgd door een interrupt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een halve opteller met twee ingangen ontvangt 1 en 1. Wat zijn de som- en overdrachtsuitvoer?
  1. Som 1, overdracht 0.
  2. Som 0, overdracht 1.
  3. Som 1, overdracht 1.
  4. Som 0, overdracht 0.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een ideale pipeline heeft vier fasen die elk één cyclus duren. Hoeveel cycli zijn zonder onderbrekingen nodig om zeven instructies te voltooien vanuit een lege pipeline?
  1. 7
  2. 10
  3. 28
  4. 11
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een systeemeigen uitvoerbaar bestand start op het bedoelde platform, maar meldt dat een vereiste gedeelde bibliotheek ontbreekt. Wat geeft dit aan over de koppeling met de bibliotheek?
  1. Het bestand is afhankelijk van bibliotheekcode die tijdens de uitvoering afzonderlijk wordt geleverd.
  2. De declaraties in headerbestanden moeten bij het opstarten worden geassembleerd.
  3. De vereiste bibliotheekcode is volledig naar het uitvoerbare bestand gekopieerd.
  4. De brontekst is de code die door de CPU wordt opgehaald.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

De capaciteit van een station van 500 GB wordt weergegeven in GiB. Welk aantal ligt het dichtst bij de geadverteerde decimale capaciteit?
  1. 500 GiB
  2. 512 GiB
  3. 537 GiB
  4. 466 GiB
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een bestand wordt in cloudopslag bewaard. Waar worden de blijvende gegevens fysiek bewaard?
  1. In het RAM van de gebruiker tot de volgende uitschakeling.
  2. Alleen in de netwerksignalen die naar de gebruiker reizen.
  3. Op opslagapparatuur in de datacenters van een aanbieder.
  4. In de processorcache van de gebruiker tussen sessies.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een cachecontrole duurt 3 ns en een misser voegt een RAM-toegang van 60 ns toe. Van 200 leesbewerkingen zijn er 150 treffers. Wat is de gemiddelde leestijd?
  1. 15 ns
  2. 17,25 ns
  3. 63 ns
  4. 18 ns
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Twee programma’s in de gebruikersmodus delen een printer, maar slechts één mag afdrukken. De printer wordt later mogelijk door een ander model vervangen. Welke taakverdeling handhaaft de toegangsrechten en houdt apparaatcommando’s buiten de toepassingen?
  1. De kernel controleert toegang en coördineert taken; het stuurprogramma vertaalt apparaatcommando’s.
  2. Het stuurprogramma controleert bestandsnamen; elke toepassing coördineert rechtstreeks de printertaken.
  3. De kernel vertaalt modelspecifieke commando’s; elke toepassing verleent zichzelf toegang.
  4. De printer kiest gebruikersrechten; de procesplanner vertaalt de printercommando’s.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Instructies, geheugen en het besturingssysteem verbinden10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een aftrekking door de ALU geeft nul. Een volgende voorwaardelijke vertakking controleert of dat resultaat nul was. Welke opgeslagen CPU-informatie ondersteunt de beslissing?
  1. Het aantal klokpulsen.
  2. De nulstatusvlag.
  3. Het adres van de operand.
  4. De breedte van de databus.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een interrupt wordt geaccepteerd nadat een instructie is voltooid, wanneer de volgende PC 26 is en de ACC 17. De afhandelaar gebruikt de ACC. Welke toestand is nodig om de onderbroken berekening correct te hervatten?
  1. Het adres van de voltooide instructie en de registers van de afhandelaar.
  2. Het adres van de volgende instructie en de registers van de afhandelaar.
  3. De opgeslagen volgende PC en de oorspronkelijke werkregisters.
  4. Het startadres van het programma en de oorspronkelijke registerwaarden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Op één processorkern duurt een taak 16 s. Twaalf seconden kunnen parallel worden uitgevoerd en vier seconden niet. Welke verbetering ontstaat bij de overgang van vier naar zes kernen als je overhead buiten beschouwing laat?
  1. De tijd daalt van 7 s naar 6 s.
  2. De tijd daalt van 4 s naar 2,67 s.
  3. De tijd daalt van 7 s naar 4,67 s.
  4. De tijd daalt van 12 s naar 8 s.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een CPU gebruikt een 8-bitsformaat met vier bits voor de operatiecode en vier bits voor een direct adres. Waarom kan dat ongewijzigde formaat LOAD 19 niet rechtstreeks coderen?
  1. Het adres past als de operatiecode in hetzelfde formaat kleiner wordt.
  2. Een LOAD-operand gebruikt altijd de volledige instructiebreedte.
  3. Een 64-bits host-CPU breidt elke operand van de leermachine uit.
  4. Het veld voor een direct adres kan alleen 0 tot en met 15 aanduiden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een ontwikkelaar wijzigt een C-bronbestand en compileert het tot een bijgewerkt objectbestand, maar slaat het linken over. Het oude uitvoerbare bestand wordt gestart en de gedeelde bibliotheken zijn ongewijzigd. Welke bouwstap resteert en waarom blijft het oude gedrag bestaan?
  1. Verwerk de headerbestanden opnieuw; het starten van een oud uitvoerbaar bestand neemt automatisch nieuwe objectbestanden op.
  2. Assembleer het oude uitvoerbare bestand opnieuw; de instructiecoderingen veranderen wanneer de broncode wordt gewijzigd.
  3. Link het bijgewerkte objectbestand opnieuw; het oude uitvoerbare bestand bevat nog de eerdere programma-instructies.
  4. Laad de gedeelde bibliotheken opnieuw; hun instructies vervangen alle gewijzigde instructies uit het objectbestand.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een gebruiker slaat een document op en sluit de computer daarna normaal af. Welke plaats bewaart het opgeslagen document zonder stroom?
  1. De SSD of andere niet-vluchtige opslag.
  2. De accumulator van de CPU tot de volgende start.
  3. De DRAM-cellen die het open document bevatten.
  4. De SRAM-cache die het editorproces gebruikt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Twee caches kosten allebei 2 ns om te controleren. Een misser voegt 100 ns toe. De ene heeft treffers bij 92% van de leesbewerkingen, de andere bij 96%. Wat gebeurt er met de gemiddelde toegangstijd?
  1. Die daalt van 9,84 ns naar 5,92 ns.
  2. Die daalt van 8 ns naar 4 ns.
  3. Die daalt met 4% vanaf 10 ns.
  4. Die daalt van 10 ns naar 6 ns.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een besturingstaak besteedt 1 ms aan een vaste sequentiële stap en 6 ms aan werk dat perfect over drie processorkernen kan worden verdeeld. Een realtime-eis stelt een deadline van 4 ms. Wat zijn de ideale uitvoeringstijd en het resultaat ten opzichte van de deadline als je overhead buiten beschouwing laat?
  1. 3 ms, binnen de deadline.
  2. Ongeveer 2,33 ms, binnen de deadline.
  3. 4 ms, binnen de deadline.
  4. 7 ms, na de deadline.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een proces vraagt herhaaldelijk heapgeheugen aan dat het niet meer nodig heeft en geeft dat nooit vrij. Later bepalen frequente paginaoverdrachten naar de opslag het grootste deel van de uitvoeringstijd. Welke reeks verklaart de vertraging?
  1. Een stapeloverloop bewaart oude heapblokken en geheugenuitwisseling veroorzaakt overmatige pagina-uitwisseling.
  2. Een geheugenlek verhoogt de vraag en veel geheugenuitwisseling veroorzaakt overmatige pagina-uitwisseling.
  3. Een geheugenlek verhoogt de vraag, maar paginaoverdrachten zijn snelle cachezoekacties.
  4. Een geheugenlek vergroot opgeslagen bestanden terwijl de RAM-vraag gelijk blijft.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een pc meldt dat de opstartcontroles van de firmware zijn voltooid, bereikt een bootloadermenu en meldt daarna dat een kernelimage ontbreekt. Na uit- en weer inschakelen opent de firmware-instelling nog steeds. Wat verklaart zowel de voltooide opstartfase als het beschikbare instellingenscherm?
  1. De kernel initialiseerde de stuurprogramma’s maar startte de bootloader niet; firmware blijft in RAM.
  2. De bootloader voltooide het laden van de kernel; firmware-instellingen draaien vanuit RAM van het vorige proces.
  3. De kernel bereikte de gebruikersmodus vóór het laden; de bootloader maakt firmware opnieuw na uitschakeling.
  4. De bootloader draaide maar laadde de kernel niet; blijvende firmware kan nog steeds worden uitgevoerd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

109 Kernbegrippen, elk met een definitie

A

accumulator
Een accumulator is een werkregister dat rekenkundige of logische resultaten bevat en operanden levert in een eenvoudig processorontwerp.
In een eenvoudige accumulatormachine werkt ADD de ACC bij, terwijl STORE de ACC naar het geheugen kopieert zonder de waarde te veranderen.
adresbus
De adresbus draagt de locatie die is gekozen voor toegang tot het geheugen of een apparaat en geeft aan waar de overgedragen inhoud thuishoort.
Wanneer de CPU naar adres 300 schrijft, draagt de adresbus 300 terwijl de databus de waarde draagt.
analoog-digitaalomzetter
Een analoog-digitaalomzetter bemonstert een analoog signaal en geeft de meetwaarden weer als digitale getallen voor verwerking door een computer.
De invoerschakeling van een microfoon zet geluidsmetingen om in getallen die als audio-opname worden opgeslagen.
apparaatcontroller
Een apparaatcontroller is hardware die apparaatcommunicatie op laag niveau afhandelt en status- en dataregisters voor het systeem beschikbaar stelt.
Een opslagcontroller ontvangt een overdrachtsverzoek en meldt wanneer het gegevensblok RAM heeft bereikt.
apparaatstuurprogramma
Een apparaatstuurprogramma is software die algemene verzoeken van het besturingssysteem vertaalt naar de commando’s die een bepaalde apparaatcontroller nodig heeft.
Een printerstuurprogramma zet het afdrukverzoek van het besturingssysteem om in commando’s die de aangesloten printer begrijpt.
assembleertaal
Assembleertaal geeft machine-instructies weer met leesbare geheugensteuntjes, registernamen en labels die nauw verbonden zijn met een bepaalde ISA.
Een aftelling geschreven met LOAD, SUB en sprongen toont de bewerkingen die de lus implementeren.
assembler
Een assembler vertaalt instructies in assembleertaal naar hun machinecodecoderingen voor de gekozen instructiesetarchitectuur.
Het geheugensteuntje voor een optelling wordt de binaire instructie die de doel-CPU kan ophalen en uitvoeren.

B

bandbreedte
Bandbreedte is de hoeveelheid gegevens die een communicatiepad per seconde kan overdragen, vaak uitgedrukt in bytes per seconde of bits per seconde.
Een breder pad kan meer bytes per overdracht verplaatsen, waardoor de bandbreedte toeneemt als het aantal overdrachten per seconde gelijk blijft.
bestandssysteem
Een bestandssysteem organiseert opgeslagen inhoud in benoemde bestanden en mappen en houdt hun locaties, groottes, datums en toegangsrechten bij.
Het pad /home/sam/notes.txt duidt een Linux-bestand aan zonder te onthullen welke opslagblokken het bevatten.
besturingsbus
De besturingsbus draagt commando- en timingsignalen die overdrachten coördineren, waaronder lees- en schrijfsignalen en interruptverzoeken.
Een schrijfsignaal vertelt het geheugen dat het de inhoud van de databus moet opslaan op de locatie die de adresbus heeft gekozen.
besturingseenheid
De besturingseenheid coördineert de uitvoering van instructies door ze op te halen en te decoderen en signalen naar de andere onderdelen van de processor te sturen.
Bij een ADD-instructie selecteert de besturingseenheid operanden terwijl de ALU de optelling zelf uitvoert.
besturingssysteem
Een besturingssysteem beheert hardwarebronnen en levert diensten die toepassingen gebruiken om te draaien, bestanden te openen en met apparaten te communiceren.
Een teksteditor vraagt een bestand op naam aan, terwijl het besturingssysteem de gegevens vindt en het opslagapparaat aanstuurt.
bootloader
Een bootloader is opstartsoftware die de kernel van het besturingssysteem vanuit de opslag in het geheugen laadt en de uitvoering daaraan overdraagt.
Nadat de firmware de hardware heeft voorbereid, brengt de bootloader de kernel naar RAM zodat het besturingssysteem verder kan opstarten.
broncode
Broncode is de voor mensen leesbare tekst van een programma, geschreven in een programmeertaal vóór vertaling of interpretatie.
Als je een C-bronbestand bewerkt, verandert de tekst, maar het eerdere systeemeigen uitvoerbare bestand blijft ongewijzigd totdat het opnieuw wordt gebouwd.
bus
Een bus is een gedeeld communicatiepad dat signalen tussen computeronderdelen overbrengt; een parallelle bus draagt meerdere bits tegelijk.
Via een klassieke systeembus kan de processor een geheugenadres versturen en de inhoud ontvangen die daar is opgeslagen.
bytecode
Bytecode is een instructierepresentatie voor een virtuele machine, waardoor een programma onafhankelijk van een bepaalde fysieke CPU kan worden verspreid.
Een Java-bytecodebestand kan via verschillende JVM-implementaties op ARM- en x86-64-computers draaien.

C

cachegeheugen
Een CPU-cache is een kleine, snelle SRAM-opslagplaats met kopieën van instructie- en gegevensblokken uit langzamere geheugenniveaus voor snel hergebruik.
Een lus kan de eigen instructies herhaaldelijk in de cache vinden in plaats van ze telkens uit RAM op te halen.
cachelijn
Een cachelijn is het blok aangrenzende geheugenbytes dat samen naar een CPU-cache wordt verplaatst, bij moderne processoren meestal 64 bytes.
Bij het ophalen van één gevraagde byte kunnen ook bytes in de buurt worden gekopieerd die latere leesbewerkingen zonder een nieuwe RAM-toegang vinden.
cachetreffer en cachemisser
Bij een cachetreffer wordt gevraagde inhoud in de cache gevonden; bij een cachemisser moet die van een langzamer niveau worden opgehaald, wat vertraging toevoegt aan die toegang.
Een misser voor een lijstelement kan ook aangrenzende bytes laden, zodat latere toegangen treffers in de cache opleveren.
cloudopslag
Cloudopslag is een dienst die bestanden op de fysieke opslagapparatuur van een aanbieder bewaart en via een netwerk toegankelijk maakt.
Een bestand op afstand kan tussen apparaten worden gedeeld, maar het lezen ervan hangt af van de verbinding en de aanbieder.
compiler
Een compiler vertaalt programmacode naar een andere representatie, vaak machinecode of bytecode, vooraf of tijdens de uitvoering.
Een compiler die vooraf werkt, kan een C-programma omzetten naar code voor de processor die als doel is gekozen.

D

databus
De databus draagt instructies of waarden die tussen de processor, het geheugen en apparaten worden overgedragen en ondersteunt lees- en schrijfbewerkingen.
Bij een leesbewerking uit het geheugen wordt een opgeslagen byte via de databus teruggegeven nadat de locatie is gekozen.
digitaal-analoogomzetter
Een digitaal-analoogomzetter zet digitaal weergegeven waarden om in een analoog signaal dat een uitvoerapparaat zoals een luidspreker kan aansturen.
Om een opgeslagen opname af te spelen, moeten de digitale samples worden omgezet in een signaal voor de luidspreker.
directe geheugentoegang
Directe geheugentoegang laat een apparaat of DMA-controller blokken naar of vanuit RAM overdragen zonder dat de CPU elke afzonderlijke byte kopieert.
Nadat de CPU DMA voor een afbeeldingsoverdracht heeft ingesteld, kan die ander werk uitvoeren terwijl het blok wordt verplaatst.
DRAM
DRAM is vluchtig geheugen dat bits als lading in condensatoren opslaat en regelmatig moet worden ververst, waardoor het geschikt is als groot hoofdgeheugen.
Het verversen van DRAM herstelt de lading voordat lekkage de opgeslagen bitwaarden tijdens het gebruik onbetrouwbaar maakt.

E

EN-poort
Een EN-poort geeft alleen 1 als alle invoerbits 1 zijn; elke invoerwaarde 0 maakt de uitvoer 0.
Een EN-poort met twee ingangen produceert een overdrachtsbit wanneer een halve opteller twee invoerbits ontvangt die allebei 1 zijn.

F

firmware
Firmware is software op laag niveau die in niet-vluchtig geheugen staat en hardware aanstuurt of opstartinstructies levert voordat het hoofdbesturingssysteem draait.
UEFI-firmware bereidt de hardware van een pc voor en start een bootloader voordat de kernel in RAM wordt geladen.
flipflop
Een flipflop is een klokgestuurd opslagcircuit dat een bit opneemt bij een klokflank en die toestand tussen veranderingen vasthoudt.
Rijen flipflops kunnen registerwaarden vasthouden en samen worden bijgewerkt bij de juiste klokflank.

G

geheugenadresregister
Het geheugenadresregister bevat de locatie die is gekozen voor een lees- of schrijfbewerking in het geheugen en levert zo het adres voor de toegang.
Om een gegevenswaarde van locatie 20 te lezen, zet een CPU 20 in het MAR voordat die de leesbewerking aanvraagt.
geheugenbeheereenheid
De geheugenbeheereenheid is CPU-hardware die virtuele adressen vertaalt met door het besturingssysteem vastgelegde koppelingen en toegangsrechten controleert.
Toegang tot een beschermde locatie veroorzaakt een fout wanneer de koppeling van het proces de gevraagde bewerking niet toestaat.
geheugendataregister
Het geheugendataregister bevat inhoud die net uit het geheugen is gelezen of naar het geheugen wordt geschreven; het heet ook het geheugenbufferregister.
Tijdens STORE ontvangt het MDR de waarde van de accumulator voordat die waarde naar de gekozen locatie wordt geschreven.
geheugenhiërarchie
De geheugenhiërarchie combineert kleine, snelle opslagplaatsen dicht bij de CPU met grotere, langzamere niveaus en brengt zo capaciteit, snelheid en kosten per byte in evenwicht.
Registers en caches ondersteunen direct werk, terwijl RAM, opslagstations en archieven steeds grotere opslagplaatsen bieden.
geheugenlek
Een geheugenlek is geheugen dat een programma niet meer nodig heeft maar niet vrijgeeft, waardoor onnodig toegewezen geheugen zich kan ophopen.
Een langdurig draaiend programma dat herhaaldelijk onnodige geheugentoewijzingen op de heap achterlaat, kan steeds meer geheugen gaan gebruiken.
geheugenpagina
Een geheugenpagina is een blok met een vaste grootte dat wordt gebruikt voor koppelingen in virtueel geheugen en voor het verplaatsen van inhoud tussen RAM en ondersteunende opslag.
Een systeem met pagina’s van 4 KiB koppelt en haalt geheugen op in blokken van elk 4.096 bytes.
geheugenuitwisseling
Geheugenuitwisseling verplaatst geheugenpagina’s tussen RAM en ondersteunende opslag, zodat inactieve inhoud RAM kan verlaten en ander werk de ruimte kan gebruiken.
Een pagina in een wisselbestand moet worden opgehaald voordat de ontbrekende inhoud weer in RAM kan worden gebruikt.
grafische gebruikersinterface en opdrachtregelinterface
Een grafische gebruikersinterface biedt visuele bedieningselementen zoals vensters en pictogrammen; een opdrachtregelinterface accepteert getypte commando’s die ook in scripts kunnen worden gecombineerd.
Een gebruiker kan een map visueel bekijken of ls op een opdrachtregel gebruiken om de bestandenlijst op te vragen.
grafische processor
Een grafische processor is een processor die is gespecialiseerd in sterk parallel werk waarbij vergelijkbare bewerkingen op veel gegevenswaarden worden toegepast.
Veel beeldpixels bijwerken is geschikt voor verwerking door een GPU omdat het werk veel vergelijkbare berekeningen bevat.

H

halve opteller
Een halve opteller telt twee invoerbits op en produceert afzonderlijke som- en overdrachtsbits, met XOR voor de som en EN voor de overdracht.
Twee bits met waarde 1 optellen produceert overdracht 1 en som 0, samen het tweebits binaire getal 10.
harde schijf
Een harde schijf slaat bits magnetisch op draaiende schijven op en gebruikt een bewegende kop die zoek- en draaivertraging veroorzaakt.
Bij het lezen van verspreide kleine bestanden heeft een harde schijf herhaaldelijk vertraging voordat elk blok wordt overgedragen.
hardware
Hardware is de fysieke apparatuur in een computersysteem, waaronder de processor, printplaten, geheugenchips, opslagstations en apparaten.
Het toetsenbord en de RAM-modules van een laptop zijn hardware, terwijl de teksteditor die erop draait software is.
Harvard-architectuur
De Harvard-architectuur bewaart instructies en gegevens in afzonderlijke geheugens met afzonderlijke paden, zodat één toegang van elke soort tegelijk mogelijk is.
Een microcontroller kan de volgende instructie ophalen terwijl die via het gegevenspad een sensorwaarde leest.
heap
De heap is een geheugengebied van een proces voor geheugentoewijzingen die tijdens de uitvoering worden aangevraagd, zoals opslag voor een groeiende verzameling.
Een programma dat een lijst van variabele grootte opbouwt, kan heapgeheugen verkrijgen wanneer het extra elementen ontvangt.

I

ingebed systeem
Een ingebed systeem is een computer die in een groter apparaat is ingebouwd om met zijn processor, geheugen en invoer en uitvoer een specifieke taak uit te voeren.
De besturing van een wasmachine leest sensoren en schakelt de motor met behulp van een opgeslagen besturingsprogramma.
instructiecyclus
De instructiecyclus is het herhaalde proces van een machine-instructie ophalen, de bewerking interpreteren en die uitvoeren.
Een LOAD-instructie moet eerst worden opgehaald voordat de uitvoering de afzonderlijke leesbewerking voor de gegevens verricht.
instructieregister
Het register voor de huidige instructie bevat de opgehaalde instructie terwijl die wordt gedecodeerd en uitgevoerd; instructieregister is een andere naam.
Nadat een instructie in het MDR is aangekomen, kopieert een CPU die naar het CIR zodat de bewerking kan worden gedecodeerd.
instructiesetarchitectuur
Een instructiesetarchitectuur definieert de instructies, coderingen en registers van een processor en legt de software-interface voor machinecode vast.
Een systeemeigen build voor ARM is gericht op een andere ISA dan een systeemeigen x86-64-build van hetzelfde bronprogramma.
interpreter
Een interpreter is een programma dat tijdens de uitvoering de bewerkingen van een ander programma uitvoert met behulp van de eigen implementatie op de hostcomputer.
De CPU voert de machinecode van een interpreter uit terwijl die de bewerkingen van een programma in een hogere programmeertaal uitvoert.
interrupt
Een interrupt is een signaal dat aandacht van de processor vraagt, waardoor een passende afhandelaar wordt uitgevoerd voordat het onderbroken werk verdergaat.
Een voltooide schijfoverdracht kan een interrupt aanvragen, zodat het besturingssysteem weet dat de gevraagde gegevens klaarstaan.
interruptafhandelaar
Een interruptafhandelaar is een routine die op een interrupt reageert terwijl de toestand van het onderbroken programma wordt bewaard om later verder te gaan.
Een toetsenbordafhandelaar helpt een toetsgebeurtenis te verwerken, waarna de onderbroken berekening kan doorgaan.
invoerapparaat
Een invoerapparaat levert gegevens aan een computer, waaronder gegevens die een persoon invoert of metingen uit de fysieke wereld.
Een lichtsensor levert invoer die een besturing gebruikt om te beslissen of een lamp moet aangaan.

J

just-in-timecompilatie
Just-in-timecompilatie vertaalt code naar systeemeigen machine-instructies terwijl het programma draait, vaak gericht op delen die veel worden uitgevoerd.
Nadat een uitvoeromgeving een veelgebruikte lus heeft herkend, kan die de lus compileren zodat latere herhalingen geen herhaalde interpretatie vereisen.

K

kernel
De kernel is de kern van een besturingssysteem die systeembronnen waarvoor speciale bevoegdheden nodig zijn beheert en de beschermde grens rond toepassingen handhaaft.
Een toepassing in de gebruikersmodus vraagt bestandsdiensten van de kernel aan in plaats van zelf onbeperkte opslagcommando’s te geven.
klokcyclus
Een klokcyclus is één tijdsinterval in het kloksignaal van de processor dat veranderingen in circuits coördineert zonder noodzakelijk een instructie te voltooien.
Een klok van 3 GHz geeft ongeveer 0,33 ns per cyclus, terwijl een instructie meerdere interne stappen kan omvatten.
klokfrequentie
Klokfrequentie is het aantal tijdcycli van een processor per seconde, gemeten in hertz; samen met het werk per cyclus beïnvloedt die de uitvoeringstijd.
Een vaste taak van zes miljard cycli duurt 1,5 s bij 4 GHz, maar verschillende CPU-ontwerpen kunnen een verschillend aantal cycli nodig hebben.

L

latch
Een latch is een terugkoppelingscircuit dat één bit kan vasthouden zolang er stroom is en zo een eenvoudige bouwsteen vormt voor het opslaan van een digitale toestand.
Kruislings gekoppelde poorten voeren hun uitvoer naar elkaar terug, zodat het circuit de eigen toestand kan onthouden.
linker
Een linker combineert objectbestanden en lost bibliotheekverwijzingen op om een uitvoerbaar bestand te maken, met statische code of afhankelijkheden van gedeelde bibliotheken.
Een niet-opgeloste externe functie na assemblage vereist werk van de linker, niet nog een controle van de bronsyntaxis.
logische poort
Een logische poort is een circuit dat één of meer invoerbits ontvangt en volgens een vaste regel, zoals EN of NIET, één uitvoerbit produceert.
Door poorten te combineren kan een processor bitpatronen vergelijken, sommen berekenen en bepalen waar resultaten naartoe gaan.

M

machinecode
Machinecode is de binaire codering van instructies die een processor rechtstreeks uitvoert volgens zijn instructiesetarchitectuur.
Een uitvoerbaar x86-64-bestand bevat instructiecoderingen die een ARM-processor niet rechtstreeks kan uitvoeren.
magneetband
Magneetband is een blijvend opslagmedium dat gegevens achter elkaar vastlegt en goedkope capaciteit voor grote hoeveelheden biedt met langzame toegang tot een bepaalde positie.
Een groot archief kan de spoelvertraging accepteren die nodig is om gegevens op te halen die slechts af en toe worden gebruikt.

N

NAND-poort
Een NAND-poort keert het resultaat van EN om en geeft alleen 0 als alle invoerwaarden 1 zijn; met alleen NAND-poorten kan elke logische functie worden geïmplementeerd.
Als je beide ingangen van een NAND-poort met één bit verbindt, wordt de uitvoer het omgekeerde van dat bit.
NIET-poort
Een NIET-poort keert het enkele invoerbit om en geeft 1 bij invoer 0 en 0 bij invoer 1.
Als een signaal dat een NIET-poort binnenkomt 0 is, ontvangt de volgende aangesloten poort 1 van de uitvoer.
NOR-poort
Een NOR-poort keert het resultaat van OF om en geeft alleen 1 als elke invoerwaarde 0 is; met alleen NOR-poorten kan elke logische functie worden geïmplementeerd.
Als minstens één van twee invoerwaarden 1 is, is de NOR-uitvoer 0 omdat het OF-resultaat 1 zou zijn.

O

OF-poort
Een OF-poort geeft 1 als minstens één invoerwaarde 1 is, ook wanneer alle invoerwaarden 1 zijn.
Twee invoerwaarden 1 houden de uitvoer van OF op 1; als je dit leest als “één maar niet allebei”, verwar je OF met XOR.
operand
Een operand levert de invoer of bestemming van een instructie, zoals een register, een adres of een directe waarde, zoals door de instructie is vastgelegd.
In een instructie zoals LOAD 10 is de operand adres 10, waarvan de inhoud in de accumulator, ACC, wordt gelezen.
operatiecode
Een operatiecode is het deel van een machine-instructie dat de bewerking aangeeft, zoals een waarde laden, optellen of vertakken.
In een instructiecodering kan het veranderen van de operatiecode een gegevenslaadinstructie veranderen in een andere bewerking.
optische schijf
Een optische schijf slaat gegevens op als markeringen die een laser van een reflecterende laag leest en biedt zo verwisselbare media zoals cd’s, dvd’s en Blu-ray-schijven.
Een enkellaags-dvd slaat meestal 4,7 GB op, terwijl een enkellaagse Blu-ray-schijf meestal 25 GB opslaat.
overmatige pagina-uitwisseling
Overmatige pagina-uitwisseling is een sterke vertraging die ontstaat wanneer het frequent verplaatsen van pagina’s tussen RAM en opslag een groot deel van de uitvoeringstijd van het systeem kost.
Toepassingen die veel geheugen gebruiken sluiten, kan het paginaverkeer verminderen en meer RAM overlaten voor het resterende actieve werk.

P

per byte adresseerbaar geheugen
Per byte adresseerbaar geheugen wijst aan elke byte een afzonderlijk adres toe, zodat een waarde van meerdere bytes meerdere opeenvolgende adreslocaties bezet.
Een waarde van vier bytes die bij 1000 begint, bezet de adressen 1000 tot en met 1003, zodat 1004 de volgende locatie is.
pipelining
Pipelining laat fasen van verschillende instructies overlappen en verhoogt zo het tempo waarin instructies worden voltooid zodra de pipeline is gevuld.
Terwijl één instructie wordt uitgevoerd, kan een andere worden gedecodeerd en een derde worden opgehaald in een pipeline met drie fasen.
polling
Polling is het herhaaldelijk controleren van de status van een apparaat om te zien of het gegevens klaar heeft staan of een toegewezen bewerking heeft voltooid.
Een processor die steeds opnieuw een sensor controleert die niets doet, besteedt tijd aan controles die geen nieuwe gegevens opleveren.
principe van het opgeslagen programma
Het principe van het opgeslagen programma houdt in dat instructies als binaire inhoud in het geheugen worden weergegeven, zodat een processor ze kan ophalen en uitvoeren.
Door een ander programma te laden kan dezelfde computer na een game een document bewerken.
proces
Een proces is een draaiend exemplaar van een programma met een eigen uitvoeringstoestand, adresruimte en systeembronnen die door het besturingssysteem worden beheerd.
Afzonderlijke exemplaren van een teksteditor kunnen hetzelfde programmabestand gebruiken terwijl ze verschillende documenttoestanden in het geheugen bewaren.
procesplanner
De procesplanner is het onderdeel van het besturingssysteem dat werk selecteert dat klaarstaat voor processortijd en de beschikbare uitvoeringsmiddelen over processen verdeelt.
Dankzij korte beurten kunnen een muziekspeler en een teksteditor op één verwerkingsstroom vooruitgang blijven boeken.
processorkern
Een processorkern is een verwerkingseenheid met de besturing, rekeneenheid en middelen voor de werktoestand die nodig zijn om een instructiestroom uit te voeren.
Vier processorkernen kunnen afzonderlijk werk tegelijk uitvoeren wanneer het besturingssysteem taken gereed heeft.
programmateller
De programmateller bevat het adres van de volgende op te halen instructie, gaat tijdens het ophalen verder en verandert wanneer een vertakking wordt gevolgd.
Een sprong terug naar adres 0 vervangt het volgende adres in de PC, zodat het programma een lus kan herhalen.

R

RAM
RAM is lees- en schrijfbaar werkgeheugen met directe toegang tot locaties; gewoon RAM in een computer is vluchtig en bevat instructies en gegevens die worden gebruikt.
Een teksteditor bewaart de huidige inhoud van een document in RAM, terwijl een opgeslagen kopie op niet-vluchtige opslag staat.
realtimebesturingssysteem
Een realtimebesturingssysteem biedt vastgelegde garanties voor de reactietijd van taken waarvan de correctheid afhangt van het halen van deadlines.
Een reactie van een industriële besturing moet vóór de deadline aankomen, ook als een latere reactie dezelfde waarde zou berekenen.
register
Een register is een kleine, zeer snelle opslaglocatie in de processor die een direct benodigde werkwaarde, een adres of een instructie bevat.
Door een lusteller in een register te bewaren hoeft die werkwaarde niet herhaaldelijk uit het hoofdgeheugen te worden opgehaald.
rekenkundige en logische eenheid
De rekenkundige en logische eenheid is een schakeling in de CPU die rekenkundige bewerkingen, bitsgewijze logica, verschuivingen en vergelijkingen uitvoert en eigenschappen van resultaten vastlegt.
Als je een waarde van zichzelf aftrekt, krijg je nul. De ALU kan dat vastleggen voor een volgende voorwaardelijke vertakking.
RISC en CISC
RISC en CISC zijn ontwerpstijlen voor instructiesets die respectievelijk de voorkeur geven aan regelmatige eenvoudige bewerkingen en aan complexere bewerkingen.
De gecomprimeerde vormen van RISC-V laten zien waarom een RISC-ontwerp niet per definitie één instructielengte heeft.
ROM
ROM is niet-vluchtig geheugen dat wordt gebruikt voor blijvende, normaal gesproken vaste inhoud; moderne firmware gebruikt daarentegen vaak bijwerkbaar flashgeheugen.
Als je de veelvuldig beschreven bestandsruimte van een telefoon “ROM” noemt, verwar je de flashopslag met vaste opstartinhoud.
ruimtelijke lokaliteit
Ruimtelijke lokaliteit is de neiging om adressen in de buurt van een onlangs gebruikt adres te raadplegen, waardoor kopieën van aangrenzende bytes nuttig zijn.
Het lezen van opeenvolgende lijstelementen heeft voordeel als één opgehaalde cachelijn meerdere daarvan dichtbij brengt.

S

secundaire opslag
Secundaire opslag bewaart programma’s en gegevens zonder stroom en biedt blijvende capaciteit die langzamer bereikbaar is dan het hoofdgeheugen dat als werkgeheugen dient.
Een toepassingsbestand blijft op de SSD staan nadat het draaiende proces is geëindigd en het RAM ervan is teruggenomen.
slijtagespreiding
Slijtagespreiding is een techniek van een flashcontroller die wis- en schrijfbewerkingen over cellen verdeelt om hun beperkte schrijfduurzaamheid te spreiden.
Door herhaalde schrijfbewerkingen over cellen te verdelen, voorkom je dat één vaak bijgewerkt gebied vroegtijdig verslijt.
software
Software bestaat uit programma’s en de gegevens waarmee ze werken en levert de instructies en informatie die hardware nuttige taken geven.
Een afbeeldingseditor gebruikt software-instructies om de opgeslagen kleurwaarden van een foto te veranderen.
SRAM
SRAM is vluchtig geheugen dat bits zonder verversing vasthoudt in latchachtige circuits zolang er stroom is, en zo snelle maar per bit dure opslag biedt.
CPU-caches gebruiken SRAM om toegangsvertragingen te verminderen, ook al kost het per byte meer dan DRAM als hoofdgeheugen.
SSD
Een SSD gebruikt niet-vluchtige flashcellen zonder bewegende onderdelen en biedt snelle toegang tot blijvend opgeslagen programma’s en bestanden op willekeurige locaties.
Een SSD is geschikt voor actieve bestanden op een laptop omdat snelle toegang en schokbestendigheid helpen bij draagbaar gebruik.
stapelgeheugen
Het stapelgeheugen is een geheugengebied van een proces dat actieve functieaanroepen bijhoudt, inclusief retouradressen en lokale waarden die deze aanroepen nodig hebben.
Een functieaanroep voegt werkinformatie toe en bij terugkeer komt het deel van die aanroep op de stapel vrij.
stapeloverloop
Een stapeloverloop ontstaat wanneer de vraag naar aanroepstapelruimte groter is dan de beschikbare ruimte, vaak nadat functieaanroepen zich zonder eindpunt blijven herhalen.
Een functie die zichzelf blijft aanroepen, voegt aanroepgegevens toe totdat de beschikbare stapelruimte van het proces op is.
statisch en dynamisch linken
Statisch linken kopieert benodigde bibliotheekcode naar een uitvoerbaar bestand; dynamisch linken verbindt het met afzonderlijk geleverde gedeelde bibliotheken.
Een dynamisch gelinkt programma start mogelijk niet als een vereiste compatibele gedeelde bibliotheek ontbreekt.
statusvlag
Een statusvlag is een opgeslagen toestand in de CPU die door een bewerking wordt ingesteld, zoals een nul of negatief resultaat, en die een latere instructie kan controleren.
Een voorwaardelijke vertakking kan de nulvlag controleren om te beslissen of de uitvoering doorgaat of naar een ander adres springt.
systeem op een chip
Een systeem op een chip combineert verschillende computerfuncties, zoals CPU, grafische verwerking en apparaatbesturing, op één geïntegreerde chip.
Een telefoon gebruikt een systeem op een chip om veel computerfuncties in een klein, energiezuinig apparaat onder te brengen.
systeemaanroep
Een systeemaanroep is een gecontroleerd verzoek van een programma aan de kernel van het besturingssysteem om een beschermde dienst, zoals toegang tot bestanden of apparaten.
De kernel kan de bestandsrechten van de gebruiker controleren voordat die een leesverzoek van een toepassing uitvoert.

T

temporele lokaliteit
Temporele lokaliteit is de neiging om onlangs gebruikte instructies of gegevens binnenkort opnieuw te gebruiken, waardoor bewaarde kopieën nuttig zijn.
Een lus leest en werkt de eigen teller herhaaldelijk bij en hergebruikt zo dezelfde werkgegevens in korte tijd.
terugschrijven
Terugschrijven is de fase in de uitvoering van een instructie die een berekend resultaat in het bestemmingsregister of op de bestemmingslocatie in het geheugen plaatst.
Na een rekenkundige bewerking maakt het wegschrijven van het resultaat naar de bestemming het beschikbaar voor latere instructies.
thermische snelheidsbegrenzing
Thermische snelheidsbegrenzing is het verlagen van de klokfrequentie van de processor wanneer de temperatuur te hoog is, waardoor de chip wordt beschermd maar minder werk per tijdseenheid verricht.
Een langdurige berekening kan langzamer worden wanneer de koeling de warmte die bij de eerdere klokfrequentie ontstaat niet kan afvoeren.
toegangstijd en overdrachtssnelheid
Toegangstijd is de vertraging totdat gegevens beginnen aan te komen, terwijl overdrachtssnelheid de hoeveelheid is die per seconde wordt geleverd zodra de overdracht bezig is.
Bij duizenden kleine bestanden treedt de toegangsvertraging herhaaldelijk op, terwijl bij één groot bestand de aanhoudende overdrachtssnelheid zwaarder weegt.
transistor
Een transistor is een elektronisch bestuurd onderdeel dat in digitale circuits als schakelaar werkt en helpt bits weer te geven en te bewerken.
Groepen transistors implementeren de poortregels die worden gebruikt in een rekenkundige en logische eenheid en de bijbehorende registers.
trefferpercentage
Het trefferpercentage is het aantal toegangen waarbij de inhoud in een cache wordt gevonden, gedeeld door het totale aantal toegangen. Het geeft aan hoe vaak de snelle kopie beschikbaar is.
Een cache die 950 van de 1.000 gevraagde waarden vindt, heeft een trefferpercentage van 95% en een misserpercentage van 5%.

U

uitvoerapparaat
Een uitvoerapparaat presenteert de resultaten van een computer of zet die om in een fysieke handeling, bijvoorbeeld door een beeld te tonen of een actuator te bewegen.
Een klep is een uitvoerapparaat wanneer een besturing die opent als reactie op een gemeten temperatuur.
uitvoerbaar bestand
Een uitvoerbaar bestand is een programmabestand dat is voorbereid om te worden geladen en uitgevoerd en code en ondersteunende informatie bevat in het verwachte formaat van een platform.
Een systeemeigen uitvoerbaar bestand kan afhankelijk zijn van zowel de ISA van de doelprocessor als het bestandsformaat van het besturingssysteem.

V

vertakking
Een vertakking is een instructie die het adres van de volgende instructie verandert, onvoorwaardelijk of alleen wanneer aan een gestelde voorwaarde is voldaan.
Een instructie die bij nul springt, zoals JUMPZ, stuurt een CPU alleen naar de bestemming als de accumulator bij uitvoering nul is.
virtueel geheugen
Virtueel geheugen geeft processen een eigen adresruimte, koppelt hun adressen aan fysiek geheugen en handhaaft daarbij toegangsrechten.
Twee processen kunnen hetzelfde geschreven virtuele adres gebruiken terwijl ze hun privéwaarden in verschillende RAM-pagina’s bewaren.
virtuele machine
Een virtuele machine voor een programmeertaal is software die de instructieomgeving biedt die nodig is om bytecode op een fysieke computer uit te voeren.
De JVM interpreteert of compileert Java-bytecode met een implementatie die voor het hostplatform is gebouwd.
Von Neumann-architectuur
De Von Neumann-architectuur plaatst programma-instructies en gegevens in één hoofdgeheugen dat is verbonden met een processor en invoer- en uitvoerapparaten.
In het klassieke ontwerp concurreren het ophalen van een instructie en het lezen van gegevens om het gedeelde geheugenpad.

W

waarheidstabel
Een waarheidstabel vermeldt de uitvoer van een circuit voor elke mogelijke combinatie van invoerwaarden en maakt zo de volledige invoer-uitvoerregel expliciet.
Een poort met twee ingangen heeft vier rijen nodig omdat de twee bits vier mogelijke invoercombinaties hebben.
wet van Moore
De wet van Moore is de historische waarneming dat het aantal transistors op een chip gedurende een lange periode ongeveer elke twee jaar verdubbelde.
Meer transistors kunnen grotere caches en extra processorkernen opleveren zonder de snelheid van elk programma te verdubbelen.
woord
Een woord is de natuurlijke grootte van de gegevens die een processor in één bewerking verwerkt, vaak weerspiegeld in de breedte van de algemene registers.
Een woord van 64 bits biedt plaats aan acht bytes, maar dat vereist niet dat elke verbinding 64 parallelle draden gebruikt.

X

XOR-poort
Een XOR-poort met twee ingangen geeft 1 als de invoerwaarden verschillen en 0 als ze gelijk zijn en implementeert zo de regel voor het sombit van een halve opteller.
Een halve opteller die 1 en 1 ontvangt, heeft een sombit nul uit XOR en een overdrachtsbit uit EN.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag