Procesy a vlákna - synchronizace

Podobné dokumenty
Procesy a vlákna (Processes and Threads)

Procesy a vlákna IPC Komunikace mezi procesy (IPC = Inter-Process Communication)

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

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

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

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

Paralelní programování

ÚVOD DO OPERAČNÍCH SYSTÉMŮ. Vývoj SW aplikací. Unix, POSIX, WinAPI, programování komunikace s periferními zařízeními, ovladače zařízení

Operační systém (Operating System)

Operační systémy. Přednáška 4: Komunikace mezi procesy

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)

Virtuální přístroje. Použitá literatura. Operační systémy, vývoj aplikačních programů, speciální techniky programování

2010/2011 ZS. Operační systém. procesy a vlákna. interakce a synchronizace

ZOS 9. cvičení, ukázky kódu. Pavel Bžoch

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu Obědvající filosofové

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

Paralelní programování

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)

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Pavel Procházka. 3. prosince 2014

Synchronizace Mgr. Josef Horálek

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

Management procesu I Mgr. Josef Horálek

03. Synchronizace procesů. ZOS 2006, L. Pešička

Správa procesoru. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška III. 7. listopad, / 23

Virtuální přístroje. Operační systémy, vývoj aplikačních programů, speciální techniky programování

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Paralelní programování

Semafory Zobecněním operací WAKEUP a SLEEP přidáním celočíselného čítače vzniknou semafory a jejich atomické operace DOWN a UP.

Chapter 7: Process Synchronization

Operační systémy. Přednáška 5: Komunikace mezi procesy

Vzájemné vyloučení procesů

Téma 36. Petr Husa

Paralelní programování

Paralelní programování

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.

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

04. Mutexy, monitory. ZOS 2006, L. Pešička

Ukázka zkouškové písemka OSY

Vývoj aplikačních programů pro systémy DAQ Možnosti vývoje aplikačního SW Jazyk C/C++ Pokročilé techniky programování Vícevláknové aplikace

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

Synchronizace paralelních procesů

30. Vlákna, jejich atributy, metody, organizace a stavy. Možnosti synchronizace. (A7B36PVJ)

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

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

Operační systémy. Přednáška 1: Úvod

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

Procesy a vlákna Mgr. Josef Horálek

Synchronizace procesů

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

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

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í

Paralelní programování

Synchronizace procesů

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

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

PRINCIPY OPERAČNÍCH SYSTÉMŮ

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

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

Paralelní programování

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

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

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

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

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

PROGRAMOVÁNÍ ŘÍDÍCÍCH SYSTÉMŮ

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

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

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

Principy operačních systémů. Lekce 7: Obrana proti deadlocku

Konstruktory a destruktory

Vícevláknové aplikace

Teoretická informatika Tomáš Foltýnek Paralelní programování

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

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Konzistentnost. Přednášky z distribuovaných systémů

Činnost počítače po zapnutí

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

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

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Úvod do programovacích jazyků (Java)

Principy operačních systémů. Lekce 1: Úvod

C++ 0x aka C++11. Základním kamenem je třída std::thread

Paralelní programování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Vlákna Co je to vlákno?

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Předmět: Operační systémy

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v C++, 2. cvičení

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

6 Příkazy řízení toku

Vlákna. První jednoduchý program s vlákny:

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

8 Třídy, objekty, metody, předávání argumentů metod

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

6. Příkazy a řídící struktury v Javě

PB153 Operační systémy a jejich rozhraní

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

Transkript:

ÚVOD DO OPERAČNÍCH SYSTÉMŮ Ver.1.00 Procesy a vlákna - synchronizace České vysoké učení technické Fakulta elektrotechnická 2010

Studijní materiály a informace o předmětu http://measure.feld.cvut.cz/vyuka/predmety/bakalarske/navody http://aldebaran.feld.cvut.cz/vyuka/uvod_do_os

Použitá literatura [1] Stallings, W.: Operating Systems. Internals and Design Principles. 4th Edition. Prentice Hall, New Jersey, 2001. [2] Silberschatz, A. Galvin, P. B. - Gagne, G. : Operating System Concepts. 6th Edition. John Wiley & Sons, 2003. [3] Tanenbaum, A.: Modern Operating Systems. Modern Operating Systems. Prentice Hall, New Jersey, 2008.

Synchronizace procesů/vláken Cíle synchronizace: zabránit konfliktům mezi vlákny při přístupu ke sdíleným prostředkům (paměti, souborům, periferním zařízením, ap.) pozastavení běhu vláken, dokud nejsou splněny specifikované podmínky nebo nenastane určená událost; zajistit vykonání určitých programových sekvencí v požadovaném pořadí.

Synchronizace procesů/vláken pokračování Optimální mechanismus synchronizace: založen na možnosti převedení procesu/vlákna do blokovaného stavu (blocked, waiting, sleeping), kdy mu není přidělován čas procesoru (viz 5-ti stavový model procesu/vlákna) v tomto stavu proces/vlákno setrvá tak dlouho, dokud nebudou splněny požadované podmínky (např. ukončení jiného vlákna nebo procesu, nenulový stav semaforu, uvolněný mutex, uplynutí nastaveného časového intervalu apod.) jakmile podmínky nastanou, systém proces/vlákno probudí, tzn. přesune je (v souladu s plánovací strategií) do příslušné fronty aktivních procesů připravených na přidělení procesoru.

Základní pětistavový model Stavový model procesu/vlákna Viz [1]

Kritická sekce (Critical Section) Kritická sekce: část programu, kde dochází k přístupu procesu/vlákna ke sdílenému prostředku (např. sdílená proměnná). Procesy/vlákna vstupující do kritické sekce musí být synchronizovány!!!

Problém kritické sekce 1 Podmínky přístupu do kritické sekce: výhradní přístup vstup do kritické sekce je povolen nejvýše jednomu procesu žádné předpoklady nesmí být kladeny na rychlost a počet procesorů proces/vlákno běžící mimo kritickou sekci nesmí blokovat ostatní procesy/vlákna omezené čekání rozhodnutí o vstupu nesmí být pro některého čekajícího odkládáno do nekonečna

Problém kritické sekce 2 Přístup do kritické sekce: do { entry section critical section exit section reminder section } while (1); Přístup nelze řešit pomocí jednoduché sdílené proměnné (např. locked=false vstup volný, locked=true vstup blokovaný)!!!

Problém kritické sekce 3 Přístup do kritické sekce: mějme 2 procesy P0, P1 a sdílenou proměnnou pro řízení přístupu locked while (locked!= 0) ; /*čeká na vstup do KS */ locked = TRUE; /* critical section */ locked = FALSE; /* reminder section */ Toto je špatné řešení!!! Proč?

Problém kritické sekce 4 Řízení přístupu do KS podle sdílené proměnné lock: jednotlivé operace jsou prováděny ve více krocích při souběžném přístupu může dojít k jejich přerušení vlákno je přeplánováno uprostřed operace výsledek závisí na pořadí provádění vláken nastává tzv. chyba souběhu (race condition)

Problém kritické sekce 5 Petersonův algoritmus: p1_locked = FALSE; p2_locked = FALSE; /* Proces 1 */ /* Proces 2 */ p1_locked = TRUE; p2_locked = TRUE; turn = P2; turn = P1; while (p2_locked && turn = P2); while (p1_locked && turn == P1); critical section critical section p1_locked = FALSE; p2_locked = FALSE;

Synchronizace využívající HW počítače 1 Petersonův algoritmus se v praxi nepoužívá, místo něho se aplikuje zámek s podporou HW řešení procesoru. Instrukce TSL (Test and Set Lock) boolean TestAndSet(boolean *target) { boolean rv; rv = *target; *target = true; return rv; } Funkce TSL přečte proměnnou target, nastaví ji na TRUE a vrátí původní hodnotu. Funkce je atomická, čtení a zápis se provádí jako jediná, nedělitelná, nepřerušitelná operace!!!

Synchronizace využívající HW počítače 2 Použití funkce TestAndSet(): boolean TestAndSet(boolean *target); boolean lock = false; while (TestAndSet(&lock)) ; critical section lock = false; remainder section

Aktivní a pasivní čekání Aktivní čekání -> Spin-lock: proměnná + operace lock/unlock výsledek operace TestAndSet() se ukládá do proměnné aktivní čekání (busy waiting) při zamčeném zámku (procesor je zbytečně vytěžován) Pasivní čekání pokud je zámek uzamčen, proces/vlákno se uspí, přesune do blokovaného stavu (blocked, sleeping, waiting) změnu stavu (uspání/probuzení) řeší OS OS poskytuje tzv. synchronizační primitiva = datová struktura + synchronizační operace (semafor, mutex, monitor)

Semafor synchronizační objekt obsahující čítač a frontu čekajících procesů/vláken hodnota semaforu se pohybuje od nuly do specifikované maximální hodnoty Poskytuje 3 atomicky prováděné operace: Init(): Čítač se nastaví na zadané číslo (většinou 1) a fronta se vyprázdní. Down(): Pokud je čítač větší než nula, hodnota se sníží o 1, pokud je hodnota nulová, proces/vlákno se zablokuje a uloží do fronty. Up(): Pokud nějaké procesy/vlákna čekají ve frontě, potom se první z nich probudí. Pokud je fronta prázdná, čítač se inkrementuje o 1.

Mutex, monitor Mutex (Mutual Exclusion) synchronizační objekt typu binární semafor (hodnota čítače 1 nebo 0) Monitor = datová struktura + operace pro čtení/změnu stavu synchronizační objekt realizovaný jako speciální konstrukce programovacího jazyka (musí ho tedy implementovat překladač), typicky implementovaná pomocí jiného synchronizačního primitiva výhodou monitoru oproti jiným objektům je jeho vysokoúrovňovost snadněji se používá a je bezpečnější operace wait (zablokuje volající proces uvnitř monitoru,uvolní monitor pro jiný proces) Operace signal (odblokuje zablokované procesy, ale neuvolňuje monitor, odblokované procesy musí nejprve získat monitor)

ÚVOD DO OPERAČNÍCH SYSTÉMŮ KONEC 5. přednášky České vysoké učení technické Fakulta elektrotechnická

Vznik nového procesu v Unixu int main(...) {... if ((pid = fork()) == 0) { fprintf(stdout, "Child pid: %i\n", getpid()); err = execvp(command, arguments); fprintf(stderr, "Child error: %i\n", errno); exit(err); } else if (pid > 0) { fprintf(stdout, "Parent pid: %i\n", getpid()); pid2 = waitpid(pid, &status, 0); }... return 0; } // vytvoření nového procesu // toto je nový proces ( dítě ) // toto je rodičovský proces // čekání na ukončení procesu Příklad: implementace příkazu shellu v Unixu pomocí volání jádra a knihovních funkcí jazyka C