PDS01

Podobné dokumenty
Identity Lifecycle Management

Konkurentné programovanie

Paralelné algoritmy, cast c. 2

Multithreading a komunikácia medzi procesmi a threadmi, Časová závislosť, kritická sekcia a vzájomné vylúčenie, súvislosti medzi týmito pojmami Riešen

Úroveň strojového kódu procesor Intel Pentium Pamäťový operand Adresovanie pamäte Priama nepriama a indexovaná adresa Práca s jednorozmerným poľom Pra

NÁVRH UČEBNÝCH OSNOV PRE 1

PoĊítaĊová sieť

Prezentace aplikace PowerPoint

enum

Paralelné algoritmy, cast c. 3

Počítačové siete DOCSIS

MO_pred1

Snímka 1

Snímka 1

Algoritmizácia a programovanie - Príkazy

PowerPoint Presentation

Prezentácia programu PowerPoint

Hospodarska_informatika_2015_2016a

Úvod do mobilného operačného systému ANDROID

Študijný program (Študijný odbor) Školiteľ Forma štúdia Téma Elektronické zbraňové systémy (8.4.3 Výzbroj a technika ozbrojených síl) doc. Ing. Martin

Organizácia počítačových systémov Procesory Vnútorná pamäť Vonkajšie pamäte Vstupné a výstupné zariadenia Autor: Peter Tomcsányi Niektoré práva vyhrad

DediĊnosť

Rozdeľovanie IT zákaziek UX Peter Kulich

Digitálne mesto kam smerujú elektronické služby a moderné technológie pre samosprávu Ing. Ľuboš Petrík

PowerPoint Presentation

Tue Oct 3 22:05:51 CEST Začiatky s jazykom C 2.1 Štruktúra programu Štruktúra programu by sa dala jednoducho popísať nasledovnými časťami, kto

SAEAUT SNMP OPC Server

ECDL Syllabus V50 SK-V01

Úvodná prednáška z RaL

Digitálne technológie v každodennom živote 3. ročník akademický rok 2019/2020 Harmonogram prednášok

Negrafické výpočty na GPU v prostredí OpenGL Autor: RNDr. Michal Červeňanský Školiteľ: Prof. Ing. Miloš Šrámek, PhD. Fakulta matematiky, fyziky a info

Strategický plán rozvoja a údržby ciest na úrovni regiónov

Manažment v Tvorbe Softvéru 2018/2019

Pokrocilé programovanie II - Nelineárne iteracné schémy, chaos, fraktály

5/1/2012 Úvod do databáz, skúškový test, max 25 bodov, 90 min 1. Daná je databáza: capuje(krcma, Alkohol, Cena), lubi(pijan, Alkohol) navstivil(idn, P

Relačné a logické bázy dát

Autoregresné (AR) procesy Beáta Stehlíková Časové rady, FMFI UK Autoregresné(AR) procesy p.1/22

NSK Karta PDF

Vzorové riešenia úlohy 4.1 Bodovanie Úvod do TI 2010 Dôvod prečo veľa z Vás malo málo bodov bolo to, že ste sa nepokúsili svoje tvrdenia dokázať, prič

Xesar Softvér Stručný návod

iot business hub whitepaper isdd_em_New.pdf

13 ISF

Snímka 1

Identity Lifecycle Management

Úroveň strojového kódu procesor Intel Pentium Úvod Štruktúra procesorov Intel Pentium Základné inštrukcie Vetvenia a cykly Praktické programovanie jed

Paralelné algoritmy, cast c. 3

Snímka 1

test z informatiky - hardvér Test vytvoril Stanislav Horváth Vstupno - výstupné zariadenia Otázka č.1: Aké zariadenie je na obrázku? (1 bod) a) vstupn

2 RIEŠENIE PROBLÉMOV

NSK Karta PDF

PowerPoint Presentation

Snímka 1

Zásady akreditačnej komisie na posudzovanie spôsobilosti fakúlt uskutočňovať habilitačné konanie a konanie na vymenovanie profesorov

Matematický model činnosti sekvenčného obvodu 7 MATEMATICKÝ MODEL ČINNOSTI SEKVENČNÉHO OBVODU Konečný automat predstavuje matematický model sekvenčnéh

Resolution

(Microsoft Word - pr\355loha smernice \ \232pecifik\341cia)

Microsoft PowerPoint - OOP_prednaska_10.pptx

s sol

Nová éra Microsoft Dynamics 365 v IT spoločnosti GAMO Vďaka dodanému riešeniu sme pomohli zlepšiť fungovanie kľúčových oblastí

Tomáš Jelínek - včely vyhľadávanie

Konkurentné programovanie

Pripojenie sa na počítač a ovládanie vzdialenej obrazovky cez CM Remote

Architektúra OS

Efektívne spôsoby zníženia nákladov na energie a vplyvu na životné prostredie pri prevádzke zimných štadiónov.

História

Katalóg cieľových požiadaviek k maturitnej skúške

Informačné technológie

Siete vytvorené z korelácií casových radov

7/1/2015 Úvod do databáz, skúškový test, max 25 bodov, 90 min

PAGER V3.0

Slide 1

Podpora metód operačného výskumu pri navrhovaní systému liniek doc. RNDr. Štefan PEŠKO, CSc. Katedra matematických metód, Fa

bakalarska prezentacia.key

DJ 1T ID ver 1.2 Návod na použitie Návod na použitie Dverná jednotka DJ 1T ID Strana 1

PowerPoint Presentation

Microsoft PowerPoint - Prog_p08.ppt

A51

1 Portál pre odborné publikovanie ISSN Heuristický adaptívny PSD regulátor založený na miere kmitavosti Šlezárová Alexandra Elektrotechnika

10 tipov pre tvoj forex úspech

Snímka 1

Kreatívny priestor a jeho úloha v akademických knižniciach (s príkladom zo Slovenska)

gis5 prifuk

Microsoft Word - RolyRiadeniaZmien_V1.doc

Pokrocilé spracovanie obrazu - Fourierová transformácia

Funkcionálne programovanie Cvičenie 9 Funkcionálne programovanie v Jave Sergej Chodarev 22. november 2017 Technická Univerzita v Košiciach

Princípy tvorby softvéru Programovacie paradigmy

IBM Cesta za hodnotou Tvorba udržateľných a riadených informačných aktív nielen kvôli GDPR

Prezentácia programu PowerPoint

Predmet: Počítačové systémy a siete Charakteristika predmetu Žiak sa oboznámi sa so základným princípom fungovania počítača, rozvinie koncept Von Neum

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE Fakulta informatiky a informačných technológií STU Ústav počítačových systémov a sietí ZADANIE SEMESTRÁLNE

0022-vub-mobilne-tokeny-200x200-v03.indd

8

STRATEGIA_ROZVOJA_Kmec

Microsoft Word shm_ popadic.doc

Východiská a rámce Národnej rámcovej stratégie

midterm2014_1

trafo

SMART Brain-worksopy-1

Prepis:

1. prednáška (14. 2. 2019) Úvod do PDS -1-

Moorov zákon (pozorovanie 1958-1965): zložitosť čipov sa zdvojnásobí každé 2 roky pri zachovaní ceny pozorovanie platí dodnes Gordon E. Moore spoluzakladateľ Intelu fyzikálne limity súčasných technológií prečo paralelizmus? rýchlosť prenosu informácie je obmedzená rýchlosťou svetla ( 30 cm / ns ) hranice hrúbky vodivého kanála (14 nm min. 2 nm) energetické nároky rastú s výkonom procesora -2-

Moorov zákon pozorovanie 1971-2016 -3-

prečo paralelizmus? úlohy, ktoré dokážu použiť všetok disponibilný výpočtový výkon simulácie, vedecké výpočty, grafika, kryptomena... potreba spracovávať čoraz viac údajov (Big data) 33 ZB uložených údajov (IDC 2018) { k, M, G, T, P, E, Z, Y } 4 EB prenesených údajov denne Internetom (Cisco 2018) (za minútu 3 mil. FB Posts, 4 mil. G searches, 50 tis. Instagram LHC CERN 30 PB raw data denne 300 PB Spark DB paralelizmus = využitie viacerých súčasne pracujúcich počítačov na riešenie úlohy -4-

viacjadrové CPU (dnes 2 jadrá sú minimum) GPU paralelizmus dnes NVIDIA Tesla V100, 5120 jadier, 15.7 Tflops, 21 mld tr. Google Server Farm: 16x 450000 počítačov, 500 MW BOINC Berkeley Open Infrastructure for Network Computing, 850000 aktívnych CPU, 26 Pflops (denný priemer) BitTorrent, distribuované databázy cloud computing -5-

kde je problém? veľa procesorov = rýchlejší výsledok? príklady: 1 robotník prehádže kopu piesku za 10 hodín za aký čas prehádže kopu piesku 10 robotníkov? za aký čas prehádže kopu piesku 1000 robotníkov? 1 žena vynosí dieťa za 9 mesiacov za aký čas vynosí 1 dieťa 9 žien? -6-

Nájsť paralelizmus ako nájsť časti, ktoré vieme riešiť paralelne? Vyvážiť rozdelenie práce (workload) O čo ide? ako rozdeliť jednotlivé podúlohy procesorom tak, aby to celkovo bolo čo najefektívnejšie? Minimalizovať/manažovať komunikáciu ako minimalizovať komunikáciu či synchronizáciu medzi procesmi? Implementovať riešenie... -7-

O čom bude predmet PDS? Existuje veľa rôznych prístupov k riešeniu paralelných a distribuovaných výpočtov: rôzne HW architektúry a rôzna podpora HW rôzne systémy a frameworky: Hadoop, Pregel, MPI implementácie, OpenMP, CUDA, OpenCL, BOINC,... Zámer predmetu PDS: ukázať niektoré základné problémy a ich možné riešenia abstrahujúc od technických a implementačných detailov (zdanlivo teoretické veci) praktické ukážky počas tutoriálov (3-4 za semester) -8-

O čom bude predmet PDS? Oblasť paralelných a distribuovaných výpočtov je veľmi rozsiahlou podoblasťou informatiky aktívny výskum (základný aj aplikovaný) mnoho praktických aplikácií paradigma, ktorá nahradí mnohé súčasne používané prístupy (?) -9-

Prečo je paradigma PDS náročná? Pre ľudí je sekvenčné rozmýšľanie prirodzené paralelné programovanie vyžaduje oveľa väčšie pochopenie podstaty problému manažérsky prístup treba manažovať prácu procesorov Treba myslieť v širšom kontexte a na viac prípadov práca procesorov sa môže ovplyvňovať, mnohokrát aj nepredvídateľne pri sekvenčnom programovaní vieme na základe aktuálneho stavu programu povedať, čo sa stane (beh závisí od vstupu opakovateľnosť) teoretická analýza lepšie zachycuje dianie v PDS -10-

základné typy výpočtových modelov Konkurentné výpočty (programovanie) jednoprocesorové systémy Paralelné výpočty (programovanie) silne spriahnuté viacprocesorové systémy Distribuované výpočty (programovanie) slabo spriahnuté viacprocesorové systémy Jednotlivé oblasti sa navzájom prelínajú je ťažko robiť jedno bez znalosti iného -11-

Proces proces a procesor jedna realizácia (vykonávanie) inštrukcií programu na konkrétnom zariadení (procesore) z pohľadu PDS aj vlákna sú procesy nezamienať si proces v OS s procesom ako základným stavebným a konceptuálnym prvkom paralelných výpočtov Procesor fyzické zariadenie vykonávajúce proces Výpočtový uzol (node) (viacprocesorové) zariadenie, prepojené s ostatnými zariadeniami pomocou komunikačných kanálov -12-

Najbežnejšia realizácia konkuretného procesu Vlákno (Thread) Každé vlákno má vlastný zásobník (stack) Halda (heap) je zdieľaná -13-

konkurentné programovanie Oblasť, ktorej sa žiaden programátor nevyhne vlákna a potreba ich kooperácie je nevyhnutná v každom rozsiahlejšom programe Základný problém: koordinácia procesov (z pohľadu OS vlákien i procesov) pri pristupovaní k zdieľaným zdrojom (napr. pamäťové miesto v adresnom priestore procesu) -14-

viacprocesorové systémy paralelné výpočty Centrálna a spoločná zdieľaná pamäť všetky CPU pristupujú do spoločnej pamäte prostredníctvom zbernice Procesory sú typicky blízko seba (napr. viacjadrové CPU, GPU, vlákna v procese ) Medziprocesorová komunikácia rýchlymi kanálmi -15-

Efektívne využitie viacerých procesorov paralelné algoritmy SIMD jeden tok inštrukcií vykonávaný viacerými procesormi (jadrami) naraz (GPGPU) paralelizmus na dátovej úrovni netreba riešiť konkurenciu SISD s implicitným vláknovým paralelizmom (worktime paralelizmus) riešenie kolízií prístupu do pamäte -16-

distribuované výpočty Autonómne procesory s vlastnou pamäťou prepojené komunikačnou sieťou Komunikácia realizovaná posielaním správ Procesory sú typicky od seba fyzicky vzdialené (clustre, BOINC, superpočítače, ) -17-

fundamentálne distribuované algoritmy Dôraz na komunikáciu (nie paralelné riešenie výpočtového problému) Cieľom sú algoritmy na koordináciu procesov v uzloch siete: smerovanie (routing), broadcasting, nájdenie minimálnej kostry, voľba šéfa, clustering,... odolnosť voči chybám (fault-tolerance) -18-

Konkurentné programovanie -19-

Konkurentné programovanie Koordinácia procesov pri pristupovaní k zdieľaným zdrojom jedného procesora väčšinu základných riešení poznáte z Operačných systémov vzájomné vylúčenie, livelock, mutex, semafor, deadlock, starvation dôležité aj pri paralelnom programovaní so zdieľanou pamäťou zdieľaným prostriedkom je pamäťové miesto -20-

Interakcia procesov (pohľad OS) Procesy si neuvedomujú iné procesy súťaženie o zdieľané prostriedky (riadené OS) Procesy si nepriamo uvedomujú iné procesy kooperácia zdieľaním ( ohľaduplné využívanie zdrojov) Procesy si uvedomujú iné procesy kooperácia komunikáciou (bez zásahu OS) Pri paralelnom programovaní si procesy uvedomujú iné procesy kooperujú pre dosiahnutie výsledku -21-

Paralelizmus vs. pseudoparalelizmus Pseudoparalelizmus vzniká, keď niekoľko procesov beží súbežne na jednom procesore, pričom na vytvorenie súbežnosti sa používa timeslicing. preemptívny multitasking -22-

Race condition Súbeh - situácia, kedy výsledok procesu je kriticky závislý na postupnosti alebo načasovaní iných udalostí. Premenná A zdieľaná dvomi rovnakými procesmi: A = 0; A++; if (A > 0) print(a); A = 0; A++; if (A > 0) print(a); -23-

Kritická sekcia Mutual exclusion časť programu, ktorá nemôže byť vykonávaná viac než jedným z konkurujúcich si procesov Vzájomné vylúčenie požiadavka, ktorá zabezpečí, že žiadne dva konkurujúce si procesy nie sú v kritickej sekcii v tom istom čase -24-

V skratke (z OS): Podmienky vzájomného vylúčenia procesu sa nebráni vstúpiť do kritickej sekcie ak v nej nie je iný proces (inak hrozí vyhladovanie starvation) proces je v kritickej sekcii len konečný čas Riešenia vzájomného vylúčenia: hardvérové softvérové s podporou operačného systému -25-

Vzájomné vylúčenie s podporou HW Zakázanie prerušenia funguje pri pseudoparalelizme, nie pri multiprocesoroch Atomické inštrukcie (podpora pamäte a procesora) TEST-AND-SET napr. Dual-Port RAM COMPARE-AND-SWAP 3 parametre: pamäťové miesto, pôvodná a nová hodnota pamäťové miesto nastaví na novú hodnotu len ak je tam aktuálne uložená pôvodná hodnota EXCHANGE (SWAP) -26-

TEST-AND-SET Pseudokód atomickej operácie test-and-set (nastaví novú hodnotu a vráti pôvodnú) a jej použitie: int test_and_set(int* reg, int newval){ int oldval = *reg; *reg = newval; return oldval; } Aktívne čakanie busy-waiting Zdieľaný zámok Uvoľnenie zámku volatile int lock = 0; void Critical() { while (test_and_set(&lock, 1) == 1); kritická sekcia lock = 0; } -27-

Vzájomné vylúčenie s podporou HW x86, x64 xchg, cmpxchg explicitné uzamknutie, ak jeden z operandov je adresa v pamäti LOCK prefix uzatvorí zbernicu a zabezpečí výlučný prístup do pamäte pre inštrukciu Alpha, PowerPC, MIPS, ARM LL (load-link) načíta obsah pamäťového miesta SC (store-conditional) zapíše novú hodnotu, ak obsah pamäťového miesta z predchádzajúcej LL inštrukcie nebol medzitým modifikovaný -28-

Vzájomné vylúčenie algoritmom Dekkerov algoritmus (2 procesy) Petersonov algoritmus (2 procesy) Lamportov pekárenský algoritmus (n procesov) Eisenberg & McGuirov algoritmus (n procesov) Szymanského algoritmus (n procesov) -29-

Lamportov algoritmus pekára bool choosing[num_threads] = {false,, false}; int number[num_threads] = {0,, 0}; void lock(int i) { choosing[i] = true; number[i] = 1 + max(number[0],..., number[num_threads-1]); choosing[i] = false; } for (int j = 0; j < NUM_THREADS; j++) { L2: while (choosing[j]); L3: while ((number[j]!= 0) && ((number[j], j) < (number[i], i))); } void unlock(int i) { number[i] = 0; } void thread(int i) { while (true) { lock(i); // kritická sekcia unlock(i); // nekritická sekcia } } -30-

Pasívne vs. aktívne čakanie Predchádzajú príklady boli ukážky aktívneho čakania (while ( ) ;) - busy waiting mrhá sa časom procesora spinlock aktívne čakanie sa niekedy využíva v jadrách OS, kde sa predpokladá krátke čakanie (v porovnaní s prepnutím kontextu a preplánovaním) Pasívne čakanie (zámky, monitory, semafory) proces je zablokovaný, až kým nie je možnosť pokračovať alebo nenastane prerušenie procesu vyžaduje sa podpora OS (sleep; wakeup(p)) -31-

Pasívny zámok - mutex struct mutex { enum {zero, one} value; queuetype queue; }; void lock(mutex m) { if (m.value == one) m.value = zero; else { /* place this process in m.queue sleep */; /* block this process */; } } void unlock(mutex m) { if (m.queue is empty()) m.value = one; else { /* remove a process P from m.queue wakeup(p) */ /* place process P on ready list */ } } -32-

Zámky a monitory Podpora pre vzájomné vylúčenie je často vo forme zámkov (C, C++, Java, ) alebo monitorov (Java) Zámok proces smie vstúpiť do kritickej sekcie iba ak vlastní príslušný zámok (lock/acquire) po skončení kritickej sekcie proces uvoľní zámok (unlock/release) Monitor iba jeden proces môže byť v kritickej sekcii zviazanej s daným monitorom -33-

Semafor Semafor - synchronizačný objekt s počítadlom na začiatku inicializovaným na nejakú nenulovú hodnotu Základné operácie: wait (resp. acquire) atomicky zníži hodnotu počítadla o 1 ak je hodnota počítadla záporná, proces sa zablokuje (uspí) signal (resp. release) atomicky zvýši hodnotu počítadla o 1 ak je hodnota počítadla menšia ako 1, zobudí (zmení stav na ready) jeden z čakajúcich procesov -34-

Rekurzívny vs. nerekurzívny zámok Rekurzívny (reentrantný) zámok resp. monitor: ak proces vlastní zámok, opätovná požiadavka na jeho získanie (lock/acquire) nie je blokovaná počet lock a unlock musí byť rovnaký so zámkom je asociovaná informácia, ktorý proces ho aktuálne vlastní Nerekurzívny zámok opätovná požiadavka na už získaný zámok vedie k chybe (uviaznutiu) binárny semafor (počítadlo iniciálne nastavené na 1) -35-

API pre konkurentné programovanie Java (java.util.concurrent, java.util.thread) monitory a zámky sú rekurzívne pthreads (POSIX threads) pre zámky je možné nastaviť, či sú rekurzívne alebo nie Win32 threads OpenMP (?) Open Multi-Processing štandardizované multiplatformové API pre paralelné programovanie so zdieľanou pamäťou -36-

Klasické synchronizačné problémy Problém producenta a konzumenta zdieľaný sklad s obmedzenou kapacitou, do ktorého producent pridáva položky a konzument ich vyberá Problém čitateľov a zapisovateľov exkluzívny prístup zapisovateľov súbežný (zdieľaný) prístup čitateľov Problém obedujúcich filozofov synchronizácia pri použití viacerých zdrojov -37-

Monitory Monitory zabezpečujú pre vlákna: vzájomné vylúčenie (mutual exclusion) kooperáciu S každým objektom je asociovaný monitor Monitor kontroluje vykonávanie istých častí kódu: kritických sekcií asociovaných s monitorom V každom okamihu môže vlastniť monitor (vykonávať kód kritickej sekcie monitora) nanajvýš jedno vlákno -38-

Schéma fungovania monitorov -39-

Monitory v kóde synchronized (objekt) {... kód kritickej sekcie monitora asociovaného s objektom objekt... } Ak chceme synchronizovať celý kód metódy voči monitoru asociovanému objektu this, stačí pridať synchronized ku hlavičke inštančnej metódy -40-

Kooperácia vlákien Podpora kooperácie (eliminácia činného čakania na splnenie podmienky): wait() vlákno sa vzdá monitora dovtedy, kým od iného vlákna neprijme notifikáciu notify(), notifyall() vlákno oznámi nejakému čakajúcemu vláknu, resp. čakajúcim vláknam, že môžu v kritickej sekcii (zviazanej s monitorom) pokračovať wait(), notify(), notifyall() sú inštančné metódy objektu, s ktorým je asociovaný monitor -41-

Volatilné premenné volatile označuje premenné, ktoré môžu byť modifikované viacerými vláknami a inštruuje prekladač, aby neoptimalizoval za sebou idúce operácie zápisu a čítania toho istého pamäťového miesta public void dowork() { while (!shutdownrequested) { processing(); } } -42-

Ďalšie možnosti synchronizácie Problém: systém monitorov je obmedzený, dovoľuje len hierarchické získavanie monitorov (zámkov) Riešenie: Semaphore: acquire/release java.util.locks: Lock, Condition, ReadWriteLock, ReentrantLock, ReentrantReadWriteLock Lock: lock/unlock Synchronizované kolekcie: ArrayBlockingQueue Atomické premenné -43-

Ďalšie možnosti synchronizácie CountDownLatch: umožňuje pozastaviť vlákna, kým sa nevykoná určitá množina operácií (countdown, await) CyclicBarrier: umožnuje pozastaviť vlákna, kým zadaný počet vlákien nedosiahne definovanú bariéru (await) Analogické mechanizmy sú aj v pthreads monitor (Java) = condition variable (pthreads) -44-

Uviaznutie (deadlock) Deadlock, livelock, starvation situácia, kedy dva alebo viac procesov nie je schopných pokračovať, pretože každý z nich čaká na ukončenie alebo prostriedky držané iným procesom Nekonečný cyklus (livelock) situácia, kedy dva alebo viac procesov sústavne mení svoj stav reagujúc na zmenu stavu iného procesu bez toho, aby napredovali Vyhladovanie (starvation) situácia, kedy procesu je neustále odmietané pridelenie prostriedkov potrebných na napredovanie -45-

podmienky vzniku uviaznutia Deadlock mutual-exclusion - obmedzený počet procesov (jeden), ktoré môžu získať zdroje hold-and-wait proces môže žiadať ďalšie zdroje aj keď už nejaké získal no preemption získané zdroje sa neodoberajú existuje cyklus, v ktorom každý proces vlastní zdroj, na ktorý čaká nasledujúci proces v cykle -46-

ignorovanie Riešenie problému uviaznutia detekcia vysledovanie závislosti pokračovania procesov od čakania na procesy, vlastniace zdroje ukončenie jedného procesu v cykle odobratie prostriedkov procesu prevencia odstránenie podmienok vzniku uviaznutia dovoliť pridelenie len jedného zdroja (-> vyhladovanie) obmedziť pseudoparalelizmus prideľovať zdroje v usporiadaní podľa identifikátorov obmedziť vzájomné vylúčenie -47-

Chceme implementovať bankový systém podpora pre súbežné spracovanie transakcií cieľ maximalizovať paralelizmus intuícia: snažíme sa uzamykať čo najmenšie časti jemnozrnné (fine-grained) uzamykanie Príklad (1) Základná operácia: transfer(a, B, amount) presunie sumu amount z účtu A na účet B -48-

Príklad (2) void transfer(a, B, amount) { synchronized(a) { synchronized(b) { withdraw(a, amount); deposit(b, amount); } } } void transfer(b, A, amount) { synchronized(b) { } } synchronized(a) { } withdraw(b, amount); deposit(a, amount); Jemnozrnné (fine-grained) zamykanie môže viesť k uviaznutiu Treba zaviesť globálny poriadok -49-

Príklad (3) void transfer(a, B, amount) { synchronized(bank) { withdraw(a, amount); deposit(b, amount); } } Hrubozrnné (coarse-grained) zamykanie znižuje konkurentnosť a paralelizmus... -50-

Transakcie ako v databázach? void transfer(a, B, amount) { } atomic { } withdraw(a, amount); deposit(b, amount); Transakcia Atomická transakcia systém garantuje, že výsledok bude rovnaký, ako v prípade, keď sa postuposť príkazov vykoná ako atomická (neprerušiteľná) operácia -51-

Pamäťová transakcia Transakčná pamäť atomická a izolovaná postupnosť prístupov do pamäte Transakčná pamäť poskytuje pamäťové transakcie pre procesy pristupujúce k zdieľanej pamäti inšpirácia z databáz -52-

Atomickosť Transakčná pamäť pri schválení (commit) sa všetky pamäťové zmeny vykonajú akoby naraz Izolovateľnosť iný kód nemôže pozorovať zmeny pred schválením (pred commit-om) Serializovateľnosť výsledok konkurentného vykonávania transakcií musí byť rovnaký, ako keby boli transakcie vykonávané v sérii postupne za sebou -53-

Transakčná pamäť O transakcie sa stará transakčný manažér: softvérová transakčná pamäť (STM) asi 2-8 krát pomalšia ako sekvenčné spracovanie hardvérovo akcelerovaná TM (Intel TSX) 1,8 5,6 krát pomalšia ako sekvenčné spracovanie Konkurentné programovanie bez zámkov (paralelné programovanie pre masy ) Intenzívne a aktuálne skúmaná oblasť (výskum) Implementácie STM pre mnohé programovacie jazyky -54-

Ďakujem za pozornosť! -55-