1. Avbruddsdrevet inngang/utgang
Avbruddsdrevet input/output (I/O) er en mekanisme der I/O-enheten signaliserer CPU-en når den har data eller er klar til å motta data, i stedet for at CPU-en konstant sjekker statusen til I/O-enheten.
På denne måten kan CPU fortsette å utføre instruksjoner mens I/O-overføringen skjer, noe som reduserer ventetiden betydelig og øker den generelle effektiviteten til systemet.
Slik fungerer det:
- I/O-enheten fungerer uavhengig av CPU og opprettholder en buffer for lagring av data.
- Når bufferen blir full (for inngang) eller tom (for utgang), genererer enheten et avbruddssignal til CPU.
- Ved mottak av avbruddet, stopper CPU-en midlertidig sin nåværende kjøring, og den tilsvarende avbruddsservicerutinen (ISR) håndterer dataoverføringen til/fra I/O-bufferen.
- Når dataoverføringen er fullført, returnerer ISR kontrollen til hovedprogrammet, og CPU-en gjenopptar sin forrige oppgave.
2. Programmert inngang/utgang
Programmert input/output er en enklere I/O-mekanisme der CPUen tar en proaktiv rolle i å administrere dataoverføringer med I/O-enhetene. Den poller kontinuerlig I/O-enheten med forhåndsdefinerte intervaller for å sjekke om den er klar til å utveksle data.
Slik fungerer det:
- CPU sjekker med jevne mellomrom et statusregister for I/O-enheten for å finne ut om den er klar til å sende eller motta data.
- Hvis enheten er klar, starter CPU-en overføringen ved å sende eller motta data fra I/O-porten eller minnetilordnet adresse.
- CPU-en gjentar denne prosessen kontinuerlig til alle nødvendige data er overført.
Når det gjelder effektivitet, er avbruddsdrevet I/O generelt å foretrekke fremfor programmert I/O fordi det muliggjør bedre utnyttelse av CPU ved å eliminere unødvendig og gjentatt polling av I/O-enheten. Imidlertid er programmert I/O enklere å implementere og kan være egnet for mindre tidskritiske applikasjoner.