Prekinitve

Beseda prekinitev označuje dogodek, ki povzroči, da CPE začasno preneha izvajati tekoči program ter prične izvajati nek drug program, ki mu pravimo prekinitveni servisni program. Kakšni so servisni programi? Kratki in pogosto časovno omejeni. Kdo prekinitve povzroči? V/I enote ali kak drug del računalnika.

Prekinitve so osnovni mehanizem, s katerim lahko drugi deli računalnika pridejo do uslug CPE.

Posebna vrsta prekinitev so pasti. To so prekinitve, ki jih zahteva sama CPE. Delimo jih na programske pasti (sproži programer) ali pogojne pasti (se sprožijo ob izpolnitvi določenega pogoja).

Tipični primeri uporabe prekinitev in pasti:

  • zahteve V/I naprav,
  • napaka pri delovanju računalnika,
  • izpad elektrike,
  • aritmetična prekoračitev,
  • napaka strani ali segmenta,
  • dostop do zaščitene pomnilniške besede,
  • uporaba nedefiniranega ukaza,
  • klic programov operacijskega sistema in prehod v bolj privilegiran način delovanja...

Tabela prekinitvenih vektorjev pri Intel Pentium sistemih
številka prekinitvenega vektorja
opis
0
deljenje z nič (divide error)
1
napaka razhroščevalnika (debug exception)
2
ni vrednosti (null interrupt)
3
točka prekinitve (breakpoint)
4
prekoračitev obsega (INTO-detected overflow)
5
bound range exception
6
invalid opcode
7
device not available
8
double fault
9
coprocessor segment overrun
10
invalid task state segment
11
segment not present
12
stack fault
13
general protection
14
page fault
15
rezervirano
16
floating-point error
17
alignment check
18
machine check
19-31
rezervirano za intel
32-255
maskirne prekinitve

Različni izdelovalci procesorjev različno poimenujejo prekinitve: interrupts, exceptions, faults, aborts, traps...

Kakšno je dogajanje pri prekinitvah:

  1. normalno izvrševanje ukazov programa,
  2. shranjevanje stanja CPE ob pojavu zahteve za prekinitev, če je ta omogočena (prioritetni nivo CPE je v bistvu prioriteta programa, ki se izvaja),
  3. skok na prekinitveni servisni program in izvrševanje njegovih ukazov, ki pa je tudi lahko prekinjen (vgnezdene prekinitve),
  4. vrnitev iz prekinitvenega servisnega programa in obnovitev stanja CPE - to mora biti enako stanju na začetku točke 2.

 

V okviru zgradbe CPE morajo biti rešena naslednja vprašanja:

  • kako se shrani stanje CPU,
  • kdaj CPE reagira na prekinitveno zahtevo (ali se prekine ukaz, maskiranje prekinitev),
  • kje dobi naslov prekinitvenega servisnega programa (pri pasteh obstaja notranja tabela pasti z naslovi servisnih programov, pri prekinitvah pa mora naslov posredovati naprava).

To vprašanje je v bistvu enako vprašanju prepoznavanja naprave. Če vemo katera naprava je dala prekinitev, vemo tudi kateri program uporabiti. Kaj pa če je na en vhod priključenih več naprav? Lahko uporabimo programsko izpraševanje, to je branje registrov vseh naprav priključenih na vhod. Aktivira se servisni program prve naprave na katero se naleti in je prekinitev zahtevala. Slabost je počasnost.

Danes se za prepoznavanje naprave uporabljajo vektorske prekinitve. V t.i. prekinitveno prevzemnem ciklu naprava pošlje CPU naslov oziroma del naslova svojega prekinitvenega servisnega programa, ki mu pravimo prekinitveni vektor, delu naslova pa številka prekinitvenega vektorja. Ta vektor je lahko kar naslov, pogosteje pa predstavlja odmik od začetka tabele naslovov vseh prekinitvenih servisnih programov. S stališča CPE ni pomembno kdo je povzročil prekinitev temveč kateri program se mora izvesti. Prekinitveno prevzemni cikel je navaden bralni cikel z razliko, da CPE ne pričakuje podatkov iz pomnilnika temveč naslov prekinitvenega strežnega programa, ki naj se izvede.

Včasih lahko pride do prekinitve tudi pri izvajanju prekinitveno strežnega programa. Pravimo, da je prišlo do vgnezdene prekinitve. Prekinitev, ki dovoli, da se jo prekine označujemo kot maskirna prekinitev.

Rešiti je potrebno še potrjevanje prekinitve. Zakaj? Naprava deaktivira prekinitveni signal šele ob potrditvi. Potrjevanje je torej potrebno, da ne bi prišlo do neskončnega prekinjanja. Potrjevanje je lahko realizirano programsko ali strojno.

Programsko je realizirana z ustreznim ukazom v prekinitvenem servisnem programu (mesto odvisno od lastnosti naprave). Ta ukaz je ponavadi branje ali pisanje v nek register naprave, ki je prekinitev zahtevala.

Strojno je realizirana tako, da CPE s posebnim signalom sporoči napravi upoštevanje prekinitve. Če ima CPE samo en signal za potrjevanje, si pomaga s posebnimi krmilniki.

Pri pasteh prekinitveno prevzemni cikelj seveda ni potreben, saj prekinitev povzroči sam procesor.