2. přednáška http://www.uai.fme.vutbr.cz/~vdumek/ 12. 2. 2013 přerušení (instrukční cyklus, obsluha) vztahy mezi tématy vytváření programu definice operačního systému provádění vnořených procedur zásobník, růst zásobníku při dvou procedurách DMA, multiprogramování Studijní materiály najdete na adrese: http://www.uai.fme.vutbr.cz/~vdumek/
Přerušení Přerušení (Interrupt) je schopnost procesoru přerušit právě vykonávaný program a začít vykonávat program jiný (obsluha přerušení), začalo se implementovat z důvodu obsluhy periferií (procesor nemusí čekat ve smyčce na pomalé zařízení), dnes je využito při přepínání procesů - technickými prostředky (vnější), instrukcí INTR nemaskovatelná maskovatelná - programově (vnitřní) instrukcí INT n, chybou při běhu programu PIC 8259A 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - sled činností: uloží se FLAGS vynulují se IF, TF CS do zásobníku do CS obsah hodnoty přerušení IP do zásobníku (neprovedená instrukce) do IP obsah hodnoty přerušení - přerušení se uplatní po provedení instrukce - návrat instrukcí IRET
IRQ Levels (Interrupt Request) Typ signálu přerušení, které lze maskovat (bit IF – Interrupt Enable Flag v příznakovém registru nastaven na 0), potom se přerušení generované signálem INTR neprovede IRQ0 - systémový časovač IRQ8 – hodiny reálného času IRQ1 - řadič klávesnice IRQ9 – available, NIC, SCSI IRQ2 - sekundární PIC IRQ10 – available, NIC, SCSI IRQ3 - COM2, COM4 IRQ11 – available, NIC, SCSI IRQ4 - COM1, COM3 IRQ12 – myš, PS/2 IRQ5 - LPT2 (zvuková karta) IRQ13 – floating point unit IRQ6 - řadič disket IRQ14 – ATA (CD ROM, HD) IRQ7 - LPT1 (zvuková karta) IRQ15 - ATA
Vyvolání přerušení po instrukci N Návrat z přerušení T-M Zásobník T-M Zásobník N+1 Program counter N+1 Y+L+1 T T General registers Y Y Start Start Přerušovací rutina Stack pointer Přerušovací rutina T T-M Y+L Y+L Return Return Processor Processor T-M T Vyvolání přerušení po instrukci N N N Uživatelský program Uživatelský program N+1 N+1 Návrat z přerušení Main memory Main memory
. . . . . . . . . Instrukční cyklus s přerušením START HALT 1 2 i i+1 USER PROGRAM INTERRUPT HANDLER 1 2 . . . . . . i i+1 . . . Interrupt disabled M CHECK FOR INTERRUPT INITIATE INTERRUPT HANDLER START FETCH NEXT INSTRUCTION EXECUTE INSTRUCTION Interrupt enabled HALT
Je možné zavádět prioritní obsluhu přerušení Obsluha přerušení Je možné zavádět prioritní obsluhu přerušení Sekvenční způsob Vnořený způsob
Comunication interrupt Časování při vícenásobném přerušení Interrupt occurs = 10 Interrupt occurs = 15 t=0 t=15 5 2 t=10 Comunication interrupt service routine t=25 Interrupt occurs = 20 t=25 4 t=40 User program Printer interrupt service routine t=35 Disk interrupt service routine
Důležité vztahy mezi tématy Process description and control Scheduling Memory management Concurrency I/O management File management Networking Security
Vytváření programu Idea Algorithm Files Source Program Binary Program Execution Engine Status Stack Algorithm Files Source Program Binary Program Data Other Resources Process
Vytváření programu Algoritmus determinovanost rezultativnost hromadnost efektivnost analýza editace překlad sestavení spuštění
Operační systémy Cíle: použití počítače je pohodlnější a výhodnější, čerpání systémových zdrojů je účinnější, schopnost vývoje (testování, nové funkce, ...) Funkce: vytváření programů (editor, debugger), spouštění programů, přístup na I/O, přístup k souborům, přístup a ochrana systémových zdrojů, detekce chyb, evidence Charakteristiky: souběžnost, sdílení (cena, sdílená data, vytváření dalších úloh, odstranění redundance), determinovanost (stejné výsledky ze stejných dat a kdykoliv), výkonnost (střední čas mezi procesy, čas odezvy, čas obrátky, využití zdrojů, ...), spolehlivost, udržovatelnost, velikost
Definice operačního systému program, který je prostředníkem mezi uživatelem a technickým vybavením účelem OS je poskytovat uživateli prostředí pro spouštění programů základní část téměř všech počítačových systémů správce prostředků (řídí, alokuje, odebírá) – Resource Manager řídí provádění uživatelských programů a I/O operací – Control Program program, který vždy běží - Kernel
Provádění vnořených procedur 4000 Main program CALL Proc1 4100 4101 4500 CALL Proc2 Procedura Proc1 4600 4601 CALL Proc2 4650 4651 RETURN 4800 Procedura Proc2 4601 4651 4101 4101 4101 4101 4101 RETURN . . . . . . .
Zásobník - struktura LIFO v operační paměti Dno zásobníku SS:0A1A SS:0A1A 0A18 AA01 0A16 11AA 0A14 3C00 Vrchol zásobníku SS:0A14 0A12 - struktura LIFO v operační paměti - instrukce PUSH (vložení), POP (výběr) - výběr řídí registr SP (Stack Pointer) - kapacita zásobníku na programátorovi - používá INT, přerušovací systém, volání podprogramu
Typická organizace zásobníku Stack limit pouze jeden element může být dosažen, jedná se o poslední vkládaný záznam – vrchol zásobníku parametry zásobníku (počáteční adresa, velikost, limit, ...) jsou variabilní Stack Pointer – obsahuje sdresu vrcholu zásobníku, adresa je inkrementována nebo dekrementována operacemi PUSH a POP Stack Base – obsahuje počátek zásobníku ve vyhrazené oblasti Stack Limit – obsahuje adresu povoleného vrcholu zásobníku, každá operace PUSH za touto hodnotou vyvolá chybové hlášení Stack pointer Free Blok rezervovaný pro zásobník Stack base In use
proces P zavolal proces Q Růst zásobníku při dvou procedurách Top of stack pointer y2 y1 Return adress Current frame pointer Q: Previous frame pointer Top of stack pointer x2 x2 x1 x1 Return adress Return adress Current frame pointer P: P: Previous frame pointer Previous frame pointer aktivní proces P proces P zavolal proces Q
Direct Memory Access DMA - Direct Memory Access, některá zařízení mají možnost přistupovat k paměťovým přenosům dat bez účasti procesoru, při přenosu mezi pamětí a zařízením by byla velká režie, u blokových přenosů se nepřizpůsobuje rychlost – pouze u paměti, jedna adresová sběrnice – nelze použít adresaci dvou míst současně, specializovaný obvod – řadič DMA, jednoúčelové zařízení s 8 kanály u současných počítačů
Multiprogramování Paměťová hierarchie procesor provádí více programů (procesů) „současně“ pořadí provádění programů záleží na jejich prioritě, je modifikováno čekáním na nějakou událost (I/O operace) po přerušení se nemusí pokračovat v programu, který se prováděl před přerušením Paměťová hierarchie - rychlejší přístup – dražší bit větší kapacita – levnější bit větší kapacita – pomalejší přístup