Een apparaat krijgt CPU-aandacht via een proces dat interruptafhandeling wordt genoemd . Hier is een overzicht:
1. Apparaatverzoek: Een randapparaat (zoals een toetsenbord, muis, harde schijf, netwerkkaart, enz.) heeft de aandacht van de CPU nodig. Dit gebeurt wanneer het apparaat een bewerking voltooit (bijvoorbeeld een toetsaanslag, voltooiing van de gegevensoverdracht) of een fout tegenkomt.
2. Onderbrekingssignaal: Het apparaat stuurt een *interrupt request (IRQ)* signaal naar de CPU. Dit signaal wordt doorgaans verzonden via een speciale hardwarelijn. De interrupt is in wezen een signaal dat zegt:"Hé CPU, ik heb je nodig!"
3. Interrupt-controller: Voordat de IRQ rechtstreeks de CPU bereikt, gaat deze vaak via een *interrupt-controller*. Deze controller beheert de interruptverzoeken van meerdere apparaten, geeft prioriteit aan deze en zorgt ervoor dat slechts één interrupt tegelijk wordt afgehandeld. De controller kan ook interruptmaskering uitvoeren (waarbij bepaalde interrupts worden genegeerd) op basis van systeemprioriteiten.
4. Afhandelingsroutine onderbreken: De CPU stopt bij ontvangst van het interruptsignaal de huidige uitvoering (waarbij de status wordt opgeslagen) en springt naar een vooraf gedefinieerde *interrupt handler* (of interrupt service routine - ISR). Dit is een specifiek stukje code dat is ontworpen om de verzoeken van dat specifieke apparaat af te handelen.
5. Serviceverzoek: De interrupthandler onderzoekt de bron van de interrupt (welk apparaat deze heeft gegenereerd) en onderneemt de juiste actie. Dit kan het lezen van gegevens van het apparaat inhouden, het verzenden van gegevens naar het apparaat of het afhandelen van een foutconditie.
6. Terug na onderbreking: Na het interruptverzoek te hebben afgehandeld, herstelt de interrupthandler de CPU-status van vóór de interrupt plaatsvond en geeft hij de controle terug aan het programma dat werd onderbroken. De CPU hervat de uitvoering vanaf het punt waar deze was gebleven.
Verschillende soorten interrupts:
* Hardware onderbreekt: Gegenereerd door hardwareapparaten zoals hierboven vermeld.
* Software onderbreekt: Gegenereerd door software-instructies (bijvoorbeeld `int`-instructie in x86). Deze worden vaak gebruikt voor systeemoproepen of uitzonderingen.
Prioriteit en planning:
De CPU en interruptcontroller beheren interruptprioriteiten. Interrupts met een hogere prioriteit kunnen interrupts met een lagere prioriteit onderbreken. De planner van het besturingssysteem speelt een cruciale rol bij het beheren van deze onderbrekingen en zorgt ervoor dat kritieke apparaten snel worden onderhouden. Een slecht ontworpen interruptsysteem kan leiden tot systeeminstabiliteit of gegevensverlies.
Kortom, het is een gecoördineerde hardware-software-interactie waarbij het apparaat een behoefte aan aandacht signaleert, het systeem prioriteit geeft aan dat verzoek en het beheert, en de CPU tijdelijk zijn focus verlegt om het apparaat te onderhouden voordat hij zijn vorige taak hervat. |