Käyttöjärjestelmät: poissulkeminen ja synkronointi



Samankaltaiset tiedostot
OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

OSA I: Yhteisten muuttujien käyttö. Prosessit samassa koneessa. Rio 2004 / Auvo Häkkinen 2-1

OSA I: Yhteisten muuttujien käyttö. Sisältöä. Prosessit samassa koneessa. Poissulkeminen ja synkronointi. Semaforit ja rinnakkaisuuden hallinta

OSA I: Sisältöä. Atomisuus (atomic action) v Poissulkeminen ja synkronointi. Kriittinen (koodi)alue (critical section)

Käyttöjärjestelmät: prosessit

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

Palvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät

Ongelmakenttä. Rinnakkaisuuden tarve. Kommunikointiin tarvitaan. Ympäristö Suunnittelun yksinkertaistaminen Suorituskyky Luotettavuus

Ongelmakenttä. Yhteenvetoa. Ratkottava. Mekanismit. Lukkomuuttujat. Lukkomuuttujat, Spin Locks. Rinnakkaisuuden tarve. Kommunikointiin tarvitaan

Yhteenvetoa. Ongelmakenttä

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5

Monitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Prosessi perinteisesti

Stallings, Luku 4.1. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen,

5. Luento: Rinnakkaisuus ja jako prosesseihin (+ lyhyesti reaaliajasta) Arto Salminen,

5. Rinnakkaisuus ja jako prosesseihin

Rinnakkaisohjelmistot. Liisa Marttinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Kevät 2004

Ongelmakenttä. Yhteenvetoa. Mekanismit. Ratkottava. Lukkomuuttujat, Spin Locks. Lukkomuuttujat. Rinnakkaisohjelmistot 2004 / Auvo Häkkinen 9-1

Käyttöjärjestelmät: Virtuaalimuisti

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

Ohjelmoinnin peruskurssien laaja oppimäärä

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

Tavoite. Monitorit. Monitori Hoare Monitori. Minimoi virhemahdollisuuksia. Monitori Synkronointimenetelmiä Esimerkkejä

Käyttöjärjestelmät II

Käyttöjärjestelmät II

IT K 1 45 K ä yt t öj ä rj estelmät

2 Konekieli, aliohjelmat, keskeytykset

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

Sisältöä SÄIKEET, SMP

Taustaa. Lukkiutuminen. Seuraukset. Määritelmiä Lukkiuma (deadlock) päättymätön odotus BLOCKED-tilassa. prosessi P. prosessi Q. pyydä A? OK.

Lukkiutuminen. Taustaa Aterioivat Filosofit Ennaltaehkäisy Havaitseminen Välttely. Andrews 4.3 Stallings (tai mikä tahansa KJ-kirja)

Lukkiutuminen. Taustaa

4-13. Ratkaisu 4: OK, mutta... vrt. 2. Ratkaisu 3: OK. Ratkaisu 5: OK? Nälkiintyminen?

Ohjelmoinnin peruskurssien laaja oppimäärä

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Rinnakkaistietokoneet luento S

Semaforit ja rinnakkaisuuden hallinta

Semaforit ja rinnakkaisuuden hallinta

OSA II: Hajautettu ympäristö. Sisältö, osa II. Ei yhteistä muistia. Sanomanvälitys. Etäproseduurikutsu. Rendezvous. Rio 2004 / Auvo Häkkinen

Semaforit ja rinnakkaisuuden hallinta. Tuottajat ja kuluttajat. Lukijat ja kirjoittajat. Andrews 4.2, Rio 2004 / Auvo Häkkinen

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

OSA II: Hajautettu ympäristö. Ei yhteistä muistia. Rio 2004 / Auvo Häkkinen

OSA II: Hajautettu ympäristö. Sisältö, osa II. Sanomanvälitys. Käsitteistöä. Sanomanvälitys. Kommunikointi. Sanomanvälitys. Etäproseduurikutsu

812315A Ohjelmiston rakentaminen. Asynkronisuus

C++11 seminaari, kevät Johannes Koskinen

SÄIKEET, SMP. Sisältöä. Stallings, Luku 4. Prosessi vs. säie Miksi säikeitä? ULT: Käyttäjätason säikeet KLT: Säikeiden toteutus ytimessä

Osio 2: Luennot 5-8 Muistinhallinta

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Sisältöä SÄIKEET, SMP

Algoritmit 1. Luento 3 Ti Timo Männikkö

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

815338A Ohjelmointikielten periaatteet

Hans Baumgartner nimi nimi nimi nimi. Reaaliaikakäyttöjärjestelmät

Intel Threading Building Blocks

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Arto Salminen,

Osio 3: Prosessit, siirräntä ja tiedostojärjestelmä

Processes and threads

Jakso 8 Ohjelman toteutus järjestelmässä

Etäproseduurikutsu, Remote Procedure Call (RPC) Etäproseduurikutsu. Poissulkeminen moduulin sisällä?

Etäproseduurikutsu. Etäproseduurikutsu, Remote Procedure Call (RPC)

Etäproseduurikutsu. RPC Toteutus Virhesemantiikka. Andrews 8.1, 10.3, Stallings 13.3

Zeon PDF Driver Trial

Algoritmit 1. Luento 4 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

VUOROTTAMINEN SMP JA REAALIAIKAJÄRJESTELMÄT Linux, W2000

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI ( )

LUENTO 8. u erillisten koneiden ryväs (cluster) u hajautettu järjestelmä (distributed system) u erilliset I/O-prosessorit

Tietorakenteet ja algoritmit

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ohjelmointiharjoituksia Arduino-ympäristössä

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla - meniköhän oikein? Yksityiskohtia pois ohjelmoijalta kääntäjälle

Monitorit. Monitori Synkronointimenetelmiä Esimerkkejä

Luento 8 Ohjelman toteutus järjestelmässä

Luento 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Monitorit -projekti Rinnakkaisohjelmointi

Tavoite. Monitorit. Semafori perusmekanismi synkronointiin. Hyötyjä:

u vapaakäyntisyys (reentrancy) u Yhteinen koodialue u kullakin oma data-alue, pino, PCB u osoitteet suhteellisia prosessin alun suhteen

Ohjelmoinnin perusteet Y Python

Tietorakenteet ja algoritmit - syksy

Transkriptio:

Käyttöjärjestelmät: poissulkeminen ja synkronointi Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet

Rinnakkaisuuden toteuttaminen Nykyaikaisissa käyttöjärjestelmissä rinnakkaisuus on itsestäänselvyys Erilaisia muotoja: Prosessien rinnakkaisuus Rinnakkaisohjelmointi Hajauttaminen Näiden toteuttamiseksi tarvitaan Poissulkemista Synkronointia Viestinvälitystä

Peruskäsitteistöä atominen operaatio kriittinen osio deadlock livelock poissulkeminen race condition nälkiintyminen jakamaton operaatio, jota ei voi keskeyttää ohjelman osio, joka käyttää jaettua resurssia, eivätkä muut prosessit saa olla yhtä aikaa suorittamassa vastaavaa osiota lukko, jossa kaksi tai useampi prosessi lukittuu, koska ne odottavat toistensa tekevän jotain lukko, jossa kaksi tai useampi prosessi vaihtaa tilaansa odottaessaan toistensa tekevän jotain, mutta eivät kuitenkaan tee mitään hyödyllistä yhden prosessin ollessa kriittisessä osiossa, pitää muut prosessit sulkea pois, jotta ne eivät pääse samoihin jaettuihin resursseihin käsiksi tilanne, jossa monta säiettä tai prosessia lukee ja kirjoittaa dataa, joka on jaettu resurssi, siten, että operaatioiden suoritusjärjestys vaikuttaa lopputulokseen tilanne, jossa prosessi ei saa suoritusaikaa skedulerilta, vaikka sen pitäisi

Yksi- vs. moniprosessori Suoritinajan jako yhdellä suorittimella P1 P2 P3 Prosessien jako eri suorittimille P1 P2 P3

Rinnakkaisuuden tuottamia ongelmia Mietintätauko: Mitä ongelmia rinnakkaisuus aiheuttaa ohjelmoinnissa ja käyttöjärjestelmissä? Jaetut resurssit ja data miten hallitaan luku- ja kirjoitusoperaatiot jaettuun muistiin? Resurssien jako suoritinaika ja I/O vaikea jakaa optimaalisesti, voi syntyä deadlock-tilanteita. Ohjelmointivirheitä syntyy helposti ja niiden löytäminen on vaikeaa suoritusjärjestys voi vaikuttaa tuloksiin.

Esimerkki: kriittinen osio ja race condition void echo(){ chin = getchar(); chout = chin; putchar(chout); } Ajetaan yksinkertaisessa yhden käyttäjän järjestelmässä, yksiprosessorijärjestelmässä, ohjelma kerrallaan Käytetään monessa eri ohjelmassa Jaettu funktio, jaettu muisti

Esimerkki: kriittinen osio ja race condition Entäpä, jos kyseessä onkin moniprosessorijärjestelmä, niin mitä voi tapahtua? Prosessi 1 Prosessi 2 chin = getchar(); chout = chin; putchar(chout); chin = getchar(); chout = chin; putchar(chout);

Ratkaisukeinoja Kriittinen osio vain yksi prosessi kerrallaan Prosessit suoritetaan eri suorittimilla P1 menee suorittamaan funktiota ensin P2 yrittää suorittaa samaan aikaan, mutta se estetään (blocked) P2 laitetaan suspend-tilaan P1 saa suoritettua funktion loppuun P2 pääsee jatkamaan (unblocked ready, running)

Race condition kilpatilanne Race condition eli kilpatilanne syntyy seuraavasti monta prosessia tai säiettä lukee ja kirjoittaa samaa dataa lopputulos riippuu prosessien käskyjen suoritusjärjestyksestä Viimeisenä suorituksen tekevä prosessi päättää lopputuloksen

Kilpailu prosessien välillä Tarvitaan poissulkemista (mutual exclusion, mutex) Kriittiset osat Kriittiset resurssit (esim. tulostin) Deadlockien välttäminen Lukko syntyy, kun kaksi tai useampi prosessi odottaa samoja resursseja, eikä kumpikaan vapauta jo varattua resurssia Nälkiintymisen välttäminen KJ ei välttämättä anna resursseja jollekin tietylle prosessille Sekä deadlockit että nälkiintyminen ovat seurausta poissulkemisesta

Toimivan poissulkemisen vaatimuksia Vain yksi prosessi kerrallaan kriittisessä osiossa Jos prosessi pysähtyy ei-kriittisessä osiossa, se ei saa häiritä muiden prosessien toimintaa Ei deadlockkeja eikä nälkiintymistä Prosessin tulee viipymättä päästä suorittamaan kriittistä osiota, mikäli muut prosessit eivät sitä ole suorittamassa Mitään oletuksia ei saa tehdä prosessien nopeuden tai määrän suhteen Prosessi on kriittisessä osiossa vain äärellisen pituisen ajan

H/W-tuki poissulkemiselle Keskeytysten disablointi Prosessi on suorittimella, kunnes se tarvitsee KJ:n palvelua tai se keskeytetään Keskeytysten (hetkellinen) disablointi takaa poissulkemisen muut prosessit eivät saa suoritinaikaa Toimii yhdellä prosessorilla, muttei moniprosessorijärjestelmissä

Esimerkki: keskeytysten disablointi Prosessi X: while (true){ interrupts_disable(); /* disable interrupts */ /* critical section, no other processes can execute*/ interrupts_enable(); /* enable interrupts */ /* remaining non-critical section */ }

Erityiset käskyt Compare & Swap Atominen käsky, jolla voi testata arvoja ja sijoittaa uuden Käskyn avulla voidaan toteuttaa poissulkeminen Exchange Atominen käsky, joka vaihtaa muistipaikan sisältämän arvon rekisteriin Käskyn avulla voidaan toteuttaa poissulkeminen

Esimerkki: Compare & Swap

Esimerkki: Exchange

H/W-tuen haittoja Odottelu vie prosessori aikaa Nälkiintyminen on mahdollista, jos useampi prosessi odottelee Lukittuminen on mahdollista Esim. korkeamman prioriteetin omaava prosessi saa suoritusaikaa ja matalamman prioriteetin prosessi on tehnyt poissulkemisen

Semaforit Semafori = kokonaislukuarvo, jota käytetään prosessien väliseen viestintään Arvoa käsitellään atomisilla operaatioilla alustus (initialize) vähennys (decrement) - semwait() lisäys (increment) - semsignal() Semafori alustetaan ei-negatiiviseen arvoon Jos semwait():n jälkeen arvo on negatiivinen, prosessi blokataan Jos semsignal():n jälkeen arvo on 0 tai negatiivinen, semwait():lla blokattu prosessi saa jatkaa

Semaforin toteutusesimerkki

Binäärinen semafori

Heikot ja vahvat semaforit Semaforia odottavat prosessit laitetaan jonoon (queue) Missä järjestyksessä prosessit otetaan jonosta pois? Vahvat semaforit käyttävät FIFO:a Reiluin tapa kohdella prosesseja Eniten odottanut pääsee ensiksi pois Heikot semaforit eivät määrittele järjestystä

Esimerkki: vahva semafori

Esimerkki: semafori

Poissulkeminen semaforeilla

Prosessit ja semaforit