1. Interrupt-aangedreven invoer/uitvoer
Interrupt-driven input/output (I/O) is een mechanisme waarbij het I/O-apparaat de CPU signaleert wanneer deze gegevens heeft of gereed is om gegevens te ontvangen, in plaats van dat de CPU voortdurend de status van het I/O-apparaat controleert.
Op deze manier kan de CPU doorgaan met het uitvoeren van instructies terwijl de I/O-overdracht plaatsvindt, waardoor de wachttijden aanzienlijk worden verkort en de algehele efficiëntie van het systeem wordt verhoogd.
Hoe het werkt:
- Het I/O-apparaat werkt onafhankelijk van de CPU en onderhoudt een buffer voor het opslaan van gegevens.
- Wanneer de buffer vol (voor invoer) of leeg (voor uitvoer) raakt, genereert het apparaat een interruptsignaal naar de CPU.
- Bij ontvangst van de interrupt pauzeert de CPU tijdelijk de huidige uitvoering, en de overeenkomstige interruptserviceroutine (ISR) verzorgt de gegevensoverdracht naar/van de I/O-buffer.
- Zodra de gegevensoverdracht is voltooid, geeft de ISR de controle terug aan het hoofdprogramma en hervat de CPU zijn vorige taak.
2. Geprogrammeerde invoer/uitvoer
Geprogrammeerde invoer/uitvoer is een eenvoudiger I/O-mechanisme waarbij de CPU een proactieve rol speelt bij het beheren van gegevensoverdrachten met de I/O-apparaten. Het controleert voortdurend het I/O-apparaat met vooraf gedefinieerde intervallen om te controleren of het klaar is om gegevens uit te wisselen.
Hoe het werkt:
- De CPU controleert periodiek een statusregister van het I/O-apparaat om te bepalen of het gereed is om gegevens te verzenden of te ontvangen.
- Als het apparaat gereed is, initieert de CPU de overdracht door gegevens te verzenden of te ontvangen via de I/O-poort of het in het geheugen toegewezen adres.
- De CPU herhaalt dit proces continu totdat alle benodigde gegevens zijn overgedragen.
In termen van efficiëntie heeft interruptgestuurde I/O over het algemeen de voorkeur boven geprogrammeerde I/O, omdat hierdoor een beter gebruik van de CPU mogelijk is door onnodig en herhaaldelijk pollen van het I/O-apparaat te elimineren. Geprogrammeerde I/O is echter eenvoudiger te implementeren en zou geschikt kunnen zijn voor minder tijdkritische toepassingen. |