Přednáška 2. Procesy a vlákna. Časově závislé chyby. Kritické sekce.

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

Operační systém teoreticky

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

Operační systémy. Cvičení 5: Volání jádra, procesy, vlákna.

02. Koncepce OS Procesy, vlákna. ZOS, L. Pešička

Signály Mgr. Josef Horálek

Virtuální přístroje. Použití grafického programování v LabVIEW. Ing. Pavel Mlejnek

CERTIFIKOVANÉ TESTOVÁNÍ (CT) Výběrové šetření výsledků žáků 2014


Převodník DL232. Návod pro instalaci. Docházkový systém ACS-line. popis DL232.doc - strana 1 (celkem 5) Copyright 2013 ESTELAR

Každý jednotlivý záznam datového souboru (tzn. řádek) musí být ukončen koncovým znakem záznamu CR + LF.

Klientský portál leasing24.cz. KLIENTSKÝ PORTÁL 24 NÁVOD NA PŘIHLÁŠENÍ A REGISTRACI UŽIVATELE Leasing24.cz. Stránka 1 z 15

IMPORT A EXPORT MODULŮ V PROSTŘEDÍ MOODLE

Úložiště elektronických dokumentů GORDIC - WSDMS

PŘÍLOHA č. 2B PŘÍRUČKA IS KP14+ PRO OPTP - ŽÁDOST O ZMĚNU

Dopravní úloha. Jiří Neubauer. Katedra ekonometrie FEM UO Brno

Principy překladačů. Architektury procesorů. Jakub Yaghob


BlueJ a základy OOP. Programování II 1. cvičení Alena Buchalcevová


Přednáška 6. Procesy a vlákna (vznik, stavy, atributy). Signály. Nástroje pro práci s procesy a vlákny. Úvod do Operačních Systémů Přednáška 6

Windows 10 (6. třída)

Postup práce s elektronickým podpisem

Název: VY_32_INOVACE_PG3309 Booleovské objekty ve 3DS Max - sčítání a odčítání objektů

JAK PŘIDAT UŽIVATELE PRO ADMINISTRÁTORY



Popis a funkce klávesnice Gama originální anglický manuál je nedílnou součástí tohoto českého překladu

Architektura AMD K10. Kozelský Martin, koz230. Datum:

ISÚI Informační systém územní identifikace Proč? Co? Kde? Kdo? Jak? Kdy?

Operační program Rybářství

Implementační rozdíly ve vývoji IS při použití bezschémové a relační databáze

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

INTEGROVANÁ STŘEDNÍ ŠKOLA TECHNICKÁ BENEŠOV Černoleská 1997, Benešov. Tematický okruh. Ročník 1. Inessa Skleničková. Datum výroby 21.8.

A. Struktura grafického kódu na dokladech o získání základního vzdělání

a co je operační systém?

Poznámky k verzi. Scania Diagnos & Programmer 3, verze 2.27

Příklady a návody. Databázová vrstva

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

Doporučené nastavení prohlížeče MS Internet Explorer 7 a vyšší pro ČSOB InternetBanking 24 a ČSOB BusinessBanking 24 s využitím čipové karty

Vítězslav Bártl. březen 2013

Google Apps. pošta 2. verze 2012


16. února 2015, Brno Připravil: David Procházka

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

SIS INSTALAČNÍ PŘÍRUČKA (SITE INFORMATION SYSTEM) Datum vytvoření: Datum aktualizace: Verze: v 1.3 Reference:

Aplikace DigiArchiv z pohledu administrátora a operátora. Systém, metody, postupy

Úpravy skříní a čelních ploch pro úchopovou lištou

GIS HZS ČR pro ORP a přednostní připojení k veřejné komunikační síti

Návod na připojení k ové schránce Microsoft Windows Live Mail

Pingpongový míček. Petr Školník, Michal Menkina. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií


2.8.9 Parametrické rovnice a nerovnice s absolutní hodnotou

Sekvenční logické obvody

Uplatnění nových informačních technologií ve výuce a na zdravotnickém pracovišti. Marie Marková





Management procesu I Mgr. Josef Horálek




Obchodní řetězec Dokumentace k návrhu databázového systému


Mobilní aplikace pro ios

Escort Servis Night Prague

Projekt INTERPI. Archivy, knihovny, muzea v digitálním světě Your contact information

Poruchy modul pro rychlé hlášení poruch z provozu.

Digitální učební materiál

Ovladače AverMedia a nastavení TV tuneru pod Windows Media Center

Ekonomika Základní ekonomické pojmy

DS SolidWorks PDM Workgroup

Systém zvukové signalizace a spouštění motoru na základě stavu světla

imedicus - internetové objednávání


(a) = (a) = 0. x (a) > 0 a 2 ( pak funkce má v bodě a ostré lokální maximum, resp. ostré lokální minimum. Pokud je. x 2 (a) 2 y (a) f.

1.3.1 Kruhový pohyb. Předpoklady: 1105

Ministerstvo pro místní rozvoj. podprogram

Zaměstnanec má dvě možnosti, jak je za tuto práci přesčas odměněn - práce přesčas je buď proplacena, nebo za práci přesčas čerpá náhradní volno.

!!! Upozornění!!! Tento dokument slouží pouze pro prezentaci projektu. Nejedná se o úplnou a aktuálně platnou dokumentaci. 1.

Postup pro generování asymetrického klíčového páru pro testovací prostředí Základních registrů

Založte si účet na Atollon.com


Energetický regulační


ČESKÁ TECHNICKÁ NORMA

Internetová agentura. Předimplementační analýza webu

Připravte si prosím tyto produkty Instalace hardwaru Výchozí nastavení z výroby

Kalendář je nástroj, který vám pomůže zorganizovat si pracovní čas. Zaznamenáváme do něj události jako schůzky, termíny odevzdání práce a podobně.

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto




AVG Instalace DataCenter na databázi Firebird

Téma 3. Procesy a vlákna

Elektronický formulář

Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/

Podávání žádostí IS CEDR

Transkript:

Přednáška 2 Procesy a vlákna. Časově závislé chyby. Kritické sekce. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti 1

Proces Všechen běžící software v systému je organizován jako množina běžících procesů (kromě jádra). Program posloupnost instrukcí definujících chování procesu Proces instance spuštěného programu 2

Procesový model Každý proces alokuje příslušné prostředky (adresový prostor obsahující kód a data, zásobník) má atributy (ID, identita, informace o rodiči a potomcích, informace pro plánování,) Implicitně obsahuje jedno vlákno výpočtu. 3

Vytvoření procesu Nový proces se vytvoří když exitující proces zavolá příslušné systémové volání (např. fork() a exec() v Unixu, nebo CreateProcess() v MS Windows). Vytvoření OS inicializuje v jádře datové struktury spojené s novým procesem. OS nahraje kód a data programu z disku do paměti a vytvoří prázdný systémový zásobník pro daný proces. Klonování OS zastaví aktuální proces a uloží jeho stav. OS inicializuje v jádře datové struktury spojené s novým procesem. OS udělá kopii aktuálního kódu, dat, zásobníku, stavu procesu,... 4

Příklad: spuštění procesu v Unixu int main() { pid_t pid; pid = fork(); switch (pid) { case -1: /* Error */ exit(1); case 0: /* Child process */ execlp("/bin/sleep", "sleep", "30", (char *) NULL); exit(1); default: /* Parent process */ wait(&status); } return 0; }; 5

Příklad: spuštění procesu v Unixu Nový proces vzniká použitím systémových volání: fork() vytvoří nový proces, který je kopií procesu, z kterého byla tato funkce zavolána v rodičovském procesu vrací funkce PID potomka (v případě chyby -1) v potomkovi vrací funkce 0 nový proces má jiné PID a PPID, ostatní vlastnosti dědí (např. EUID, EGID, prostředí,...) nebo sdílí s rodičem (např. soubory, ) kódový segment sdílí potomek s rodičem datový a zásobníkový segment vznikají kopií dat a zásobníku rodiče 6

Příklad: spuštění procesu v Unixu exec() v procesu, ze kterého je funkce volána, spustí nový program (obsah původního procesu je přepsán novým programem) atributy procesu se nemění (PID, PPID,...) 7

Ukončení procesu Normal exit (dobrovolné) Když proces dokončí svou práci, použije systémové volání, aby řekl OS, že končí (např. exit() v Unixu nebo ExitProcess() v MS Windows). Error exit (dobrovolné) Například když proces zjistí fatální chybu (např. žádný vstupní soubor,...). Fatal error (nedobrovolné) Chyba způsobená procesem, často např. díky chybě v programu. OS proces násilně ukončí. Ukončení jiným procesem (nedobrovolné) Proces použije systémové volání, aby řekl OS o ukončení nějakého jiného procesu (např. kill() v Unixu nebo TerminateProcess() v MS Windows). 8

Příklad: jednovláknový Web Server Klient pošle požadavek na konkrétní web. Stránku Server ověří zda klient může přistupovat k dané stránce načte stránku a pošle obsah stránky klientovi Často používané stránky zůstávají uloženy v hlavní paměti, abychom minimalizovali čtení z disku. 9

Příklad: vícevláknový Web Server 10

Příklad: vícevláknový Web Server Dispatcher thread: čte příchozí požadavky, zkoumá požadavek, vybere nevyužité pracovní vlákno a předá mu tento požadavek. Worked thread: načte požadovanou stránku z hlavní paměti nebo disku a pošle ji klirntovi. D i s p a t c h e r t h r e a d W o r k e d t h r e a d w h i l e ( T R U E ) { g e t _ n e x t _ r e q u e s t ( & b u f ) ; h a n d o f f _ w o r k ( & b u f ) ; } w h i l e ( T R U E ) { w a i t _ f o r _ w o r k ( & b u f ) ; l o o k _ f o r _ p a g e _ i n _ c a c h e ( & b u f, & p a g e ) ; i f ( p a g e _ n o t _ i n _ c a c h e ( & p a g e ) ) r e a d _ p a g e _ f r o m _ d i s k ( & b u f, & p a g e ) ; r e t u r n _ p a g e ( & p a g e ) ; } 11

Vláknový model Oddělení alokace prostředků a samotný výpočet. Proces slouží k alokaci společných prostředků. Vlákna jsou jednotky plánované pro spuštění na CPU. Vlákno má svůj vlastní program counter (pro uchování informace o výpočtu), registry (pro uchování aktuálních hodnot), zásobník (který obsahuje historii výpočtu), lokální proměnné, ale ostatní prostředky a identita jsou sdílené. 12

Vláknový model Jednotlivá vlákna v daném procesu nejsou nezávislá tak jako jednotlivé procesy. Všechny vlákna v procesu sdílí stejný adresový prostor, stejné otevřené soubory, potomky, reakce na signály, 13

Vytvoření a ukončení vlákna Procesy se spouští s jedním vláknem. Toto vlákno může vytvářet další vlákna pomocí knihovní funkce (např. pthread_create() v POSIXu nebo CreateThread() v MS Windows). Když chce vlákno skončit, může se opět ukončit pomocí knihovní funkce (např. pthread_exit() v POSIXu nebo ExitThread() v MS Windows). 14

Příklad: POSIX vlákna... void *Thread_code() { }... int main() { ptr = pthread_create(..., &Thread_code, ); pthread_join(ptr,...); } 15

Přepínání kontextu Pseudo paralelismus: vlákna běží (pseudo) paralelně na jednoprocesorovém systému díky přepínání kontextu, procesor střídavě provádí kód jednotlivých vláken (multiprogramming, timesharing, multiprocessing). Skutečný hardwarový paralelismus: každé vlákno běží na svém procesoru (multiprocesorový/multijádrový systém). 16

Stavy vláken třístavový model Základní stavy vláken Running: v tomto okamžiku právě používá CPU. Ready: připraven použít CPU, dočasně je proces zastaven a čeká až mu bude přiřazeno CPU. Blocked: neschopný použít CPU v tomto okamžiku, čeká na nějakou externí událost (např. načtení dat z disku,). 17

Časově závislé chyby Dva nebo několik procesů/vláken používá (čte/zapisuje) společné sdílené prostředky (např. sdílená paměť, sdílení proměnné, sdílené soubory,). Výsledek výpočtu je závislý na přepínání kontextu jednotlivých procesů/vláken, které používají sdílené prostředky. Velmi špatně se detekují (náhodný výskyt)! 18

Příklad 1 Dva uživatelé editují stejný soubor (např. v Unixu pomocí editoru vi). U s e r 1 : v i f. t x t U s e r 2 : v i f. t x t 19

Příklad 2 Dvě vlákna inkrementují sdílenou proměnnou. S h a r e d v a r i a b l e i n t c o u n t e r = 0 ; T h r e a d A c o u n t e r + + ; m o v l a d d l $ 1, ( % e a x ) m o v l T h r e a d B c o u n t e r + + ; 20

Kritické sekce Kritická sekce Část programu, kde procesy používají sdílené prostředky (např. sdílená paměť, sdílená proměnná, sdílený soubor, ). Sdružené kritické sekce Kritické sekce dvou (nebo více) procesů, které se týkají stejného sdíleného prostředku. Vzájemné vyloučení Procesům není dovoleno sdílet stejný prostředek ve stejném čase. Procesy se nesmí nacházet ve sdružených sekcích současně. 21

Korektní paralelní program Nutné podmínky 1. Dva procesy se nesmí nacházet současně ve stejné sdružené sekci. 2. Žádné předpoklady nesmí být kladeny na rychlost a počet procesorů. 3. Pokud proces běžící mimo kritickou sekci nesmí být blokován ostatní procesy. 4. Žádný proces nesmí do nekonečna čekat na vstup do kritické sekce. 22

Bersteinovy podmínky R ( p ) W ( q ) =, W ( p ) R ( q ) =, W ( p ) W ( q ) =, R ( i ) - v š e c h n y s d í l e n é p r o m ě n n é p r o č t e n í p o u ž i t é v p r o c e s u i, W ( i ) - v š e c h n y s d í l e n é p r o m ě n n é p r o z á p i s p o u ž i t é v p r o c e s u i. Sdílené proměnné mohou být pouze čteny. Příliš přísné => pouze teoretický význam. 23