Vícevláknové aplikace

Podobné dokumenty
Vícevláknové aplikace

Část 1 Paralelní programování. Vícevláknové aplikace. Část 2 Vícevláknové aplikace. Část 3 Využití vláken v GUI

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

Konceptuální modelování

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

Knihovna QT4 a moºnosti jejího vyuºití

Procesy a vlákna - synchronizace

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1

Transak ní zpracování I

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

Procesy a vlákna (Processes and Threads)

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

Team Engineering. New in V13. TIA Portal news. Restricted / Siemens AG All Rights Reserved.

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

Skalární sou in. Úvod. Denice skalárního sou inu

IPCorder KNR-100 Instala ní p íru ka

Specifikace systému ESHOP

GUI v Jav a událostmi ízené programování

e²ení systém lineárních rovnic pomocí s ítací, dosazovací a srovnávací metody

P íklad 1 (Náhodná veli ina)

Základní stavební prvky algoritmu

Úvod. Katedra po íta. Ji í Vok ínek. P edná²ka 1 B6B36PJV Programování v JAVA. Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze

CERIT-SC, MetaCentrum

IP kamerový systém Catr - uºivatelský návod k obsluze

Objektově orientované databáze

Efektivní vyuºívání programových nástroj Ansys na infrastrukturách MetaCentra / CERIT-SC

Paralelní systémy. SIMD jeden tok instrukcí + více toků dat jedním programem je zpracováváno více různých souborů dat

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Inteligentní zastávky Ústí nad Labem

Základní praktikum laserové techniky

Uºivatelská p íru ka Octopus

Nastavení vestav ného p evodníku Ethernet -> sériová linka ES01

Centrum digitální optiky

HLAVA III PODROBNOSTI O VEDENÍ ÚST EDNÍHO SEZNAMU OCHRANY P ÍRODY

Datová úloºi²t CESNET

Vícevláknové aplikace modely a p íklady

OPS Paralelní systémy, seznam pojmů, klasifikace

Cvičení č. 6. Synchronizace ve Windows. 3 Body

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

PROCESORY. Typy procesorů

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13

Pavel Procházka. 3. prosince 2014

Online komunikace a videokonference

Limity funkcí v nevlastních bodech. Obsah

19 Jednočipové mikropočítače

P íklad t íd geometrických objekt a jejich vizualizace

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

Operační systém z hlediska procesu Mgr. Josef Horálek

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

Pravd podobnost a statistika - cvi ení. Simona Domesová místnost: RA310 (budova CPIT) web:

BOZP - akcepta ní testy

Tekla Structures Multi-user Mode

Uºivatelská p íru ka k programu SlaFoR verze 1.0

kolní ád Mate ské koly, sou ásti Základní koly Bílá 1, Praha 6 (dále jen mate ská kola )

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Android Elizabeth. Verze: 1.3

Architektury počítačů na bázi sběrnice PCI. Cíl přednášky: Obsah přednášky:

Čl. I. Vyhláška č. 106/2001 Sb., o hygienických požadavcích na zotavovací akce pro děti, ve znění vyhlášky č. 148/2004 Sb.

účetních informací státu při přenosu účetního záznamu,

Platební styk (mezibankovní, klientský) Jitka Vachtová 28. íjna 2011

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

Finan ní ízení projekt

Datová centra, virtualizace a cloud computing

Soft Computing (SFC) 2014/2015 Demonstrace u ení sít RCE, Java aplikace

VIII. Seminář Java VIII p.1/36

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

Fyzikální praktikum 3

Obsah. Pouºité zna ení 1

Bezpe nost mobilní komunikace

Binární operace. Úvod. Pomocný text

Objektov orientované programování

Elektronizace ve ejných zakázek

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

PARADIGMATA PROGRAMOVÁNÍ 2A MAKRA I

Vyvažování tuhého rotoru v jedné rovině přístrojem Adash Vibrio

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

ZÁKLADNÍ POVINNOSTI DOPRAVCE I PRÁCI S DATY Z DIGITÁLNÍHO TACHOGRAFU

Úvod do programování a práce s počítačem

Město Mariánské Lázně

Paralelní programování

Po etní geometrie. Výpo et délky p epony: c 2 = a 2 + b 2 Výpo et délky odv sny: a 2 = c 2 b 2, b 2 = c 2 a 2

Operace nad celými tabulkami

Odpov di na dotazy uchaze k ve ejné zakázce. 25/

Pr b h funkce I. Obsah. Maxima a minima funkce

Dotazování nad stromem abstraktní syntaxe

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

Jednací ád výbor Zastupitelstva m styse erný D l

Vektor náhodných veli in - práce s více prom nnými

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 2 KONZISTENCE DATABÁZE

Prezentace. Ing. Petr V elák 6. b ezna 2009

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů

Testy pro více veli in

Paralelní programování

Kompilace Makele C++ Zadání úlohy. Kompilace a Makele. OSD. O. Fi²er. April 18, O. Fi²er Kompilace, Makele

Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce

13. Sítě WAN. Rozlehlé sítě WAN. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme rozlehlé sítě typu WAN. Doba nutná k nastudování

4. Počítačová síť. Co je to počítačová síť

Fakulta elektrotechnická

Zadání. Založení projektu

Transkript:

Vícevláknové aplikace Ji í Vok ínek Katedra po íta Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze P edná²ka 7 B6B36PJV Programování v JAVA Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 1 / 53

ƒást 1 Paralelní programování Paralelismus a opera ní systém Výpo etní proces a stavy procesu Víceprocesorové systémy Synchronizace výpo etních tok Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 2 / 53

ƒást 2 Vícevláknové aplikace Vlákna - terminologie, pouºití Vícevláknové aplikace v opera ním systému Vlákna v Jav Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 3 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok ƒást I ƒást 1 Paralelní programování Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 4 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Paralelní programování Idea pochází z 60-tých let spolu s prvními multiprogramovými a pseudoparalelními systémy. M ºeme rozli²it dva p ípady paralelismu: hardwarový, softwarový - pseudoparalelismus. I programy s paralelními konstrukcemi mohou b ºet v pseudoparalelním prost edí a to i na víceprocesorovém výpo etním systému. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 5 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Motivace Pro se v bec paralelním programováním zabývat? Navý²ení výpo etního výkonu. Paralelním výpo tem nalezneme e²ení rychleji. Efektivní vyuºívání strojového asu. Program sice b ºí, ale eká na data. Zpracování více poºadavk najednou. Nap íklad obsluha více klient v architektu e klient/server. Základní výpo etní jednotkou je proces program Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 6 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Motivace Pro se v bec paralelním programováním zabývat? Navý²ení výpo etního výkonu. Paralelním výpo tem nalezneme e²ení rychleji. Efektivní vyuºívání strojového asu. Program sice b ºí, ale eká na data. Zpracování více poºadavk najednou. Nap íklad obsluha více klient v architektu e klient/server. Základní výpo etní jednotkou je proces program Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 6 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Výpo etní proces Proces je spu²t ný program ve vyhrazeném prostoru pam ti. Jedná se o entitu opera ního systému, která je plánována pro nezávislé provád ní. Stavy procesu: Executing - práv b ºící na procesoru. Blocked - ekající na periferie. Waiting - ekající na procesor. Proces je identikován v systému identika ním íslem PID. Plánova proces ídí efektivní p id lování procesoru proces m na základn jejich vnit ního stavu. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 7 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Stavy procesu Spuštění procesu z vnější příčiny. Připravené procesy Důvod čekání pominul. Přechod do čela fronty připravených. Procesu je odňat procesor. Čekající (blokované) procesy Aktivní proces Proces zažádal o službu, kterou lze vyřídit okamžitě. Proces zažádal o službu, na kterou musí čekat Proces zažádal o ukončení. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 8 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok P íklad výpisu proces V sou asných opera ních systémech typicky b ºí celá ada proces v pseudoparalní/paralelním reºimu. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 9 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Víceprocesorové systémy Víceprocesorové (jádrové) systémy umoº ují skute ný paralelismus. Musí být e²ena synchronizace procesor (výpo etních tok ) a jejich vzájemná datová komunikace Prost edky k synchronizaci aktivit procesor. Prost edky pro komunikaci mezi procesory. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 10 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Architektury ízení vykonávání jednotlivých instrukcí. SIMD (single-instruction, multiple-data) - stejné instrukce jsou vykonávány na více datech. Procesory jsou identické a pracují synchronn. P íkladem m ºe být vykonávání MMX, SEE, 3dnow! instrukcí, vektorizace. MIMD (multiple-instruction, multiple-data) - procesory pracují nezávisle a asynchronn. ízení p ístupu k pam ti. Systémy se sdílenou pam tí - spole ná centrální pam. Systémy s distribuovanou pam tí - kaºdý procesor má svou pam. Informativní Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 11 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok SIMD program SIMD řídicí procesor procesor procesor procesor paměť Informativní Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 12 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok MIMD program program program MIMD procesor procesor procesor paměť Informativní Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 13 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Systémy se sdílenou pam tí procesor procesor procesor paměť Procesory komunikují prost ednictvím sdíleného pam ového prostoru. Mohou tak také synchronizovat své aktivity problém exkluzivního p ístupu do pam ti. Informativní Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 14 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Systémy s distribuovanou pam tí procesor paměť procesor paměť procesor paměť procesor paměť Není problém s exkluzivitou p ístupu do pam ti, naopak je nutné e²it komunika ní problém p ímými komunika ními kanály mezi procesory. Informativní Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 15 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Úloha opera ního systému Opera ní systém integruje a synchronizuje práci procesor, odd luje uºivatele od fyzické architektury. Opera ní systém poskytuje: Prost edky pro tvorbu a ru²ení proces. Prost edky pro správu více procesor a proces, rozvrhování proces na procesory. Systém sdílené pam ti s mechanismem ízení. Mechanismy mezi-procesní komunikace. Mechanismy synchronizace proces. V rámci spu²t ného Java programu plní virtuální stroj JVM spolu se základními knihovnami JDK roli opera ního systému Zapouzd uje p ístup k hw (sluºbám OS) To co platí pro procesy na úrovni OS platí analogicky pro samostatné výpo etní toky v rámci JVM V Jav se jedná o vlákna Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 16 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Úloha opera ního systému Opera ní systém integruje a synchronizuje práci procesor, odd luje uºivatele od fyzické architektury. Opera ní systém poskytuje: Prost edky pro tvorbu a ru²ení proces. Prost edky pro správu více procesor a proces, rozvrhování proces na procesory. Systém sdílené pam ti s mechanismem ízení. Mechanismy mezi-procesní komunikace. Mechanismy synchronizace proces. V rámci spu²t ného Java programu plní virtuální stroj JVM spolu se základními knihovnami JDK roli opera ního systému Zapouzd uje p ístup k hw (sluºbám OS) To co platí pro procesy na úrovni OS platí analogicky pro samostatné výpo etní toky v rámci JVM V Jav se jedná o vlákna Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 16 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Úloha opera ního systému Opera ní systém integruje a synchronizuje práci procesor, odd luje uºivatele od fyzické architektury. Opera ní systém poskytuje: Prost edky pro tvorbu a ru²ení proces. Prost edky pro správu více procesor a proces, rozvrhování proces na procesory. Systém sdílené pam ti s mechanismem ízení. Mechanismy mezi-procesní komunikace. Mechanismy synchronizace proces. V rámci spu²t ného Java programu plní virtuální stroj JVM spolu se základními knihovnami JDK roli opera ního systému Zapouzd uje p ístup k hw (sluºbám OS) To co platí pro procesy na úrovni OS platí analogicky pro samostatné výpo etní toky v rámci JVM V Jav se jedná o vlákna Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 16 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Paralelní zpracování a programovací jazyky Z pohledu paralelního zpracování lze programovací jazyky rozd lit na dv skupiny 1. Jazyky bez explicitní podpory paralelismu Paralelní zpracování ponechat na p eklada i a opera ním systému Nap. automatická vektorizace Paralelní konstrukce explicitn ozna it pro kompilátor. Nap. OpenMP Vyuºití sluºeb opera ního systému pro paralelní zpracování. 2. Jazyky s explicitní podporou paralelismu Nabízejí výrazové prost edky pro vznik nového procesu (výpo etního toku) Granularita proces - od paralelismu na úrovni instrukcí aº po paralelismus na úrovni program. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 17 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Synchronizace výpo etních tok Klí ovým problémem paralelního programování je, jak zajisti efektivní sdílení prost edk a zabránit kolizím Je nutné e²ení problém vzniklých z moºného paralelního b hu bez ohledu na to, zdali se jedná o skute n paralelní nebo pseudoparalelní prost edí Virtual view Real usage of the CPU Thread execution Virtual view Real usage of dual core CPU Thread execution Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 18 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Problém soub hu p íklad Sou asná aktualizace z statku na ú t m ºe vést bez exkluzivního p ístupu k r zným výsledk m get actual balance $5 mil. $55 mil. write new balance get actual balance $5 mil. $5 mil. $5 mil. +$50 mil. +$55 mil. $5 mil. $10 mil. $5 mil. Je nutné zajistit alokování zdroj a exkluzivní (synchronizovaný) p ístup jednotlivých proces ke sdílenému prost edku (bankovnímu ú tu). Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 19 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Problém soub hu p íklad Sou asná aktualizace z statku na ú t m ºe vést bez exkluzivního p ístupu k r zným výsledk m get actual balance $5 mil. $55 mil. write new balance get actual balance $5 mil. $5 mil. $5 mil. +$50 mil. +$55 mil. $5 mil. $10 mil. $5 mil. Je nutné zajistit alokování zdroj a exkluzivní (synchronizovaný) p ístup jednotlivých proces ke sdílenému prost edku (bankovnímu ú tu). Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 19 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Semafory Základním prost edkem pro synchronizaci v modelu se sdílenou pam tí je Semafor E. W. Dijkstra Semafor je prom nná typu integer, p ístupná operacemi: InitSem{ - inicializace. S > 0 S = S 1 Wait - jinak - pozastavuje innost volajícího procesu. { probudí n jaký ekající proces pokud existuje Signal - jinak - S = S + 1. Semafory se pouºívají pro p ístup ke sdíleným zdroj m. S < 0 - sdílený prost edek je pouºíván. Proces ºádá o p ístup a eká na uvoln ní. S > 0 - sdílený prost edek je volný. Proces uvol uje prost edek. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 20 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Implementace semafor Práce se semaforem musí být atomická, procesor nem ºe být p eru²en. Strojová instrukce TestAndSet p e te a zapamatuje obsah adresované pam ové lokace a nastaví tuto lokaci na nenulovou hodnotu. B hem provád ní instrukce TestAndSet drºí procesor sb rnici a p ístup do pam ti tak není povolen jinému procesoru. Informativní Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 21 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Pouºití semafor O²et ení kritické sekce, tj. ásti programu vyºadující výhradní p ístup ke sdílené pam ti (prost edku). P íklad o²et ení kritické sekce semafory InitSem(S,1); Wait(S); /* Kód kritické sekce */ Signal(S); Synchronizace proces semafory. P íklad synchronizace proces /* process p */... InitSem(S,0) Wait(S);... exit(); /* process q */... Signal(S); exit(); Proces p eká na ukon ení procesu q. Informativní Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 22 / 53

Paralelismus a opera ní systém Synchronizace výpo etních tok Monitory Monitor - jazyková konstrukce zapouzd ující data a operace nad daty s exkluzivním p ístupem. P ístup k funkcím v monitoru má v daném okamºiku pouze jediný proces. deklarace sdílených proměnných deklarace funkcí inicializační kód fronta proces proces proces proces P ístup k monitoru je realizován podmínkovými prom nnými. Ke kaºdé prom nné existuje fronta ekajících proces. V Jav je synchronizace e²ena práv mechanismem monitor jako monitor m ºe vystupovat libovolný objekt Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 23 / 53

ƒást II ƒást 2 Vícevláknové aplikace Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 24 / 53

Co jsou vlákna? Vlákno - Thread. Vlákno je samostatn provád ný výpo etní tok. Vlákna b ºí v rámci procesu. Vlákna jednoho procesu b ºí v rámci stejného prostoru pam ti. Kaºdé vlákno má vyhrazený prostor pro specické prom nné (runtime prost edí). Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 25 / 53

Kdy vlákna pouºít? Vlákna jsou leh í variantou proces, navíc sdílejí pam ový prostor. Efektivn j²í vyuºití zdroj. P íklad ƒeká-li proces na p ístup ke zdroji, p edává ízení jinému procesu. ƒeká-li vlákno procesu na p ístup ke zdroji, m ºe jiné vlákno téhoº procesu vyuºít asového kvanta p id lené procesu. Reakce na asynchronní události. P íklad B hem ekání na externí událost (v blokovaném reºimu), m ºe proces vyuºít CPU v jiném vlákn. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 26 / 53

P íklady pouºití vláken Vstupn výstupní operace. P íklad Vstupn výstupní operace mohou trvat relativn dlouhou dobu, která v t²inou znamená n jaký druh ekání. B hem komunikace, lze vyuºít p id lený procesor na výpo etn náro né operace. Interakce grackého rozhraní. P íklad Gracké rozhraní vyºaduje okamºité reakce pro p íjemnou interakci uºivatele s na²í aplikací. Interakce generují událostí, které ovliv ují b h aplikace. Výpo etn náro né úlohy, nesmí zp sobit sníºení interakce rozhraní s uºivatelem. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 27 / 53

P íklady pouºití vláken Vstupn výstupní operace. P íklad Vstupn výstupní operace mohou trvat relativn dlouhou dobu, která v t²inou znamená n jaký druh ekání. B hem komunikace, lze vyuºít p id lený procesor na výpo etn náro né operace. Interakce grackého rozhraní. P íklad Gracké rozhraní vyºaduje okamºité reakce pro p íjemnou interakci uºivatele s na²í aplikací. Interakce generují událostí, které ovliv ují b h aplikace. Výpo etn náro né úlohy, nesmí zp sobit sníºení interakce rozhraní s uºivatelem. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 27 / 53

P íklady pouºití vláken Vstupn výstupní operace. P íklad Vstupn výstupní operace mohou trvat relativn dlouhou dobu, která v t²inou znamená n jaký druh ekání. B hem komunikace, lze vyuºít p id lený procesor na výpo etn náro né operace. Interakce grackého rozhraní. P íklad Gracké rozhraní vyºaduje okamºité reakce pro p íjemnou interakci uºivatele s na²í aplikací. Interakce generují událostí, které ovliv ují b h aplikace. Výpo etn náro né úlohy, nesmí zp sobit sníºení interakce rozhraní s uºivatelem. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 27 / 53

Vlákna a procesy Procesy Výpo etní tok. B ºí ve vlastním pam ovém prostoru. Entita OS. Synchronizace entitami OS (IPC). P id lení CPU, rozvrhova em OS. - ƒasová náro nost vytvo ení procesu. Vlákna procesu Výpo etní tok. B ºí ve spole ném pam ovém prostoru. Uºivatelská nebo OS entita. Synchronizace exkluzivním p ístupem k prom nným. P id lení CPU, v rámci asového kvanta procesu. + Vytvo ení vlákna je mén asov náro né. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 28 / 53

Vícevláknové a víceprocesové aplikace Vícevláknová aplikace má oproti více procesové aplikaci výhody: Aplikace je mnohem interaktivn j²í. Snadn j²í a rychlej²í komunikace mezi vlákny (stejný pam ový prostor). Nevýhody: Distribuce výpo etních vláken na r zné výpo etní systémy (po íta e). I na jednoprocesorových systémech vícevláknové aplikace lépe vyuºívají CPU. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 29 / 53

P íklad výpisu proces a jim p íslu²ejících vláken Jeden proces m ºe být rozd len na více vláken, která jsou v tomto p ípad rozvrhována opera ním systémem na dostupné procesory. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 30 / 53

Vlákna v opera ním systému Vlákna b ºí v rámci výpo etního toku procesu. S ohledem na realizaci se mohou nacházet: V uºivatelském prostoru procesu. Realizace vláken je na úrovni knihovních funkcí. Vlákna nevyºadují zvlá²tní podporu OS, jsou rozvrhována uºivatelským knihovním rozvrhova em. Nevyuºívají více procesor. V prostoru jádra OS. Tvo í entitu OS a jsou také rozvrhována systémovým rozvrhova em. Mohou paraleln b ºet na více procesorech. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 31 / 53

Vlákna v opera ním systému Vlákna b ºí v rámci výpo etního toku procesu. S ohledem na realizaci se mohou nacházet: V uºivatelském prostoru procesu. Realizace vláken je na úrovni knihovních funkcí. Vlákna nevyºadují zvlá²tní podporu OS, jsou rozvrhována uºivatelským knihovním rozvrhova em. Nevyuºívají více procesor. V prostoru jádra OS. Tvo í entitu OS a jsou také rozvrhována systémovým rozvrhova em. Mohou paraleln b ºet na více procesorech. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 31 / 53

Vlákna v opera ním systému Vlákna b ºí v rámci výpo etního toku procesu. S ohledem na realizaci se mohou nacházet: V uºivatelském prostoru procesu. Realizace vláken je na úrovni knihovních funkcí. Vlákna nevyºadují zvlá²tní podporu OS, jsou rozvrhována uºivatelským knihovním rozvrhova em. Nevyuºívají více procesor. V prostoru jádra OS. Tvo í entitu OS a jsou také rozvrhována systémovým rozvrhova em. Mohou paraleln b ºet na více procesorech. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 31 / 53

Vlákna v uºivatelském prostoru Procesy knihovní rozvrhovač Operační systém rozvrhovač procesů Procesory knihovní rozvrhovač knihovní rozvrhovač Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 32 / 53

Vlákna v prostoru jádra opera ního systému Procesy Operační systém Procesory knihovna rozvrhovač knihovna knihovna Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 33 / 53

Uºivatelský vs jaderný prostor vláken Uºivatelský prostor Prostor jádra + Není pot eba podpory OS. + Vytvo ení nepot ebuje náro né systémové volání. - Priority vláken se uplat ují pouze v rámci p id leného asového kvanta procesu. - Nemohou b ºet paraleln. + Vlákna jsou rozvrhována kompetitivn v rámci v²ech vláken v systému. + Vlákna mohou b ºet paraleln. - Vytvo ení vláken je asové náro n j²í. Vy²²í po et vláken, která jsou rozvrhována OS mohou zvy²ovat reºii. Moderní opera ní systémy implementují O(1) rozvrhova e. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 34 / 53

Kombinace uºivatelského a jaderného prostoru Procesy knihovní rozvrhovač blokovaný Operační systém rozvrhovač Procesory knihovní rozvrhovač blokovaný knihovní rozvrhovač blokovaný Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 35 / 53

Vlákna v Jav Objekt t ídy odvozené od t ídy Thread T lo nezávislého výpo etního toku vlákna denujeme v metod public void run() Metodu run nespou²tíme p ímo! Overriding Pro spu²t ní vlákna slouºí metoda start(), která zajistí vytvo ení vlákna a jeho rozvrhování Vlákno m ºeme pojmenovat p edáním jména nad azené t íd v konstruktoru http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 36 / 53

P íklad vlákna public class Worker extends Thread { private final int numberofjobs; public Worker(int id, int jobs) { super("worker " + id); myid = id; numberofjobs = jobs; stop = false; System.out.println("Worker id: " + id + " has been created threadid:" + getid()); } } public void run() { dowork(); } Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 37 / 53

P íklad vytvo ení a spu²t ní vlákna Vlákno vytvo íme novou instancí t ídy Worker Spu²t ní vlákna provedeme metodou start() Worker thread = new Worker(1, 10); thread.start(); //new thread is created System.out.println("Program continues here"); Po spu²t ní vlákna pokra uje program ve vykonávání dal²í instrukce. T lo metody run() objektu thread b ºí v samostatném vlákn. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 38 / 53

Vytvo ení vlákna implementací rozhraní Runnable 1/2 V p ípad, ºe nelze pouºít d d ní od Thread, implementujeme rozhraní Runnable p edepisující metodu run() public class WorkerRunnable implements Runnable { private final int id; private final int numberofjobs; } public WorkerRunnable(int id, int jobs) { this.id = id; numberofjobs = jobs; } public String getname() { return "WorkerRunnable " + id; } @Override public void run() {... } Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 39 / 53

Vytvo ení vlákna implementací rozhraní Runnable 2/2 Vytvo ení vlákna a spu²t ní je p es instanci t ídy Thread WorkerRunnable worker = new WorkerRunnable(1, 10); Thread thread = new Thread(worker, worker.getname()); thread.start(); Aktuální výpo etní tok (vlákno) lze zjistit voláním Thread.currentThread() public void run() { Thread thread = Thread.currentThread(); for (int i = 0; i < numberofjobs; ++i) { System.out.println("Thread name: " + thread. getname()); } } lec07/workerrunnable Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 40 / 53

Vlákna v Jav metody t ídy Thread String getname() jméno vlákna boolean isalive() test zdali vlákno b ºí void join() pozastaví volající vlákno dokud p íslu²né vlákno není ukon eno static void sleep() pozastaví vlákno na ur enou dobu int getpriority() priorita vlákna static void yield() vynutí p edání ízení jinému vláknu Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 41 / 53

P íklad ekání na ukon ení innosti vlákna 1/2 Vytvo íme t ídu DemoThreads, která spustí výpo et v numberofthreads paraleln b ºících vláknech ArrayList<Worker> threads = new ArrayList(); for (int i = 0; i < numberofthreads; ++i) { threads.add(new Worker(i, 10)); } // start threads for (Thread thread : threads) { thread.start(); } Po skon ení hlavního vlákna program (JVM) automaticky eká aº jsou ukon eny v²echna vlákna Tomu m ºeme zabránit nastavením vlákna do tzv. Daemon reºimu voláním setdaemon(true) Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 42 / 53

P íklad ekání na ukon ení innosti vlákna 2/2 Nastavíme vlákna p ed spu²t ním for (Thread thread : threads) { thread.setdaemon(true); thread.start(); } V tomto p ípad se aplikace ihned ukon í. Pro ekání na ukon ení vláken m ºeme explicitn pouºít metodu join() try { for (Thread thread : threads) { thread.join(); } } catch (InterruptedException e) { System.out.println("Waiting for the thread..."); } lec07/demothreads Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 43 / 53

P íklad ekání na ukon ení innosti vlákna 2/2 Nastavíme vlákna p ed spu²t ním for (Thread thread : threads) { thread.setdaemon(true); thread.start(); } V tomto p ípad se aplikace ihned ukon í. Pro ekání na ukon ení vláken m ºeme explicitn pouºít metodu join() try { for (Thread thread : threads) { thread.join(); } } catch (InterruptedException e) { System.out.println("Waiting for the thread..."); } lec07/demothreads Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 43 / 53

Ukon ení innosti vlákna ƒinnost vlákna m ºeme ukon it zasláním (vlastní) zprávy výpo etnímu toku s ºádostí o p eru²ení innosti V zásad jediný korektní zp sob! Ve vlákn musíme implementovat mechanismus detekce ºádosti o p eru²ení innosti, nap. nastavení p íznakové prom nné stop a rozd lením výpo tu na men²í ásti public class Worker extends Thread {... private boolean stop; public Worker(int id, int jobs) {... stop = false; } public void run() { for (int i = 0; i < numberofjobs; ++i) { if (stop) { break; } dowork(); } } Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 44 / 53

P ístup ke sdílené prom nné z více vláken šádost o ukon ení implementujeme v metod shutdown, kde nastavíme prom nnou stop public void shutdown() { stop = true; } P ístup k základní prom nné je atomický a soub h tak net eba e²it P eklada a virtuální stroj (JVM) musíme informovat, ºe se hodnota prom nné m ºe nezávisle m nit ve více vláknem pouºitím klí ového slova volatile http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html http://www.root.cz/clanky/ pohled-pod-kapotu-jvm-zaklady-optimalizace-aplikaci-naprogramovanych-v-jave-4/ Nap íklad: private volatile boolean stop; Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 45 / 53

P íklad Odloºené ukon ení vláken P íklad s vlákny DemoThreads roz²í íme o explicitní ukon ení vláken po denované dob Vytvo íme t ídu ThreadKiller, která ukon í vlákna po timeout sekundách public class ThreadKiller implements Runnable { ArrayList<Worker> threads; int timeout; public ThreadKiller(ArrayList<Worker> threads, int time)... @Override public void run() { try { Thread.sleep(timeout * 1000); System.out.println("ThreadKiller..."); for (Worker thread : threads) { thread.shutdown(); } for (Worker thread : threads) { thread.join(); } } catch (InterruptedException e) {... } } } lec07/threadkiller Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 46 / 53

Synchronizace innosti vláken monitor V p ípad spolupracujících vláken je nutné e²it problém sdílení datového prostoru e²ení problému soub hu tj. problém sou asného p ístup na datové poloºky z r zných vláken e²ením je vyuºít kritické sekce monitor Objekt, který vláknu zp ístupní sdílený zdroj M ºeme si p edstavit jako zámek. V daném okamºiku aktivn umoºní monitor pouºívat jen jedno vlákno Pro daný asový interval vlákno vlastní p íslu²ný monitor monitor smí vlastnit vºdy jen jedno vlákno Vlákno b ºí, jen kdyº vlastní p íslu²ný monitor, jinak eká V Jav mohou mít v²echny objekty sv j monitor Libovolný objekt tak m ºeme pouºít pro denici kritické sekce Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 47 / 53

Kritická sekce synchronized Kritickou sekci deklarujeme p íkazem synchronized s argumentem objektu (referen ní prom nné) denující p íslu²ným monitor Object monitor = new Object(); synchronized(monitor) { //Critical section protected //by the monitor } Vstup do kritické sekce je umoºn n pouze jedinému vláknu Vlákno, které první vstoupí do kritické sekce m ºe pouºívat zdroje chrán né daným monitorem Ostatní vlákna ekají, dokud aktivní vlákno neopustí kritickou sekci a tím uvolní zámek P ípadn zavolá wait Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 48 / 53

Synchronizované metody Metody t ídy m ºeme deklarovat jako synchronizované, nap. class MyObject { public synchronized void useresources() {... } } P ístup k nim je pak chrán n monitorem objektu p íslu²né instance t ídy (this), coº odpovídá denování kritické sekce public void useresources() { synchronized(this) {... } } Deklarací metody jako synchronizované informujeme uºivatele, ºe metoda je synchronizovaná bez nutnosti tení zdrojového kódu. Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 49 / 53

Komunikace mezi vlákny Vlákna jsou objekty a mohou si zasílat zprávy (volání metod) Kaºdý objekt (monitor) navíc implementuje metody pro explicitní ovládání a komunikaci mezi vlákny: wait do asn pozastaví vlákno do doby neº je probuzeno metodou notify nebo notifyall, nebo po ur ené dob Uvol uje p íslu²ný zablokovaný monitor notify probouzí pozastavené vlákno metodou wait(), eká-li více vláken není ur eno, které vlákno p evezme monitor notifyall probouzí v²echna vlákna pozastavena metodou wait() Monitoru se zmocní vlákno s nejvy²²í prioritou Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 50 / 53

Priority vláken setpriority nastavení priority getpriority zji²t ní priority Hodnoty priority MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY P edání ízení lze vynutit voláním yield() Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 51 / 53

Diskutovaná témata Shrnutí p edná²ky Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 52 / 53

Diskutovaná témata Diskutovaná témata Paralelní programování Procesy a role opera ního systému Vlákna v opera ním systému Problém soub hu, synchronizace vláken a monitor Vlákna v Jav Vytvo ení, synchronizace a komunikace mezi vlákny P í²t : Modely vícevláknových aplikací, p íklady Jan Faigl, Ji í Vok ínek, 2016 B6B36PJV P edná²ka 7: Vícevláknové aplikace 53 / 53