Bevezetés a számítástechnikába Megszakítások
Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék
[email protected]
2010. november 9.
Megszakítások
Bevezetés
Bevezetés Számítógép működése: program igényeknek megfelelően használja a különböző erőforrásokat (I/O eszközök, processzor, tár)
Kezdetben: 1 prog fut 1 erőforrást használ egyszerre A gép többi rész kihasználatlan Korai korszakban megoldás: Több program fut a gépen, amelyek más-más erőforrásokat igényelnek Javult a kihasználtság Probléma: több program ne használja egyszerre ugyanazt az erőforrást (Különösen a CPU-t!)
Megoldás: Futó programokat megszakítása, ha más fontosabb (nagyobb priorítású) program igényli az erőforrást
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
2 / 18
Megszakítások
Bevezetés
Egymást megszakító programok Nagyobb számítógép ï több száz program is futhat párhuzamosan, amit koordinálnia kell a rendszernek: 1. programot megszakítja 2., 2.-t a 3.... ï vezérlésátadás
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
3 / 18
Megszakítások
Bevezetés
Bevezetés További ok a megszakítások alkalmazására: Éppen futó rendszer (például: I/O műveletet hajt végre) HW vagy SW hiba kezelése Vezérlés átadás hibakereső programnak. Hibakezelés után (pl. végzett, vagy megszűnt az azt létrehozó hatás) visszaadja a vezérlést annak a programnak, amelyiket megszakította Tudnia kell hol szakadt meg a program (pl. következő utasítás címe)
Program megszakítása Nem a futó program váltja ki Utasítás végrehajtás közben is jelentkezhet Futó utasítás NEM szakad meg, HW tárolja az igényt
Státuszregiszterben állapot (PSW - Program Status Word) utasítás végrehajtásakor automatikusan képződik.
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
4 / 18
Megszakítások
Megszakítási módszerek
Megszakítási módszerek csoportosítása
Módszer alapján Vezérlés átadása meghatározott címre (software polling) (1 megszakitási rutin) (kisebb µC) Vezérlés átadása meghatározott címekre (hardware polling) (Több megszakitási rutin) Vektoros megszakítás (Megszakítást kérő egység azonosítja a megszakítást)
Szintek alapján Egyszintű Többszintű
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
5 / 18
Megszakítások
Megszakítási módszerek
Egyszintű megszakítás példa (PIC 16F87x) #pragma origin 4 interrupt serverX( void) { int_save_registers // W, STATUS (and PCLATH if required) char sv_FSR = FSR; // save FSR if required if ((INTF) || (RBIF)) { INTF=0; RBIF=0; } //End INTF RBIF if (T0IF) // Timer 0 { if ((--T0Counter_Timeout) == 0) { if (PORTE.0) PORTE.0=0; else PORTE.0=1; } TMR0=MOD_TMR0INI; T0IF=0; } // End Timer 0 if (RCIF) { RCIF=0; RS422WRITE = RS422WRITE_DIS; } //End Recieve Byte FSR = sv_FSR; // restore FSR if saved int_restore_registers // W, STATUS (and PCLATH if required) } Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
6 / 18
Megszakítások
Megszakítási módszerek
Megszakítások végrehajtása Egyszintű megszakítás végrehajtása
Többszintű megszakítás végrehajtása
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
7 / 18
Megszakítások
Megszakítási módszerek
Megszakítások maszkolása
Feladata Megszakítások engedélyezése Megszakítások tiltása
Megvalósítási mód Megfelelő regiszterek beállításával Az összes regiszter tiltása (általában külön CPU utasítás van rá)
Tilthatóság alapján való osztályozás Maszkolható Nem maszkolható
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
8 / 18
Megszakítások
Megszakítási módszerek
Megszakítások generálásának módja
Hardware által generált Valamilyen hardware esemény váltja ki Például: Normál működés: I/O események (adatátvitel vége) Hibás működés: 0-val való osztás, HW hiba
Software által generált A felhasználó vagy az operációs rendszer által kért Például: Operációs rendeszer meghívása, ROM BIOS meghívása
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
9 / 18
Megszakítások
Megszakítási módszerek
Megszakítás okai 1 2
3
4 5 6
Megszakítás keletkezése PSW régi PSW (tárba íródik) OK ï melyik rekesz Minden megszakítás ï megszakítás kezelő programkód ï aktiválódik, meghatározza a szükséges műveleteket. Megszakítás kezelő programkód befagyasztott PSW-je ï PSW Megszakításkezelő programkód végrehajtódik Megszakításkezelő progogramkód beolvassa a régi PSW-t PSW visszaadja a vezérlést a megszakított programnak
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
10 / 18
Megszakítások
Az x86 megszakítási rendszere
Megszakítások végrehajtása (x86)
Megszakításkezelést támogató utasítások INT Call to interrupt INTO Call to interrupt if overflow IRET Return from interrupt CLI Clear interrupt flag STI Set interrupt flag
Megszakítási vektor táblája Megszakítási rutin(ok)
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
11 / 18
Megszakítások
Az x86 megszakítási rendszere
PSW (Program Status Word) 0-7 8-11 12-15 16-31 32-34 35-36 37-39 40-63
bit bit bit bit bit bit bit bit
rendszermaszk kulcs A M W P bitek programmegszakítás kódja utasításhossz feltételkód programmaszk következő ut. címe
rendszermaszk: programfutás közben igény, hogy bizonyos típusú igények ne tudják megszakítani Kulcs: numerikus érték, op.rendszer ennek segítségével tárkulcsot képez, ami védi a program tárterületét, így másik program nem tud ide írni.
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
12 / 18
Megszakítások
Az x86 megszakítási rendszere
PSW (Program Status Word) AMWP A: használt kód (ASCII/EBCDIC) M: tiltja a HW hiba miatti megszakítást (Machine Check) W: jelzi, h a proc üres-e, várakozik/utasítást hajt-e végre (Wait) P: vezérlőegység állapota (Problem) megoldó állapot (problem) felügyelő program (supervisor)
Megszakítókód: Megszakítás kódja (hiba, vezérlésátadás) a CPU tudja mit kell tennie Utasításhosszkód: Tartalma az éppen futó utasítás hossza byteban esetleges hibás utasításvégrehajtás CPU ki tudja számítani, honnan lehet újra betölteni az utasítást
Feltételkód: utasítások, amik feltételt értékelnek ki, feltétel teljesülésével függ a következő utasítás kiválasztása CMP utasítás (komparálás) eredménye ï bitkombináció (összetett feltétel (≤, ≥)) nem minden utasítás állítja be Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
13 / 18
Megszakítások
Az x86 megszakítási rendszere
Az x86 megszakításrendszere Jelző bitek (flag): (carry, parity, aux.carry, zero, sign, overflow...) Gépi státusz szó: PE (Protected Enable): védett mód engedélyezés 0 valós címzési módban működik 1 aktív védett mód
MP (Monitor Processor Extension): társprocesszor felügyelet EM (Emulate Processor Extension): társprocesszor emuláció TS (Task Switch): Taskváltás (automatikusan beállítódik, ha taskváltás művelet hajtódik végre) IP (Instruction Pointer): külön van a programállapot szótól!
A megszakításkezelő programkódok száma maximum 256 (PC esetén) Címük a memória legelején (1024 bájt (0-400h) megszakítási vektortábla) (operációs rendszer tölti fel). 1 elem 4 byte ï 2 relatív cím Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
14 / 18
Megszakítások
Az x86 megszakítási rendszere
A x86-os megszakításai (részlet)
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
15 / 18
Megszakítások
Az x86 megszakítási rendszere
DOS megszakítás funkciói (részlet)
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
16 / 18
Megszakítások
Az x86 megszakítási rendszere
DOS megszakítás példa (képernyőre írás)
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
17 / 18
Megszakítások
Az x86 megszakítási rendszere
DOS megszakítás példa (file megnyitás) (részlet)
Fodor Attila (Pannon Egyetem)
Bevezetés a számítástechnikába
2010. november 9.
18 / 18