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 foa@almos.vein.hu 2010. november 9.
Bevezetés Megszakítások 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
Egymást megszakító programok Bevezetés 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
Bevezetés Megszakítások 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á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á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 végrehajtása Megszakítási módszerek 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 maszkolása Megszakítási módszerek 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 generálásának módja Megszakítási módszerek 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ás okai Megszakítások Megszakítási módszerek 1 Megszakítás keletkezése 2 PSW régi PSW (tárba íródik) OK melyik rekesz 3 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 4 Megszakításkezelő programkód végrehajtódik 5 Megszakításkezelő progogramkód beolvassa a régi PSW-t 6 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 végrehajtása (x86) Az x86 megszakítási rendszere 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
PSW (Program Status Word) Az x86 megszakítási rendszere 0-7 bit rendszermaszk 8-11 bit kulcs 12-15 bit A M W P bitek 16-31 bit programmegszakítás kódja 32-34 bit utasításhossz 35-36 bit feltételkód 37-39 bit programmaszk 40-63 bit 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
PSW (Program Status Word) Az x86 megszakítási rendszere 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
Az x86 megszakításrendszere Az x86 megszakítási rendszere 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
A x86-os megszakításai (részlet) Az x86 megszakítási rendszere Fodor Attila (Pannon Egyetem) Bevezetés a számítástechnikába 2010. november 9. 15 / 18
DOS megszakítás funkciói (részlet) Az x86 megszakítási rendszere Fodor Attila (Pannon Egyetem) Bevezetés a számítástechnikába 2010. november 9. 16 / 18
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
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