II dio Mikroprocesor

2.2. Sistem prekida

Sistem prekida predstavlja mehanizam koji omogućava efikasniji rad računara. Napr. većina vanjskih uređaja je mnogo sporija od procesora. Pri prenošenju dva podatka na štampač, procesor mora da sačeka štampač da završi operaciju štampanja prvog da bi prenio drugi podatak. To besposleno čekanje za procesor predstavlja izgubljeno vrijeme. Upotreba prekida omogućava procesoru da izvršava druge instrukcije dok se ne završi ulazno/izlazna (U/I) operacija na štampaču.
• Na Slici 2 je prikazan rad aplikacije koja iza svakog koraka obrade štampa dobijene rezultate.
• Segmenti koda označeni sa (1), (2) i (3) predstavljaju niz instrukcija koji ne uključuje ulaz ili izlaz.
• WRITE predstavlja poziv U/I programa koji treba da obavi tekuću U/I operaciju.

U/I program čine tri komponente:

• Niz instrukcija označen sa (4) na slici, koji vrši pripremu tekuće U/I operacije. Uključuje prepisivanje podataka koji treba da se odštampaju u posebni bafer i pripremu parametara za izdavanje komande uređaju.
• Stvarna U/I komanda. U njoj se izdaje komanda uređaju koji obavlja zahtijevanu akciju. Ako ne postoji prekid, aplikacija mora da čeka na završetak rada uređaja (određuje se ponavljanjem testa za kraj operacije).
• Niz instrukcija označen sa (5) na slici, koji kompletira zahtijevanu operaciju. Ovo uključuje postavljanje indikatora uspješnosti završetka operacije.

Slika 2. Tok izvršavanja programa sa i bez sistema prekida

Pošto U/I operacija može da zahtijeva relativno veliku količinu vremena, U/I program mora da stane sa radom i čeka njen završetak, istovremeno zaustavljajući i izvršavanje korisničkog programa za taj vremenski period.
Sa uvođenjem prekida, za vrijeme dok traje U/I operacija, procesor može da bude angažovan na izvršavanju drugih instrukcija, kao na Slici 2. (b) i (c). Kao i ranije, korisnički program dolazi do tačke u kojoj vrši poziv sistemskog programa radi obavljanja operacije pisanja. U/I program koji se poziva u ovom slučaju uključuje samo pripremu koda i poziv U/I komande, poslije čega se kontrola vraća korisničkom programu. Za to vrijeme spori uređaj (ovdje štampač) počinje sa prihvatanjem podataka iz računara i njihovom štampom. Sve ove operacije se izvršavaju istovremeno sa nastavljenim izvršavanjem korisničkog programa.
Kada vanjski uređaj završi operaciju i postane spreman za prijem dodatnih podataka iz procesora on signalizira to stanje procesoru slanjem zahtjeva za prekid. Tada procesor prekida izvršavanje tekućeg programa, aktivira upravljački program (tzv. interrupt handler) koji servisira vanjski uređaj i nastavlja sa izvršavanjem prekinutog programa po završetku servisiranja vanjskog uređaja. Na slici je tačka u kojoj se desio prekid označena sa →. Sa gledišta korisničkog programa prekid upravo predstavlja prekid normalnog redoslijeda izvršavanja instrukcija. Izvršavanje se nastavlja kada se završi obrada prekida. U slučaju da je program dospio do naredne write naredbe prije kompletiranja prethodne U/I operacije, nova U/I operacija se inicira tek po završetku prethodne (Slika 2. (c)). Operativni sistem je odgovoran za prekid i nastavak izvršavanja korisničkog programa na istom mjestu gdje je i prekinut. Zbog toga, korisnički program ne sadrži nikakve posebne naredbe kojima vrši obradu prekida.
U višekorisničkom sistemu u istom trenutku može da se javi više prekida koje su generisali različiti programi ili uređaji. Načini obrade višestrukih prekida su:

  1. Onemogućavanje prekida, kada se ostali prekidi onemogućuju dok se ne završi obrada tekućeg. Onemogućavanje se vrši tako što procesor ignoriše novonastale prekide koji se odlažu u red. Po završetku obrade tekućeg, procesor provjerava stanje u redu i počinje obradu prekida koji je prvi u redu. Ovaj način ima ozbiljan nedostatak jer ne vodi računa o prioritetu prekida. Naime, svi prekidi nemaju jednaku važnost u sistemu – npr. prekid kojim štampač javlja da je završio posao je od manje važnosti za sistem od npr. prekida kojim se javlja postojanje fizičke greške na nekom od uređaja sistema.
  2. Definisanje prioriteta prekida, uz davanje dozvole prekidima višeg prioriteta da prekinu izvršavanje (sistemskog) programa koji vrši obradu prekida sa nižim prioritetom. Ovaj način se koristi u savremenim računarskim sistemima.

2.1. Savremeni računarski sistem    <    Index    >    2.3. Brzina obrade podataka