Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilPetra Veselá
1
Kontakty Webpage přednášky: –http://ulita.ms.mff.cuni.cz/mff/sylaby/PRG017.HTML Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické informace (manuály ap.): –ftp://ulita.ms.mff.cuni.cz/techdoc/index.html Maily: –Jakub.Yaghob@mff.cuni.cz
2
Systém přerušení Vektorový relokovatelný systém přerušení Slouží k: –obsluze vnějších zařízení (periferií) prostřednictvím HW přerušení (HW interrupts, IRQs) - vnějších asynchroních událostí –obsluze výjimek (Exceptions) - vnitřních „asynchroních“ událostí procesoru –obsluze programových přerušení (SW interrupts) - vnitřních synchroních, explicitně v programu kódovaných událostí Vektorový systém: –každá obsluhovaná událost (výjimka n. přerušení) je identifikována tzv. vektorem - 8bitové číslo (0-255) –pro výjimky je vektor určen napevno architekturou –přiřazení vektorů vnějším přerušením určuje HW vně procesoru (typicky řadič přerušení - interrupt controller)
3
IDT - Interrupt Descriptor Table Relokovatelný systém: –obslužné rutiny přerušení jsou popsány relokovatelnou tabulkou (IDT) IDT je formálně podobná GDT: –jde o tabulku deskriptorů (může obsahovat pouze systémové deskriptory bran - task- gate, interrupt-gate, trap-gate) –formát registru IDTR, který tabulku určuje, je shodný s formátem registru GDTR –velikost IDT je max. 256 položek (může být i menší) –na rozdíl od GDT má význam i položka 0!
4
Obsluha přerušení Procesor určí vektor přerušení: –u výjimek je vektor definován architekturou –u vnějších přerušení vektor dodá HW, který přerušení inicioval: řadič přerušení, „skrz“ který je zařízení připojeno (běžný způsob) přímo zařízení dožadující se pozornosti (pouze výjimečně) –u SW přerušení je vektor kódován v instrukci Vektor přerušení se použije jako index do IDT, odkud se získá brána určující obslužnou rutinu Brána se použije pro předání řízení do obslužné rutiny –v tomto případě se (s výjimkou explicitních SW přerušení) NEUPLATNÍ standardní „prioritní test“
5
Brány přerušení (Interrupt-Gate, Trap-Gate)
6
Funkce bran přerušení Brány přerušení (Interrupt-Gate, Trap-Gate) se chovají stejně jako brány pro volání podprogramu (Call-Gate) pouze s těmito rozdíly: –neprovádí se žádné kopírování parametrů mezi zásobníky (deskriptory těchto bran ani neobsahují žádné pole CNT ) –rozšiřují návratovou informaci ukládanou na cílový zásobník o obsah registru EFLAGS –během předávání řízení do rutiny manipulují s registrem EFLAGS (po jeho uložení na cílový zásobník): nulují příznaky TF, VM, RF, NT při použití Interrupt-Gate dochází rovněž k nulování příznaku IF –Při použití bran přerušení pro obsluhu (některých) výjimek je na vrcholek cílového zásobníku uložen ještě chybový kód (to už však není vlastnost brány, ale příslušné výjimky!)
7
Stav zásobníku při obsluze přerušení branou přerušení (Interrupt-Gate, Trap-Gate)
8
Výjimky Předdefinované vektory (z intervalu 0..31) Klasifikace: –hlášení (traps): hlášení o stavu programu - hlášeny po instrukci, která je způsobila; po vyhodnocení možné pokračování na následující instrukci –chyby (faults): „opravitelné“ chyby - hlášeny před instrukcí, která je způsobila; obvykle principiálně možný restart instrukce po odstranění příčiny chyby –bubáci (aborts): „neopravitelné“ fatální chyby - obvykle nelze určit přesnou instrukci, která je způsobila; znamenají HW chybu nebo závažnou nekonsistenci systémových tabulek a nepředpokládá se pokračování přerušeného programu
9
Vyhrazené vektory přerušení 1.
10
Vyhrazené vektory přerušení 2.
11
Výjimka 0Eh - Výpadek stránky (Page Fault) Typ výjimky: chyba (fault) Chybový kód: ano Další informace: obsah registru CR2 = lineární adresa výpadku Vznik výjimky: –výpadek stránky - při přístupu do stránky, která má v adresáři stránek n. v tabulce stránek bit P (present) = 0 –porušení ochrany paměti - proces s aplikační prioritou (CPL = 3) se pokouší o přístup do systémové stránky (v adresáři stránek n. v tabulce stránek je bit U/S = 0) –nesprávný typ přístupu ke stránce - pokus procesu s aplikační prioritou (CPL = 3) o zápis do read-only stránky (v adresáři stránek n. v tabulce stránek je bit R/W = 0) Pozn.: u Pentia+ nastavení příznaku WP[CR0] = 1 způsobí platnost omezení i pro systémové procesy (CPL=0, 1, 2)
12
Chybový kód při výpadku stránky
13
Výjimka 0Dh - Obecné porušení ochrany (General Protection Fault) Typ výjimky: chyba (fault) Chybový kód: ano - segmentový chybový kód (= 0 pokud výjimka nemá vztah k segmentu) Vznik výjimky: –všechna porušení ochrany, která nevyvolávají speciální výjimky (např. stránkovací výjimky, výpadek segmentu, chyby segmentu zásobníku, chyby TSS ap.) –většinou jde o segmentové chyby (např. překročení limitu, nesplnění „prioritního testu“, nesprávný typ přístupu k segmentu (zápis do R/O, čtení z X/O), plnění segmentového registru nevyhovujícím selektorem, dereference NULL selektoru,...) –další skupinou jsou chyby ochrany bez přímého vztahu k segmentaci, např. neoprávněné užití privilegované instrukce, přístup k chráněnému zdroji (např. řídící n. ladící registry),...) –poslední skupinou jsou „chyby z blbosti“ - typicky pokus o zadání nepovolené kombinace řídících bitů ap. (např. pokus o nastavení bitu PG[CR0] při nulovém PE [CR0],...)
14
Chybový kód segmentových výjimek
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.