Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí



Podobné dokumenty
Přerušovací systém s prioritním řetězem

Procesy a vlákna Mgr. Josef Horálek

ZOS OPAKOVÁNÍ. L. Pešička

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný.

Procesy a vlákna (Processes and Threads)

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Management procesu I Mgr. Josef Horálek

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Metody připojování periferií BI-MPP Přednáška 2

Strojový kód. Instrukce počítače

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Struktura programu v době běhu

Architektury počítačů a procesorů

Řízení IO přenosů DMA řadičem

Operační systémy. Přednáška 2: Procesy a vlákna

Přidělování paměti II Mgr. Josef Horálek

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Komunikace procesoru s okolím

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

Služba ve Windows. Služba (service) je program

Petr Holášek / 1 of 21

Přidělování zdrojů (prostředků)

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD

PB002 Základy informačních technologií

- program = vykonatelný soubor - proces = jedna instance vykonávaného programu

3. Počítačové systémy

setup() { I = 0; } loop() { I = I + 1; }

Přijímací zkouška - informatika

Procesy a vlákna - synchronizace

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

- program = vykonatelný soubor - proces = jedna instance vykonávaného programu

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

Kapitola 10: Diskové a souborové struktury. Klasifikace fyzických médií. Fyzická média

Systém souborů (file system, FS)

Architektura procesoru ARM

Systém adresace paměti

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

IMTEE Přednáška č. 8. interrupt vector table CPU při vzniku přerušení skáče na pevně dané místo v paměti (obvykle začátek CODE seg.

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Paralelní programování

Periferní operace využívající přerušení

Pokročilé architektury počítačů

09. Memory management. ZOS 2006, L.Pešička

Linux Teorie operačních systémů a realita

Periferní operace využívající přerušení

Obsluha periferních operací, přerušení a jeho obsluha, vybavení systémových sběrnic

Činnost počítače po zapnutí

Implementace systémů HIPS: historie a současnost. Martin Dráb

ZOS. Verze 2010-srpen-31, v3 L. Pešička

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Implementace LL(1) překladů

Principy počítačů a operačních systémů

Přerušovací systém 12.přednáška

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 11. březen, 2011

Více o konstruktorech a destruktorech

Petr Krajča. 26. říjen, 2012

Jazyk symbolických adres

Přidělování CPU Mgr. Josef Horálek

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Roury a zprávy Mgr. Josef Horálek

Vláknové programování část I

Principy operačních systémů

Operační systémy. Tomáš Vojnar IOS 2010/2011. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Systémy pro sběr a přenos dat

Témata profilové maturitní zkoušky

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Téma 3. Procesy a vlákna

Periferní operace využívající přerušení

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Von Neumannovo schéma

OS Plánování procesů

Principy operačních systémů. Lekce 2: Správa paměti

Úvod do Linuxu. SŠSI Tábor 1

Metody připojování periferií

Maturitní téma: Operační MS-DOS

Principy činnosti sběrnic

Zotavení z chyb. Databázové systémy

Paralelní programování

Principy operačních systémů. Lekce 8: Ovladače periferií

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

udev a kamarádi... Středisko UN*Xových technologií

Přidělování paměti I Mgr. Josef Horálek

Stavba operačního systému

Vstupně - výstupní moduly

HelenOS ARM port. Pavel Jančík Michal Kebrt Petr Štěpán

Principy operačních systémů. Lekce 6: Synchronizace procesů

ČÁST 1. Základy 32bitového programování ve Windows

Principy komunikace s adaptéry periferních zařízení (PZ)

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Systémová volání Mgr. Josef Horálek

ÚVOD DO OPERAČNÍCH SYSTÉMŮ

Ukázka zkouškové písemka OSY

PRINCIPY OPERAČNÍCH SYSTÉMŮ

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

Disková pole (RAID) 1

Transkript:

Výpočet v módu jádro v důsledku událostí - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení řízení se předá na proceduru pro ošetření odpovídající události část stavu přerušeného procesu potřebná pro obnovení jeho vykonávání po skončení obsloužení události (počítadlo instrukcí, PSW) se uloží do zásobníku jádra přerušeného procesu Sytémové volání v standardní knihovně jazyka C je pro každé systémové volání obálková procedura, řízení se předá softvérovým přerušením proceduře jádra, která se nazývá syscall( ), system_call, protože je jedna pro všechny služby, požadovaná služba je identifikována parametrem procedury, který se nazývá číslo systémového volání

Linux uživatelský mód mód jádra xyz() xyz(){ int 0x80 } system_call: sys_xyz() ret_from_ system_call: iret sys_xyz(){ } aplikační program volá službu xyz (např. fork()) obálková procedura uloží číslo služby do registru eax (5 pro fork()) před vykonáním int 0x080 system_call: - uloží obsah registrů (HW kontext) - zavolá odpovídající funkci (v jazyku C) - ukončí se voláním ret_from_sys_call() Výjimky se spracují obdobně jsou synchronní s procesem (vznikají v důsledku událostí způsobených vykonáváním procesu) procedury pro jejich zpracování mají obdobnou strukturu jako procedura pro systémová volání system_call

Linux Procedura pro zpracování výjimky: - uloží obsah registrů - zpracuje výjimku (funkce v jazyku C) o pošle signál procesu o zpracuje žádost o stránku - ukončí se voláním funkce ret_from_exception() Zpracování přerušení přerušení je obecně asynchronní vzhledem k přerušenému procesu - proces čeká na přenos dat, po dokončení přenosu je přerušen úplně jiný proces zpracování přerušení nesmí způsobit čekání, přerušený proces zůstává ve stavu běžící čas zpracování přerušení je započítán přerušenému procesu, při zpracování přerušení se tedy přistupuje do jeho záznamu proc obsloužení přerušení: - uloží IRQ (Interrupt ReQuest) a obsah registrů - pošle potvrzení PIC (Programmable Interrupt Controller) - vykoná obslužní proceduru přerušení - ukončí se skokem na ret_from_intr()

Vzájemné vnoření systémového volání, výjimek a přerušení Předpokládejme odladěné jádro 1. zpracování systémového volání - může vzniknout výjimka žádost o stránku (výpadek stránky) - může vzniknout přerušení 2. zpracování výjimky (jakékoliv) - může vzniknout přerušení 3. zpracování přerušení - může vzniknout přerušení při každém odkladu zpracování některé z uvedených událostí musíme uložit odpovídající HW kontext - vytváří se kontextové vrstvy v zásobníku jádra přerušeného procesu - existuje globální zásobník přerušení přerušení nejsou všechna stejně naléhavá - prioritní schéma - odložení vykonání nekritických akcí obsluhy

prioritní schéma - přerušení mají přiřazené prioritní úrovně (interrupt priority level ) technické chyby hodiny disky síťová zařízení terminály růst priority - ve stavovém registru procesoru je nastavena okamžitá prioritní úroveň zpracovávaného přerušení - vznikne-li přerušení s nižší nebo stejnou prioritní úrovní, je uloženo a jeho obsluha je odložena - vznikne-li přerušení s vyšší prioritní úrovní, uloží se HW kontext, na tuto vyšší prioritní úroveň se nastaví hodnota okamžitého přerušení ve stavovém registru procesoru, zpracuje se přerušení - při skončení zpracování se z uloženého PSW obnoví okamžitá prioritní úroveň přerušení

Příklad: aplikační program xyz výpadek stránky přerušení od terminálu diskové přerušení přerušení od hodin přerušení od hodin diskové přerušení výpadek stránky system_call HW kontext obsluhy diskového přerušení HW kontext zpracování výpadku stránky HW kontext sys_xyz HW kontext procesu xyz

odložení vykonání nekritických částí obsluhy přerušení (Linux) akce při obsluze přerušení se dělí do tří tříd - kritické, potvrzení přerušení, aktualizace dat používaných zařízením i procesorem, přerušení jsou zakázána (disabled) - nekritické, data používána jenom procesorem, přerušení uvolněna (enabled) - nekritické odložitelné, kopírování vyrovnávací paměti do adresového prostoru procesu, vykonávané funkcí jádra bottom half, vykonají se však před ret_from_intr() umožňuje prokládání (interleaving) vykonávání obsluh přerušení - zlepšuje propustnost PIC a řadičů zařízení, nemusí čekat na dokončení obsluhy předcházejícího přerušení - zjednodušuje kód jádra a zlepšuje přenositelnost

Vytvoření procesu fork() 1. Přiděl nový PID a proc záznam. 2. Inicializuj proc záznam potomka. - UID a GID, maska signálů, se kopírují z rodiče - čas využití CPU, se nulují - PID, PID rodiče se nastaví pro potomka. 3. Zvyš počet odkazů na i-uzel okamžitého adresáře a případně na i-uzel změněného kořenového adresáře 4. Zvyš počet odkazů na otevřené soubory v tabulce souborů. 5. Přiděl potomkovi tabulku oblastí. 6. Přiděl potomkovi u oblast a zkopíruj ji z rodiče. 7. Přidej potomka k procesům sdílejícím oblast textu (kódu), který vykonává rodič. 8. Zdvoj oblast dat a zásobníku. 9. Inicializuj HW kontext potomka kopírováním registrů rodiče. 10. Nastav stav na připraven na vykonání a vlož ho do fronty pro plánovač. 11. Potomkovi vrať hodnotu 0. 12. Rodiči vrať hodnotu PID potomka.

optimalizace fork vždycky vytvářel nový adresový prostor pro potomka - copy-on-write (kopíruj při zápisu), System V a další o potomek dostane vlastní kopii tabulky oblastí o oblast dat a zásobníku (jejich stránky) jsou dočasně read-only (přístup jenom pro čtení) a označené jako copy-on-write o pokusí-li se rodič nebo potomek modifikovat stránku těchto oblastí vznikne výjimka o výjimka se zpracuje tak, že se vytvoří zapisovatelná kopie stránky o zavolá-li potomek exec nebo exit, stránkám rodiče se vrátí jejich původní ochrana - systémové volání vfork(), BSD o jestli očekáváme po fork brzké volání exec můžeme použít nové systémové volání vfork() o potomek je vykonáván v původním adresovém prostoru rodiče, který spí do jeho vrácení o když potomek vykoná exec nebo exit jádro adresový prostor vrátí rodiči a vzbudí ho

Vyvolání programu exec() program je ve vykonatelném souboru a.out, coff, elf 1. Analyzuj cestu k souboru a zpřístupni soubor, i-uzel. 2. Ověř, že volající má oprávnění na jeho vykonání. 3. Přečti hlavičku souboru a ověř, že soubor je vykonatelný. 4. Má-li soubor nastaven bit SUID nebo SGID, změň efektivní UID a uložený nastavovací UID na UID vlastníka souboru. 5. Zkopíruj argumenty a proměnné okolí do adresového prostoru jádra. 6. Uvolni paměťové oblasti procesu. Byl-li proces vytvořen službou vfork, vrať adresový prostor rodiči. 7. Vytvoř nový adresový prostor. Je-li oblast textu již aktivní bude sdílená, jinak se inicializuje ze souboru. 8. Zkopíruj argumenty a proměnné okolí zpátky do uživatelského zásobníku. 9. Inicializuj HW kontext. Počítadlo instrukcí je nastaveno na adresu vstupního bodu programu.

Ukončení procesu - exit() 1. Ignoruj všechny signály. 2. Zavři všechny otevřené soubory. 3. Uvolni okamžitý adresář 4. Uvolni, je-li změněný kořenový adresář. 5. Uvolni přidělené paměťové oblasti. 6. Zapiš statistiky o využívání prostředků a parametr stav do záznamu proc. 7. Změň stav na mátoha. 8. PID rodiče všech potomků nastav na 1 proces init 9. Pošli signál skončení potomka SIGCHLD rodiči. 10. Je-li rodič spící, vzbuď ho. 11. Vykonej přepnutí kontextu pro nový naplánovaný proces swtch(). po skončení volání exit() je proces ve stavu mátoha a obsazuje záznam proc Očekávaní skončení potomka - wait() 1. Chyba, nemá-li proces potomky. 2. Má-li potomka mátohu, vyber jednoho z nich, připočítej využití prostředků rodiči, uvolni záznam proc vrať PID potomka a stav skončení. 3. Jinak přejdi do stavu spící do příchodu signálu SIGCHLD.