VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:15/93
RoΦnφk:1993
Rubrika/kategorie: Co (ne)najdete ve slovnφku

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

Interrupt

Kdy₧ se v polovin∞ Φty°icßt²ch let zrodila tzv. von Neumannova architektura jako ucelenß p°edstava o tom, jak by poΦφtaΦe m∞ly vypadat a jak by m∞ly fungovat, jednφm z jejφch charakteristick²ch rys∙ byla p°φsnß sekvenΦnost. SpoΦφvala v tom, ₧e jednotlivΘ Φinnosti se vykonßvaly postupn∞, a nebylo pamatovßno na to, ₧e by se vφce Φinnostφ mohlo vykonßvat soub∞₧n∞ (paraleln∞), Φi se alespo≥ zΦßsti p°ekr²vat v Φase.

V²hodou tΘto p°φsnΘ sekvenΦnosti byla mo₧nost, aby procesor poΦφtaΦe p°φmo zajiÜ¥oval Φi alespo≥ °φdil veÜkerΘ Φinnosti - tedy nap°φklad i vstupn∞-v²stupnφ operace. Nap°φklad kdy₧ prßv∞ probφhajφcφ program pot°eboval n∞co vytisknout na tiskßrn∞, probφhala celß operace tisku tak, ₧e procesor postupn∞ sßm p°edßval tiskßrn∞ jednotlivΘ znaky k tisku a ta je sv²m tempem tiskla. Procesor poΦφtaΦe se celou svou kapacitou v∞noval pouze obsluze tiskßrny - v dob∞, kdy tiskßrna nebyla schopna p°evzφt dalÜφ znak k tisku, musel procesor neustßle Φekat v programovΘ smyΦce, ze kterΘ v₧dy vystoupil jen na to, aby tiskßrn∞ p°edal dalÜφ znak, a zase se do Φekacφ smyΦky vrßtil. Te∩ si ale uv∞domme, jak² je pom∞r rychlostφ tiskßrny a procesoru: omezme se jen na velmi hrub² odhad a p°edstavme si b∞₧nou jehliΦkovou tiskßrnu, kterß tiskne rychlostφ 100 znak∙ za sekundu - v pr∙m∞ru je tedy schopna p°evzφt dalÜφ znak k tisku ka₧d²ch 10 milisekund. Naproti tomu procesor zvlßdne za tutΘ₧ dobu (tj. 10 milisekund) vykonat °ßdov ∞ desetitisφce a₧ statisφce strojov²ch instrukcφ (podle toho, o jak² procesor jde a na jakΘ pracuje taktovacφ frekvenci). To ale znamenß, ₧e procesor je efektivn∞ vyu₧it (pro p°enos dat) jen na zlomky procent a po celou dobu tisku se nachßzφ v "neu₧iteΦnΘ" programovΘ smyΦce.

V dob∞ t∞sn∞ po vzniku von Neumannovy architektury sice nebyly procesory jeÜt∞ tak rychlΘ jako dnes a disproporce mezi jejich rychlostmi a rychlostmi perifernφch za°φzenφ nebyla jeÜt∞ tak ohromnß jako dnes, ale p°esto byla i tehdy ne·nosn∞ velkß. Proto se pom∞rn∞ brzy (zhruba v roce 1956) ukßzalo jako nezbytnΘ zavΘst do von Neumannovy architektury alespo≥ urΦitou mφru paralelismu, umo₧≥ujφcφ osvobodit procesor od p°φmΘho °φzenφ a zajiÜ¥ovßnφ vstupn∞-v²stupnφch operacφ. MyÜlenka byla takovß, ₧e vstupn∞-v²stupnφ operace budou probφhat nezßvisle na procesoru a ten se mezitφm bude moci v∞novat jin²m ·kol∙ (paraleln∞ ke vstupn∞-v²stupnφm operacφm). Krom∞ toho budou tyto paralelnφ Φinnosti probφhat sv²mi vlastnφmi rychlostmi, a nebudou tedy vzßjemn∞ synchronizovßny (proto se v tΘto souvislosti hovo°φ o asynchronnφch vstupn∞-v²stupnφch operacφch).

Jakmile se ale p°ipustila mo₧nost takov²chto asynchronnφch vstupn∞-v²stupnφch operacφ, vyvstala rßzem pot°eba vhodnΘho mechanismu, kter² by umo₧nil vhodnou komunikaci mezi paraleln∞ probφhajφcφmi Φinnostmi. K Φemu je takovßto komunikace zapot°ebφ?

Kdy₧ procesor p°estal p°φmo °φdit vstupn∞-v²stupnφ operace, ztratil s tφm zßrove≥ i p°ehled o tom, jak dlouho tyto operace trvajφ. Mohl by se sice opakovan∞ dotazovat p°φsluÜnΘho za°φzenφ, zda ji₧ svou prßci dokonΦilo, ale to se vlastn∞ rovnß v²Üe popsanΘ situaci bez asynchronnφch vstupn∞-v²stupnφch operacφ. Mnohem efektivn∞jÜφ je takovΘ °eÜenφ, kdy je na dokonΦenφ asynchronnφ vstupn∞-v²stupnφ operace procesor explicitn∞ upozorn∞n tφm, kdo tuto operaci provßdφ - tedy p°φsluÜn²m za°φzenφm. K tomu je ovÜem zapot°ebφ vhodn² mechanismus, kter²m je tzv. p°eruÜenφ (interrupt).

Mechanismus p°eruÜenφ umo₧≥uje, aby za°φzenφ ve vhodn² okam₧ik vyslalo procesoru signßl, kter²m jej ₧ßdß o pozornost. Procesor na tuto ₧ßdost zareaguje tφm, ₧e p°eruÜφ svou momentßlnφ Φinnost (tj. p°eruÜφ prßv∞ provßd∞n² program, odsud pojmenovßnφ celΘho mechanismu) a spustφ jin² program - tzv. obslu₧n² program p°eruÜenφ (interrupt service routine). Po dokonΦenφ tohoto obslu₧nΘho programu se pak procesor vracφ zp∞t k d°φve p°eruÜenΘ Φinnosti.

Procesor je tedy upozorn∞n samotnou ₧ßdostφ, kterou mu vyÜle p°φsluÜnΘ za°φzenφ. Co je ale p°φΦinou tohoto upozorn∞nφ - zda jde o signalizaci ·sp∞ÜnΘho konce vstupn∞-v²stupnφ operace, o signalizaci chybovΘ situace p°i jejφm provßd∞nφ, nebo jeÜt∞ o n∞co jinΘho, to obvykle zjiÜ¥uje a₧ p°φsluÜn² obslu₧n² program, kter² je na zßklad∞ ₧ßdosti o p°eruÜenφ vyvolßn. Ten takΘ m∙₧e zajistit provedenφ nejr∙zn∞jÜφch akcφ, kterΘ za°φzenφ po₧aduje.

Vra¥me se znovu k naÜemu p°φkladu s tiskßrnou. Je-li k dispozici mechanismus p°eruÜenφ, m∙₧e jej tiskßrna vyu₧φvat takov²m zp∙sobem, ₧e v okam₧iku, kdy je p°ipravena k p°evzetφ dalÜφho znaku, vyÜle procesoru ₧ßdost o p°eruÜenφ. Tφm si vlastn∞ tiskßrna "°φkß" o zaslßnφ novΘho znaku. Procesor tuto ₧ßdost p°ijme, vyvolß p°φsluÜn² obslu₧n² program, ten zajistφ p°edßnφ dalÜφho znaku tiskßrn∞ a procesor se pak zase vrßtφ ke svΘ p∙vodnφ Φinnosti (tj. k provßd∞nφ p°eruÜenΘho programu).

Zd∙razn∞me si znovu, v Φem se tato situace liÜφ od p°edchozφ, kdy procesor Φekal na p°ipravenost tiskßrny v programovΘ smyΦce. Procesor nynφ nepot°ebuje sßm zjiÜ¥ovat, kdy je tiskßrna p°ipravena a kdy ne, proto₧e ona se mu "ozve" sama. Procesor se tedy veÜkerou svou kapacitou m∙₧e v∞novat n∞Φemu jinΘmu - provßd∞nφ jinΘho programu.

Mechanismus p°eruÜenφ lze vyu₧φt i k mnoha dalÜφm ·Φel∙m, ne₧ jakΘ jsme si zde ji₧ naznaΦili. Obecn∞ jde o zp∙sob, jak²m je mo₧nΘ procesor p°inutit, aby zareagoval na urΦit² vn∞jÜφ podn∞t, jeho₧ p°φΦina nemusφ bezprost°edn∞ souviset s prßv∞ provßd∞n²m programem. NejΦast∞ji jde o v²znaΦnΘ stavy r∙zn²ch za°φzenφ (signalizujφcφ nejen ·sp∞ÜnΘ dokonΦenφ operace Φi p°ipravenost k p°evzetφ dalÜφch dat), ale takΘ nap°. o jejich poruchu apod. DalÜφ mo₧nostφ jsou signßly od ΦasovaΦ∙ (obvod∙, kterΘ m∞°φ Φas), zßsahy operßtora (zmßΦknutφ tlaΦφtka reset apod.), signalizace problΘm∙ s napßjenφm od jednotky UPS (zdroje nep°eruÜitelnΘho nap∞tφ apod.). Mechanismus p°eruÜenφ je ovÜem tak Üikovn²m mechanismem, ₧e se pou₧φvß i pro oÜet°enφ nestandardnφch situacφ, kterΘ p°φmo souvisφ s prßv∞ provßd∞n²m programem. P°eruÜenφ m∙₧e dokonce b²t vyvolßno prßv∞ probφhajφcφm programem zcela zßm∞rn∞ a ·mysln∞. Ale o tom a₧ p°φÜt∞.


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm