Anbefalet, 2022

Redaktørens Valg

Forskel mellem afbrydelse og polling i OS

Vi har mange eksterne enheder knyttet til CPU'en som en mus, tastatur, scanner, printer osv. Disse enheder har også brug for CPU-opmærksomhed. Antag, at en CPU er optaget i at vise en PDF, og du klikker på ikonet mediaspiller på skrivebordet. Selvom CPU'en ikke har nogen ide om, hvornår en begivenhed som denne ville forekomme, men den skal reagere på sådanne input fra I / O-enhederne. Afbrydelse og polling er de to måder at håndtere begivenhederne genereret af de enheder, der kan ske på et hvilket som helst tidspunkt, mens CPU er optaget i at udføre en anden proces.

Polling og Interrupt lade CPU stoppe, hvad det gør i øjeblikket og reagere på den vigtigere opgave. Polling og Interrupt er forskellige fra hinanden i mange aspekter. Men det grundlæggende punkt, der skelner mellem polling og interrupt, er, at i CPU fortsætter kontrollen af ​​I / O-enheder med jævne mellemrum, om det har brug for CPU-service, mens i / O-enheden afbryder CPU'en og fortæller CPU, at den har brug for CPU-tjeneste . Jeg har diskuteret nogle forskelle mellem afbrydelse og polling i sammenligningstabellen nedenfor, se venligst.

Sammenligningstabel

Grundlag for sammenligningAfbrydePolling
GrundlæggendeEnheden meddeler CPU, at den har brug for CPU-opmærksomhed.CPU kontrollerer konstant enhedsstatus, om den har brug for CPU's opmærksomhed.
MekanismeEn afbrydelse er en hardware mekanisme.Polling er en protokol.
serviceringAfbryd håndteringstjenester på enheden.CPU tjenester enheden.
TegnAfbrydelseslinje angiver, at enheden skal servicere.Comand-ready bit angiver, at enheden skal servicere.
CPUCPU'en forstyrres kun, når en enhed har brug for service, hvilket sparer CPU-cyklusser.CPU skal vente og kontrollere, om en enhed skal servicere, som spilder mange CPU-cyklusser.
HændelseEn afbrydelse kan ske når som helst.CPU afstemmer enhederne med jævne mellemrum.
EffektivitetAfbrydelse bliver ineffektiv, når enhederne fortsætter med at afbryde CPU'en gentagne gange.
Polling bliver ineffektiv, når CPU sjældent finder en enhed klar til service.
EksempelLad bellringen derefter åbne døren for at kontrollere, hvem der er kommet.Fortsæt med at åbne døren for at kontrollere, om nogen er kommet.

Definition af afbrydelse

En afbrydelse er en hardwaremekanisme, der gør det muligt for CPU at opdage, at en enhed har brug for sin opmærksomhed. CPU'en har en ledningsafbryder -forespørgselslinie, som kontrolleres af CPU efter udførelse af hver enkelt instruktion. Når CPU registrerer et afbrydningssignal på afbrydelseslinjen, stopper CPU sin aktuelt udførte opgave og svarer til afbrydelsen, der sendes af I / O-enheden, ved at sende kontrollen til afbryderhåndtereren . Afbryderhåndtereren løser afbrydelsen ved at servicere enheden.

Selvom CPU ikke er opmærksom på, hvornår en afbrydelse ville opstå, da den kan forekomme til enhver tid, men den skal reagere på afbrydelsen, når den forekommer.

Når afbryderhåndtereren afslutter udførelsen af ​​afbrydelsen, genoptager CPU'en udførelsen af ​​den opgave, den har stoppet for at reagere på afbrydelsen. Software, hardware, bruger, nogle fejl i programmet osv. Kan også generere en afbrydelse. Afbrydelser, der håndterer CPU-karakteren, fører til multitasking, dvs. en bruger kan udføre en række forskellige opgaver på samme tid.

Hvis der sendes mere end en afbrydelse til CPU'en, hjælper afbryderhåndtereren med at styre de afbrydelser, der venter på at blive behandlet. Da afbryderhåndteringen udløses af modtagelsen af ​​en afbrydelse, prioriterer den afbrydelserne, der venter på at blive behandlet af CPU'en og arrangerer dem i kø for at blive serviceret.

Definition af polling

Som vi har set i afbrydelser, kan input fra I / O-enhed komme til ethvert tidspunkt, hvor der anmodes CPU om at behandle det. Polling er en protokol, der meddeler CPU, at en enhed har brug for sin opmærksomhed. I modsætning til i afbrydelser, hvor enheden fortæller CPU, at den har brug for CPU-behandling, spørger i CPU-processen, at CPU'en stadig spørger I / O-enheden, om den har brug for CPU-behandling.

CPU'en tester kontinuerligt hver enkelt enhed, der er fastgjort til den, for at detektere, om enheden har brug for CPU-opmærksomhed. Hver enhed har en kommandoklare bit, der angiver status for den pågældende enhed, dvs. om den har en kommando, der skal udføres af CPU eller ej. Hvis kommandobitten er indstillet 1, så har den nogle kommandoer, der skal udføres, hvis biten er 0, så har den ingen kommandoer. CPU har en travl bit, der angiver status for CPU, uanset om det er optaget eller ej. Hvis den optagne bit er indstillet 1, er det travlt med at udføre kommandoen for en enhed, ellers er det 0 .

Algoritme til afstemning

  • Når en enhed har nogle kommandoer, der skal udføres af CPU, kontrollerer den kontinuerligt den travle bit af CPU, indtil den bliver klar (0).
  • Når den optagne bit bliver klar, indstiller enheden skrive-bit i dens kommandoregister og skriver en byte i data-out-register.
  • Nu indstiller enheden (1) den kommandoklare bit.
  • Når CPU kontrollerer enhederne kommandoklare bit og finder den indstillet (1), sætter den (1) dens optaget bit.
  • CPU'en læser derefter enhedens kommandoregister og udfører kommandoen på enheden.
  • Efter udførelse af kommandoen sletter CPU (0) den kommandoerede bit, fejlbit af enheden for at indikere en vellykket udførelse af enhedenes kommando og yderligere sletter (0) dens travle bit også for at indikere, at CPU'en er fri til at udføre kommandoen for en anden enhed.

Nøgleforskelle mellem afbrydelse og polling i OS

  1. Ved afbrydelse meddeler enheden CPU'en, at den skal servicere, mens der i polling-CPU gentagne gange kontrolleres, om en enhed skal servicere.
  2. Afbrydelse er en hardwaremekanisme , da CPU'en har en lednings-, interrupt-request-linje, som signalerer, at afbrydelsen er opstået. På den anden side er polling en protokol, der holder kontrolbiterne opmærksom på, om en enhed har noget at udføre.
  3. Afbryderhåndterer håndterer de afbrydelser, der genereres af enhederne. På de andre hænder, i polling, CPU tjenester enheden, når de har brug for.
  4. Afbrydelser signaleres af interrupt-request linjen . Kommandoklare bit angiver imidlertid, at enheden skal servicere.
  5. Ved afbrydelser bliver CPU kun forstyrret, når en enhed afbryder det. På den anden side sparer CPU mange CPU-cyklusser ved gentagne gange at kontrollere den kommandoklare bit af hver enhed.
  6. En afbrydelse kan forekomme på et hvilket som helst tidspunkt, mens CPU holder afstemning enheden med jævne mellemrum .
  7. Afstemning bliver ineffektiv, når CPU fortsætter med at afprøve enheden og sjældent finder nogen enhed klar til service. På de andre hænder bliver afbrydelser ineffektive, når enhederne fortsætter med at afbryde CPU-behandlingen gentagne gange.

Konklusion:

Både polling og interrupts er effektive til at deltage i I / O-enhederne. Men de kan blive ineffektive under den særlige betingelse som beskrevet ovenfor.

Top