1 / 16

Osnova prednášky

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.

esben
Download Presentation

Osnova prednášky

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

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

  9. 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

  10. 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.

  11. 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é.

  12. 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.

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

  14. 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

  15. 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)

More Related