1 / 20

Rinnakkaisuus

Rinnakkaisuus. Rinnakkaisella ohjelmalla tarkoitetaan ohjelmaa, jossa rinnakkain etenevät prosessit kommunikoivat keskenään käsittelemällä yhteisiä tietorakenteita tai sanomien avulla Esimerkiksi moniajokäyttöjärjestelmä. Rinnakkaiset prosessit.

duena
Download Presentation

Rinnakkaisuus

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. Rinnakkaisuus • Rinnakkaisella ohjelmalla tarkoitetaan ohjelmaa, jossa rinnakkain etenevät prosessit kommunikoivat keskenään käsittelemällä yhteisiä tietorakenteita tai sanomien avulla • Esimerkiksi moniajokäyttöjärjestelmä

  2. Rinnakkaiset prosessit • Yksittäisen ohjelman sisällä on rinnakkain eteneviä prosesseja (multitasking) • Ja/tai järjestelmässä on toisistaan riippumatta rinnakkain eteneviä prosesseja (moniajo, multiprogramming)

  3. Rinnakkaisuutta voi olla todellista (monisuoritinjärjestelmä) tai • näennäistä (yksi suoritin)

  4. Syitä rinnakkaisuuteen • Nopeus: usea suoritin • Hajautus: esim. Hajautettu tiedostojärjestelmä • Ongelman luonne: Jotkin ohjelmointiongelmat on helpompi ratkaista • Modularisointi: esimerkiksi unixissa putket (pipe)=> sanomien vaihto

  5. Prosessit voivat vaikuttaa toisiinsa • Suorasti: • käyttämällä yhteisiä tietorakenteita, lähettämällä toisilleen sanomia • Epäsuorasti • kilpailemalla resursseista

  6. Ratkaistavia ongelmia • Poissulkemisongelma • Yhteisten tietorakenteiden päivitys • Synkronointi • tahdistaminen • Lukkiutuminen • prosessit odottavat ristiin toisiansa • Nälkiintyminen • Prosessi ei etene (prioriteetti alhainen)

  7. Poissulkemisongelma • Samojen tietorakenteiden samanaikaisen käytön riskin sisältäviä käskyjaksoja kutsutaan kriittisiksi alueiksi • Kriittisen alueen käskyt pitäisi suorittaa yhtenä jakamattomana operaationa

  8. Poissulkemisongelma voidaan lyhytaikaisesti välttää keskeytysten estämisellä, mutta ei kaikissa tilanteissa: • voi aiheuttaa virhetoimintoja laitteissa • kriittisen alueen sisällä voidaan joutua odottamaan jotain tapahtumaa

  9. Esimerkkikäyttöjärjestelmässä käytetään poissulkemiseen synkronointikäskyä: if (lock_bit==1) wait; lock_bit= 1; ….kriittisen alueen käskyt lock_bit=0;

  10. Dijkstran P- ja V-operaatiot VAL: semaforimuuttujan arvo, alkuarvo on tässä tapauksessa 1 LINK: Linkkiketju, johon on linkitetty semaforin arvon muuttumista jonottavien prosessien PCB:t P-operaatio (Passeer, pidätä) toimii seuraavasti: P(sem) SEM.VAL = SEM.VAL - 1 if (SEM.VAL < 0) { linkitä prosessin PCB LINK-ketjun loppuun; aseta prosessin tilaksi WAIT; siirry vuorontajaan; }

  11. V-operaatio (Verlaaten, vapauta) toimii seuraavasti: V(sem) SEM.VAL = SEM.VAL + 1 if (SEM.VAL <= 0) { linkitä jonon ensimmäinen prosessielementti pois ja aseta aseta sen tilaksi READY; siirry vuorontajaan; } • Kriittiset alueet ympäröidään P- ja V-operaatioilla

  12. Sykronointi • Voidaan ratkaista esimerkiksi P- ja V-operaatioilla • Käyttöjärjestelmissä usein eri operaatiot poissulkemisen ja synkronoinnin toteuttamiseksi

  13. Synkronointi- ja poissulkemisoperaatioiden käytöstä • Käänteisprioriteettiongelma = kriittinen alue jää suljetuksi, koska alhaisen prioriteetin prosessi joutuu luopumaan kriittisellä alueella suorittimesta • Ongelma voidaan osittain ratkaista lisäämällä semaforimuuttujaan parametriksi prioriteetti, johon prosessi nostetaan kriittisellä alueella

  14. Lukkiutumis- ja nälkiintymisongelmat • Lukkiutuminen = joukko prosesseja, jotka kaikki odottavat jonkin muun tähän joukkoon kuuluvan prosessin hallussa olevaa resurssia (myös muita tapauksia) • Lukkiutuminen estetään laukaisemalla lukitus tai välttämällä tai estämällä

  15. Laukaiseminen • Havaitaan, ja lopetetaan tai perutetaan prosesseja • Välttäminen • resurssi annetaan prosessin käyttöön ehdolla, että resurssia on riittävästi vapaana • Estäminen • Esim. resurssien numerointi, kielto prosessia pyytämästä resurssia, jonka numero on pienempi kuin sen jo saaman resurssin

  16. Sanomienvälitysmekanismit • Postilaatikkomekanismi P1 P4 Ei osoitetta mbox P2 P5 P3

  17. Sanomajono P1 P4 Q1 P2 Q2 P3 Vastaanottava prosessi voi kuunnella useita kanavia ja noukkia viestejä - Lähettävän prosessin täytyy tuntea vastaanottaja

  18. Sanomakanava • yksi- tai kaksisuuntaisia • esimerkiksi unix-putket tai socketit P1 P2 P3

  19. Rinnakkainen ohjelmointi lausekielissä • Monitori • Aliohjelmapakkaus • Poissulkeminen tapahtuu automaattisesti • Synkronointia varten ehtomuuttujia sekä operaatio await() ja signal() • await(x) odotus; signal(x) herättää yhden odottajista • Sanomanvälitys • kohtaamismekanismin toteutus: • etäproseduurikutsu = proseduurikutsun parametrit saadaan toiselta prosessilta ja ulostuloparametrit välitetään takaisin

More Related