1 / 25

Sisteme shfrytezimi

Sisteme shfrytezimi. Leksion 6 Semaforet dhe Deadlock-s. Semaforet. Jane nje mjet sinkronizimi per zgjidhjen e seksionit kritik Konkretisht Semafori S eshte nje variabel I tipit integer Ky variable, pervec aksesimit mund te modifikohet nga 2 metoda S : wait() dhe signal()

Download Presentation

Sisteme shfrytezimi

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. Sistemeshfrytezimi Leksion 6 Semaforetdhe Deadlock-s Iralda Mitro

  2. Semaforet • Jane njemjetsinkronizimi per zgjidhjen e seksionitkritik • KonkretishtSemaforiSeshtenjevariabel I tipit integer • Ky variable, pervecaksesimitmundtemodifikohetnga 2 metoda • S: wait()dhesignal() • KetometodajanetevetmetqemundtemodifikojneSemaforin S • Duketpraqekjomenyreeshteshume me pak e komplikuarngaatocfarekemistudiuarderitani. Iralda Mitro

  3. Metodat e Semaforit • Veprimet Wait dhe Signal ekzekutohen ne menyreatomike • Nesendonjeproceseshte duke modifikuarvleren e semaforit, atehereasnjeprocestjeternuk e modifikon ate ne tenjejtenkohe. • wait (S) { while S <= 0 ; // asnjeveprim S--; } • signal (S) { S++; }

  4. Perdorimiisemaforitsimjetsinkronizimi • Counting semaphore (Semaforinumerues) – njevlerenumerikeqevarionderi ne numra pa limit • Binary semaphore (Semaforibinar) – njevlerenumerikeqevarionvetem midis vlerave 0 dhe 1; mundtejete me ilehte per t’uimplementuar • Njesemafornumeruesmundteimplementohetsinjesemaforbinar Iralda Mitro

  5. Zgjidhja e problemitteseksionitkritik ne rastin me n-procese • Mundesonperjashtiminreciprok Semaphore S = 1; wait (S); // seksionkritik signal (S); • Te gjithe n proceset do teperdorinnjesemaforteperbashketteinicializuar me 1 • Shpjegimi: • Tek wait() vlera e S behet 0 • Procesitjeterqevjenmbetetaty, sepsenukplotesohetkushti S<=0 • Kur I pari e ndryshon s=0, e ben s=1 tek signal(), ateheremundtefutetprocesi I dyte

  6. Implementimiisemaforeve • Duhetgarantuarqedyprocesemosteekzekutojnewait ()dhesignal()mbitenjejtinsemafor ne tenjejtenkohe • Per ketearsye, implementimiityrebehetnje problem iseksionitkritik, kukodi I wait() dhe signal() vendosen ne seksioninkritik • Mundtendodhepritjaaktive (busy waiting) ne seksioninkritik, praprocesimundteciklohetvazhdimisht ne pjesen e koditteseksionithyres • Vini re! Aplikacionetmundteshpenzojneshumekohe ne seksionetkritike, ndajkjonukeshtenjezgjidhje e mire. Iralda Mitro

  7. Implementimiisemaforit pa pritjenaktive • Cdosemafor ka njerradhepritjejetelidhur me te. • Cdo element irradhesmban 2 vlera: • value (integer) • pointer tekelementiirradhes ne liste • Dyveprime: • block – vendosprocesinqetherretveprimin ne rradhen e duhurtepritjes • wakeup – hiqnjengaprocesetngarradha e pritjesdhevendose ne rradhen ready

  8. Implementimiisemaforit pa pritjenaktive type semaphore = record value : integer l: liste_procesesh end; Semaphore S; wait (S){ value--; if (value < 0) { //vendosprocesin ne s.l block(); } } signal (S){ value++; if (value <= 0) { // hiqprocesin P ngas.lwakeup(P); } } Iralda Mitro

  9. Implementimiisemaforit pa pritjenaktive • Kurnjeprocesduhettetherrase wait(), vlera e semaforitdekrementohet • Nesekjovlererezultonpozitive, atehereprocesi do teprese. • Ne vend tepritjesaktiveprocesimundtebllokojeveten. Kybllokim do tebejeqeprocesitekaloje ne gjendjepritjeje, dheprocesikalon ne rradhen e pritjes per semaforin. • Kontrolliikalonperzgjedhesitafatshkurter, icili I kalonnjeprocesitjeter ne ekzekutim. • Aktivizimiiketijprocesi do tebehetkurprocesitjetertetherrase signal() Iralda Mitro

  10. Implementimiisemaforit pa pritjenaktive • Kyllojimplementimitregon se vlera e semaforitmundtebehetedhe negative. • Disavantazhikesajzgjidhjeje: Bllokimireciprok • Mundtekemidisaproceseteciletjane ne pritjeqetendodhenjengjarje - signal(), dhekjongjarjemundteshkaktohetvetemnganjeprejketyreproceseveqejane ne pritje.

  11. Deadlock (bllokimireciprok) • Deadlock – dyose me shumeprocesekuseciliprejtyrepretqetendodhenjengjarjeqeshkaktohetvetemnganjengaketaproceseprites Iralda Mitro

  12. Deadlock (bllokimireciprok) • Le tejene S dhe Q, dysemafore = 1 Procesi P0ProcesiP1 wait (S); wait (Q); wait (Q); wait (S); . . . . . . signal (S); signal (Q); signal (Q); signal (S); • Starvation – pritja e pafundme per semaforin. Njeprocesmundtemoshiqetkurrengarradha e semaforit ne tecilineshtepezulluar.

  13. Problemeklasiketesinkronizimit • ProblemiProdhues-Konsumator • ProblemiLexues-shkrues • ProblemiiFilozofeve Iralda Mitro

  14. ProblemiProdhues-Konsumator • N-buffer, kusecilimundtembajenje element • Semaforimutex= 1 • (per perjashtiminreciprok) • Semaforifull = 0 • (percaktonnese buffer eshte plot) • Semaforiempty = N • (per sinjalizimin e vendeve bosh) Iralda Mitro

  15. ProblemiProdhues-Konsumator • ProcesiProdhues do { // prodho element wait (empty); wait (mutex); // SEKSION KRITIK // shto element ne buffer signal (mutex); signal (full); } while (true); • ProcesiKonsumator do { wait (full); wait (mutex); // SEKSION KRITIK // hiq element nga buffer signal (mutex); signal (empty); //konsumoelementin e hequr } while (true); Iralda Mitro

  16. ProblemiLexues-shkrues • Kemidisatedhenaqendahenmesnjenumerproceseshkonkurues • Readers – vetemlexotedhenat, pa kryerasnjendryshim • Writers – mundtelexojnedheshkruajne • Problemi – Lejimiidisareaders telexojne ne tenjejtenkohe. Vetemnjewriter ivetemmundteaksesojetedhenat e perbashketa ne nje moment tecaktuar. • Te dhenat e perbashketa • Te dhenatqe do lexohen • Semaforimutex = 1 • Semaforiwrt = 1 • Integer readcount= 0 Iralda Mitro

  17. ProblemiLexues-shkrues • Procesishkrues do { wait (wrt) ; // shkrimitektedhenat signal (wrt) ; } while (true) • Procesilexues do { wait (mutex) ; readcount ++ ; if (readercount == 1) wait (wrt) ; signal (mutex) // leximi I tedhenave wait (mutex) ; readcount -- ; if (readcount == 0) signal (wrt); signal (mutex) ; } while (true) Iralda Mitro

  18. ProblemiiFilozofeve • Filozofimundteushqehetvetemnesedyshkopinjte ne krahtetijjanete lire. • Filozofimundtejete ne njengaketogjendje: • Menduar • Uritur • Duke ngrene • Te dhenat e perbashketa • Njetas me oriz (data set) • Semaforichopstik = 1 Iralda Mitro

  19. ProblemiiFilozofeve • Filozofii Do { wait ( chopstick[i] ); wait ( chopStick[ (i + 1) % 5] ); // eat signal ( chopstick[i] ); signal ( chopstick[ (i + 1) % 5] ); // think } while (true) ; Iralda Mitro

  20. Monitoret • Njemjettjetersinkronizimi • Monitoriperbehetnga 1 bashkesiveprimeshtepercaktuarangaperdoruesi • Ne trupin e monitoritpercaktohendisavariablateperbashketadheimplementimet e disametodave • Nje procedure e caktuarbrendanjemonitorimundteaksesojevetemvariablat e deklaruarlokalishttekmonitori. • Vetemnjeprocesmundtejeteaktivbrendamonitorit ne nje moment tecaktuar Iralda Mitro

  21. Struktura e njemonitori monitor monitor-name { // shared variable declarations procedure P1 (…) { …. } … procedure Pn (…) {……} Initialization code ( ….) { … } … }

  22. Pamjeskematike e monitorit Iralda Mitro

  23. Variablatkonditetemonitorit • condition x, y; • Dyveprimeaplikohenmbiketavariabla: • x.wait () – bllokonprocesinqetherretketeinstruksion • x.signal () –riaktivizonnjengaproceset e bllokuar (nese ka) qekishtethirrurx.wait() Iralda Mitro

  24. Monitor me variablakondite Iralda Mitro

  25. Problemiifilozofeve me Monitore monitor DP { enum { THINKING; HUNGRY, EATING) state [5] ; condition self [5]; void pickup (inti) { state[i] = HUNGRY; test(i); if (state[i] != EATING) self [i].wait; } void putdown (inti) { state[i] = THINKING; // test left and right neighbors test((i + 4) % 5); test((i + 1) % 5); } void test (inti) { if ( (state[(i + 4) % 5] != EATING) && (state[i] == HUNGRY) && (state[(i + 1) % 5] != EATING) ) { state[i] = EATING ; self[i].signal () ; } } initialization_code() { for (inti = 0; i < 5; i++) state[i] = THINKING; } } Iralda Mitro

More Related