Osnova prednášky Synchronizácia v Jave

Slides:



Advertisements
Podobné prezentácie
Editovanie nových záznamov Modifikácia zadaní
Advertisements

Lekcia od divých husí.
ZNALOSTNÉ SYSTÉMY prednáška č. 13
Základy Ethernetu Dávid Miľo 3.A.
Algorithmic Chemistry in Genetic Programming Informatics and Information Technologies Student Research Conference, 2006 Vojtech Szöcs Vedúci projektu:
Ing. Adriana Bindzárová
Peter Kajaba Operačné Systémy.
Gymnázium J.G.Tajovského Kvantová mechanika Doplnok
OBJAVOVANIE VZOROV POHĽADU PRI NAVIGAČNÝCH ÚLOHÁCH NA WEBE
Výskumný ústav detskej psychológie a patopsychológie v Bratislave
7., 8. Signalizácia realizovaná LED - diódou
Rozpoznávanie obrazcov šk.r
Intel procesor Lukáš Beď 4.A
Interval.
Školiteľ: Ing. Helena Fidlerová, PhD.
Inovácia obsahu a metód vzdelávania prispôsobená potrebám vedomostnej spoločnosti EFEKT VODOVÝCH FARIEB VYPRACOVAL: MGR.ART. BARBORA ČISÁRÍKOVÁ.
Náhoda a pravdepodobnosť
Spracovanie postupnosti pohľadu pravdepodobnostnými modelmi
Pravdepodobnosť podmienená.
RNDr. Gabriela Kovesiová
Komunitné záhrady v Bratislave
Ústav výrobných technológií
Lineárna nerovnica.
Tlačová konferencia 28.júna 2016 Vitajte!.
Úvod do jazyka C Algoritmizácia úloh.
Sekcia environmentálnych programov a projektov 11. decembra 2007
AMD Am386.
znalecký, stavebný a ekonomický softvér
Logaritmická rovnica.
Informačná a propagačná podpora prechodu Slovenskej republiky
Microsoft Engineering Excellence
Výkaz ISCP TREXIMA.
Základné pojmy spojené s BIOS
Intel
Otestuj sa Kvízové otázky 3. ročník.
FP7: Výskum v prospech MSP
Binárne Relácie Szendreyová Alžbeta.
Windows + Windows Live.
Databázové systémy.
Bloková schéma procesora
Technická prezentácia
Odčítanie celých čísel
Prozodické vlastnosti reči I. Časová modulácia reči (PD č. 4)
Čierne diery.
Exponenciálna rovnica
Čierne Diery.
Katalóg dát = systémový katalóg = data dictionary
História a vývoj telefónu a nácvik správneho telefonovania
Inštalácia Windows verzie
EBSCO Discovery Service ~ Jednoduché vyhľadávanie
Migrácia, utečenci – podpora samospráv
Vedúci diplomovej práce: prof. Ing. Stanislav Marchevský, Csc.
All-Hands Meeting Pezinok 2.0 Porada zamestnancov MsÚ
Dopady aktívnych opatrení trhu práce na zvyšovanie zamestnanosti
Európsky sociálny fond
Opakovanie sekvencia postupnosť príkazov (príkaz je povel, ktorý počítač alebo iné zariadenie pozná a dokáže vykonať) vykonávanú v takom poradí, v akom.
ZNALOSTNÉ SYSTÉMY prednáška č. 1
Grafický výstup - 2D help plot
Operačný systém Gabriel Horos.
Ročníková práca – Adam Guláš (IV.D, 2014/2015)
Tvorivosť a podnikavosť
Tvorba a manažment projektov
Rovnice a ich riešenia.
Formátovanie tabuliek
Štandardy v procese spracovania bibliografických informácií i u nás.
PhDr. Tatiana ARBE, OEMP ÚM STU
Rozpoznávanie obrazcov a spracovanie obrazu
Kapowtech RoboSuite Team10.
Čo s malými písmenkami vo Win10 ?
Nepriama úmernosť – tabuľka, rovnica a graf
Prepis prezentácie:

Osnova prednášky Synchronizácia v Jave Príklady riešenia synchronizačných nástrojov Solaris Windows XP Linux Pthreads

Synchronizácia v Jave Synchronizované príkazy – metóda wait – metóda notify Násobné notifikácie Synchronizácia blokov programov Java a semafory Java a monitory

Java, synchronizovaný príklad Veľmi podobný princíp monitorom S každým objektom sa druží zámok Pokiaľ metóda, ktorá je definovaná v objekte, NIE JE označená ako synchronizovaná, zámok sa ignoruje Pokiaľ metóda, ktorá je definovaná v objekte, JE označená ako synchronizovaná, volajúci požaduje zámok exkluzívne získať a pokiaľ zámok už niekto drží, volajúci sa umiestni do fronty na zámok, a plánovač JVM ho vyberie na vykonávanie podľa svojej vlastnej politiky Je tu typicky FIFO režim Zámok sa odomyká pri výstupe procesu (vlákna) zo synchronizovanej metódy

Java, metódy wait() a notify() Ak vlákno volá metódu wait( ), vykoná sa: - vlákno uvoľní držaný zámok objektu - vlákno prejde do stavu blokované - vlákno sa umiestni do množiny čakajúcich – do wait set Ak vlákno volá metódu notify( ) , vykoná sa: - vyberie sa niektoré vlákno T z množiny wait set - vybrané vlákno T sa presunie do množiny pripravených – entry set - označí vlákno T ako pripravené – runnable - T teraz opäť môže začať súperiť o zámok Zmyslom je zabrániť uviaznutiu

Java, násobné notifikácie notify() vyberie niektoré vlákno z wait set - nemusí to byť práve to vlákno, ktoré sme chceli, aby sa vybralo Java neumožňuje špecifikovať, ktoré vlákno sa má vybrať notifyAll() - vyberie všetky vlákna z wait set a - umiestni ich do entry set To vláknam umožňuje, aby sa rozhodli, ktoré bude pokračovať vo vykonávaní notify all() je konzervatívna stratégia ktorá najlepšie pracuje práve vtedy, keď vo wait set sa môže nachádzať viac procesov

Synchronizácia blokov programov Doba zamknutia (Scope of lock) je časový interval medzi získaním a uvoľnením zámku blok – časť programu, v žiadnom prípade však nie celá metóda, sa môže deklarovať ako synchronizovaný - realizácia blokov je vcelku kratšia ako realizácia metódy

Java a semafory Java semafory nepodporuje. Semafor je ale možné skonštruovať pomocou synchronizačných mechanizmov podporovaných Javou, napr. – nasledujúci úsek programu

Príklady riešenia synchronizačných nástrojov Solaris Windows XP Linux Pthreads

Solaris, synchronizácia Čo vie Solaris: - výpočty v reálnom čase - viacero vlákien - viacero procesov Implementuje širšiu škálu zámkov (lock) s cieľom podporovať: - multitasking, - multivláknovanie (multithreading) vrátane real-time vlákien, a - multiprocessing

Solaris, synchronizácia Synchronizačné nástroje, ktoré používa: Adaptívne mutexy – ochranu dát pre krátke segmenty kódu, (pre krátke kritické sekcie) podporujú semafory – adaptívne mutexy Viac procesorov – štartuje ako štandardný semafor, t.j. ako cyklický zámok (spinlocks) Jeden procesor – ako pre viac procesorov Podmienkové premenné – pre dlhé segmenty kódu (dlhé kritické sekcie) ponúka monitory s podmienkovými premennými a zámky typu readers-writers (čitateľ –pisateľ zámky) Rafinované semafory – pre dlhé segmenty kódu Čitateľ – pisateľ zámky – dáta ku ktorým sa zvyčajne pristupuje iba read-only spôsobom Turniket – je frontová štruktúra obsahujúca vlákna blokované na zámok. Solaris2 používa turniket na určenie poradia frontu vlákien čakajúcich na získanie buď adaptívneho mutexu alebo čitateľ-pisateľ zámku.

Windows XP, synchronizácia Čo vie Windows: - výpočty v reálnom čase - viacero vlákien - viacero procesov Synchronizačné nástroje ktoré poskytuje: - 1 procesor – maskovanie prerušení - viac procesorov: - V jadre – cyklické zámky - Mimo jadra – dispečerov objektov Dispečer objektu - mutex - semafor - udalosť Udalosť – druh dispečerského objektu, ktorý sa správa podobne ako podmienkové premenné.

Windows XP, synchronizácia multivláknové jadro – s podporou real-time apôikácií a multiprocesingu Na jednoprocesorovom stroji chráni globálne zdroje maskovaním prerušení. V multiprocesorových konfiguráciách používa spin-locks (pre krátke kritické sekcie) Podporujú sa dispečerské objekty, ktoré fungujú de facto ako všeobecné semafory alebo binárne semafory (mutexy) Dispečerské objekty môžu podporovať events (udalosti). Events pracujú podobne ako monitory s podmienkovými premennými.

Linux, synchronizácia Linux: Pred jadrovou verziou 2.6, zakazoval prerušenia pre implementáciu krátkych kritických sekcií Verzie 2.6 a neskoršie, úplne preemptívne Linux poskytuje: semafory cyklické zámky (spin locks)

Linux, synchronizácia Krátke kritické sekcie na monoprocesore sa riešia zamaskovaním prerušení Multiprocesing sa podporuje pomocou cyklických zámkov Dlhé kritické sekcie (v jadre) riešia semafory

Synchronizácia vlákien Pthreads Na operačnom systéme nezávislé API implementované vo viacerých OS Podporujú sa (poskytuje): mutex locks Binárne semafory Monitory s podmienkovými premennými Neportabilné rozšírenia podporujú: Zámky čítacích a zapisovacích operácií spin locks (cyklické zámky)