Johdantoa. Miksi rinnakkaisuutta? Keskinäinen kommunikointi. Prosessit voivat häiritä toisiaan! Rinnakkaisuus - Samanaikaisuus

Samankaltaiset tiedostot
Johdantoa. Miksi rinnakkaisuutta? Laitteistoarkkitehtuureja. Rinnakkaisuus - Samanaikaisuus. Peräkkäisyyteen perustuvat sovellukset

Johdantoa. Andrews, Ch 1

Johdantoa. Rinnakkaisuus - Samanaikaisuus. Peräkkäisyyteen perustuvat sovellukset

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

Rinnakkaisohjelmointi

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

Sisältöä SÄIKEET, SMP

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

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

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

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

Prosessi perinteisesti

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

Stallings, Luku 4.1. KJ-I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 4-1. KJ-I I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 12-1

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ä

Sisältöä SÄIKEET, SMP

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

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

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

Yhteenvetoa. Ongelmakenttä

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

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

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

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

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)

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

Käyttöjärjestelmät II

2 Konekieli, aliohjelmat, keskeytykset

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

Semaforit ja rinnakkaisuuden hallinta

Semaforit ja rinnakkaisuuden hallinta

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

Rinnakkaistietokoneet luento S

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

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

Käyttöjärjestelmät II

Käyttöjärjestelmät: prosessit

Verkkojen verkko - maailmankylä. Hajautetut järjestelmät yhteistyön ongelmallinen maailma. Hajautettuja järjestelmiä. Hajautusta!. miksi oikeastaan?

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Processes and threads

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

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

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

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

Prosessit ja säikeet SMP, Mikroytimet W2K säikeet

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

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

Käyttöjärjestelmät II. SMP, Mikroytimet. Prosessit yleensä. UNIX prosessit. UNIX SVR4 Prosessit. UNIX prosessin kuvaaja

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

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

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

KJ-II K2006 / Auvo Häkkinen - Teemu Kerola

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

Luento 1 Tietokonejärjestelmän rakenne

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

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

RINNAKKAINEN OHJELMOINTI A,

Luento 1 Tietokonejärjestelmän rakenne

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

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

11. Javan toistorakenteet 11.1

CUDA. Moniydinohjelmointi Mikko Honkonen

Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä

Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä

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

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

815338A Ohjelmointikielten periaatteet

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

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

Sisältö, osa II. Sanomanvälitys. Kanavat. Hajautettu ympäristö Ei yhteistä muistia Kommunikointi sanomien välityksellä.

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Algoritmit 1. Luento 3 Ti Timo Männikkö

Tutoriaaliläsnäoloista

Hajautettu prosessointi. Stallings, Luvut Sisältöä luento 18

Sisältöä luento 18. Hajautettu prosessointi. Stallings, Luvut Esimerkkejä: homogeenisia hajautettuja arkkitehtuureja

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Rinnakkaistietokoneet luento S

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

12. Javan toistorakenteet 12.1

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

C++11 seminaari, kevät Johannes Koskinen

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Ohjelmoinnin peruskurssien laaja oppimäärä

Jakso 4 Aliohjelmien toteutus

1. Tarkastellaan seuraavaa stokastista Petri-verkkoa: p 2. p 1. lock write 1

OSA II: Sisältö, osa II. Sanomanvälitys. Käsitteistöä. Sanomanvälitys. Kommunikointi. Hajautettu ympäristö Ei yhteistä muistia.

Luento 4 Aliohjelmien toteutus

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Semaforit ja rinnakkaisuuden hallinta. Tuottajat ja kuluttajat. Halkaistu binäärisemafori (Split binary semaphore) semaforit empty ja full

Ohjelmoinnin perusteet, syksy 2006

Jakso 4 Aliohjelmien toteutus

Ohjelmoinnin peruskurssien laaja oppimäärä

12. Javan toistorakenteet 12.1

Jakso 8 Ohjelman toteutus järjestelmässä

Ohjelmointiharjoituksia Arduino-ympäristössä

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

Transkriptio:

Johdantoa Rinnakkaisuus vs. samanaikaisuus Laitearkkitehtuureja Prosessien välinen kommunikointi Sovellusten luokittelua Ohjelmointiparadigmoja, syntaksia Rinnakkaisuus - Samanaikaisuus Peräkkäisyyteen perustuvat sovellukset yksi kontrollisäie Rinnakkaiset sovellukset useita kontrollisäikeitä kun yksi odottaa, muut voivat edetä suora tai epäsuora kommunikointi synkronointi, poissulkeminen (atomisuus) Rinnakkaisuus vs. samanaikaisuus Andrews, Ch 1 1-2 Miksi rinnakkaisuutta? Tavoitteita parantunut suorituskyky parantunut luotettavuus komponenttien yksinkertaisuus sopivuus hajautettuun ympäristöön Hinta monimutkaisempi suunnitella Käyttäytymisen hallinta vaikeampaa 1-3 Missä rinnakkaisuutta? tietokoneiden käyttöjärjestelmissä I/O-toiminta WWW-palvelin palvelee samanaikaisesti useita asiakkaita hajautettu laskenta SETI-projekti, sääennusteet, salakirjoituksen murtaminen sulautetut järjestelmät esim. autoissa keräämässä ja käsittelemässä tietoja eri paikoista simulaatiot reaalimaailman tapahtumien mallintaminen multimedia-/peliohjelmat samanaikaisesti käsiteltävä liikkuvaa kuvaa ja ääntä komponenttiohjelmointi 1-4 Keskinäinen kommunikointi prosessi i prosessi j kommunikointiin voidaan käyttää -yhteistä muuttujaa -sanomanvälitystä Prosessit voivat häiritä toisiaan! yhteinen muisti prosessi i prosessi j i: 10 k=k+1; k=k+1; k: 5 i=i-1; i=i-1 Prosessien ja/tai säikeiden välillä on hyvin monenlaista tarvetta kommunikointiin 1-5 Prosessien tai säikeiden yhteistoiminta pitää varmistaa! 1-6 1

Prosessien toiminta pitää jotenkin synkronoida! tuottaja ja kuluttaja,joiden välissä on puskuri tuottaja kirjoittaa puskuriin Mitä ongelmia voi syntyä? Mitä toimintoja tässä pitää synkronoida? puskurin käsittely kirjoittamisen ja lukemisen tahdistus kuluttaja lukee puskurista Termejä keskinäinen poissulkeminen (mutual exclusion) varmistetaan, ettei yhteistoiminnan onnistumisen kannalta kriittisiä osia prosessien ohjelmakoodista suoriteta samanaikaisesti kriittinen alue (critical section): vain yksi prosesseista voi suorittaa kriittistä aluettaan esim. äskeisessä tuottaja-kuluttaja-ongelmassa tuottaja ja kuluttaja eivät pääse samanaikaisesti käsittelemään puskuria. ehtosynkronointi (condition synchronization) prosessin eteneminen estetään, kunnes tietty ehto toteutuu kuluttaja saa ottaa puskurista vasta kun tuottaja on sinne jotakin tuonut tuottaja saa kirjoittaa uutta vasta kun kuluttuja on entisen lukenut 1-7 1-8 Laitteistoarkkitehtuureja SISD (Single Instruction Single data) tavallisia prosessoreja SIMD (Single Instruction Multiple data) taulukkoprosessori, vektoriprosessori Primary memory Level 2 cache Level 1 cache CPU Rinnakkaisuus? Samanaikaisuus? Andrews Fig 1.1 1-9 1-10 MIMD, tiukasti kytketty = moniprosessorijärjestelmä, yhteiskäyttöinen muisti MIMD, löyhästi kytketty = hajautetut, erilliset koneet Rinnakkaisuus? Samanaikaisuus? Muistin eheys? Andrews Fig 1.2 1-11 Sanomanvälitys Rinnakkaisuus? Samanaikaisuus? Muistin eheys? Andrews Fig 1.3 1-12 2

Miksi? Synkronointitarve Poissulkeminen: vuorot yhteisten resurssien käytössä Ehtosynkronointi: odota toisen etenemistä Prosessien välinen kommunikointi Inter Process Communication, IPC Kuinka? Talleta paikkaan, josta toinen voi lukea Muuta yhteiskäyttöisen muuttujan arvoa = yhteinen muistialue Sovellus: poissulkeminen / synkronointi Kirjoita yhteiskäytössä olevaan kommunikointikanavaan = sanomanvälitys KJ: poissulkeminen / synkronointi 1-13 1-14 Prosessi A Prosessi A=f(..) A =X; X=A; Y=f(A ) A=f(Y); ; A: 10 15 A : 510 X: 10 5 Y: 30 0 A, A: store into X : load from X Kommunikointi A <=> A : store into Y A: load from Y Ongelmakohtia? 1-15 Proses ssi si A X: 10 5 Y: 0 Proses ssi si A=f(..) A =X; X=A; Y=f(A ) A=f(Y); ; A: 6 A : 5 Kommunikointi A Jos on nopeampi! A : load from X A: store to X : store into Y A: load from Y välimuistit ja keskusmuistin päivitys! 1-16 A:n välimuisti: X=20 :n välimuisti: X= X=20-5 laskee uuden arvon X:lle: X=-5 Keskusmuisti X: 20-5 A:n välimuistissa oleva tieto tehtävä jotenkin epäkelvoksi! 1-17 Sanomanvälitys Proses ssi si A X=f(..); send X to X: 10 X: 510 OS kernel procedure receive send send procedure receive Proses ssi si receive X from A Y=f(X); buffer 10A_ Ongelmakohtia? 1-18 3

Kommunikointitavat Yhteiskäyttöinen muisti LOAD STORE LOAD STORE viestien tahdistus muistipaikan käyttö Kumpi kommunikointitapa? Tarkkuus / nopeus (granularity) välitön vaikutus käskyn tarkkuudella Sanomanvälitys SEND RECEIVE RECEIVE SEND Sanomanvälitys, dedikoidut prosessorit LAN: 5-10 ms viiveet proseduurin tarkkuudella Sanomanvälitys, yleiset palvelinkoneet LAN/WAN: 10 ms n sekunnin viiveet palvelun tarkkuudella 1-19 1-20 Luotettavuus täysin luotettava (tai täysi epäonnistuminen) Sanomanvälitys Saman koneen sisäisesti LAN sama kuin yhteiskäyttöisellä muistilla (lähes) kommunikointi luotettavaa prosessit voivat epäonnistua toisista riippumatta WAN epäluotettava kommunikointi prosessit voivat epäonnistua toisista riippumatta 1-21 1-22 Prosessi ja sen säikeet / Säikeet Nopein kommunikointitapa oletusarvoisesti saman prosessin säikeille KJ huolehtii viittauksista yhteisiin globaaleihin muuttujiin (kirjanpito PC:ssä) Kullakin säikeellä oma pino dynaaminen tilanvaraus aliohjelmia kutsuttaessa kullakin säikeellä omat paikalliset muuttujat Stallings Fig 4.2 Käyttö normaaleilla muistiviitekäskyillä LOAD, STORE, 1-23 1-24 4

Prosessien välinen kommunikointi putki (pipe) eräänlainen puskuri, joka siirtää tavuvirtaa prosessilta toiselle Unix sanomajono (message queue) prosessi voi lähettää sanomia sanomajonojen avulla Solaris, System V jaettu muistialue (shared memory) alue kuuluu useamman prosessin muistiavaruuteen Unixissa yhteinen muistialue kaikkien aluetta jakavien prosessien virtuaalimuistia säie (thread) yhteinen muistialue oma kontrolli POSIX-kirjasto, pthread Yli 60 funktiota Luonti, pysäytys, lopettaminen, pthread_create(), pthread_attr_init() pthread _exit(), pthread_join(), pthread_detach() sched_yield() Synkronointi, poissulkeminen mutexit, rw-lukot, ehtomuuttujat JAVA: pakkaus java.lang luokka Thread säie.start(), säie.stop(), säie.sleep() c Lue man- / opastussivut c Andrews ch 4.6, 5.4 1-25 1-26 #include <pthread.h> // esittele globaalit muuttujat tässä (shared) int main(int argc, char *argv[]) { pthread_t pid, cid; printf( Creating two threads\n"); pthread_create(&pid, NULL, Producer, NULL); pthread_create(&cid, NULL, Consumer, NULL); pthread_join(pid, NULL); pthread_join(cid, NULL); printf( Threads joined\n"); void *Producer(void *arg) { // säikeen suoritus alkaa tästä // esittele paikalliset muuttujat tässä (private) printf( Producer started\n"); void *Consumer(void *arg){ // säikeen suoritus alkaa tästä printf( Consumer started\n"); 1-27 / Prosessit Eri vanhemmista peräisin olevat prosessit Palvelupyynnöt alueiden luomiseksi ja liittämiseksi prosessin osoiteavaruuteen shmget(), shmctl(), shmat(), shmdt(), ftok() Muistiin viittaus normaaleilla käskyillä KJ: kirjanpito yhteiskäytössä olevista alueista Käyttöoikeudet kuten tdstoilla kuka: u, g, o miten: r, w, x c Lue man-sivut 1-28 RIO-kurssi # esittele yhteiset muuttujat tässä # esittele yhteiset aliohjelmat tässä process Prosessi_A(käynnistysparametrit) { # esittele paikalliset muuttujat tässä (yksityisessä käytössä) # esittele paikalliset aliohjelmat tässä process Prosessi_(käynnistysparametrit){ Emme ota kantaa siihen kuinka prosessit käynnistetään Huom: kullakin prosessilla oma pino 1-29 Keskeytykset / Vuorottaminen Prosessin suoritus voi keskeytyä kahden konekielisen käskyn välissä Prosessori automaattisesti suorittamaan KJ:tä Keskeytys voi aiheuttaa prosessin vaihdon KJ tallettaa rekistereiden arvot PC:hen KJ lataa rekistereille uudet arvot toisesta PC:stä kun prosessi päivittämässä yhteistä data LOAD R1,A ADD R1,=10 STORE R1, A LOAD R1,A ADD R1,=5 STORE R1, A, lopputulos riippuu suoritusjärjestyksestä: A= A+5, A=A+10, A= A+15 Atomisuus? 1-30 5

Moniajojärjestelmät Rinnakkaisten sovellusten luokittelua Moniajojärjestelmät Hajautetut järjestelmät Rinnakkaislaskenta Toisistaan riippumattomat prosessit Sovellus, jossa useita säikeitä / prosesseja Alusta yhteiskäyttöinen muisti, yksi tai useampi CPU vuorottelu Ikkunointiympäristöt Osituskäyttöön perustuvat järjestelmät (esim. palvelimet) Tosiaikaiset ohjausjärjestelmät Helppo suunnitella, tehokasta laskentaa kukin prosessi tekee yhtä asiaa 1-31 1-32 Hajautetut järjestelmät Itsenäisten koneiden verkot, sanomanvälitys CPU:t joilla omaa muistia + yhdistävä verkko off-load processing Tiedostopalvelin Tietokanta/transaktiojärjestelmät, esim. lipunvaraus, pankit Web palvelimet Internetissä ( DNS) Globaalit yritysjärjestelmät: Integroidut business-alueet Vikasietoiset järjestelmät, toisinnus acon Fig 1.1: A distributed control system acon Fig 1.2: Multimedia workstations acon Fig 1.3: Airline booking system acon Fig 1.5: A simple distributed operating system 1-33 Rinnakkaislaskenta Nopeammin, enemmän aikayksikössä Tieteellinen laskenta, mallintaminen (esim. sääennuste) Grafiikka ja kuvankäsittely Laajat kombinatoriset ja optimointiongelmat (esim. talous) Rinnakkainen data: SIMD sama temppu, mutta vain osalle dataa acon Fig 1.6: Replicated code, partitioned data Rinnakkainen laskenta: MIMD eri temput eri prosesseille (eri data) acon Fig 1.7: A four step pipeline 1-34 Missä luokittelun erot? Kommunikointinopeus yhteinen muisti vs. sanomanvälitys Yhteistoiminnan luonne asiakas - palvelija Toiminnan autonomisuus (ml. virheet.) samassa koneessa vs. erilliset koneet verkko Ohjelmointiparadigmat Iteratiivinen rinnakkaisuus Rekursiivinen rinnakkaisuus Tuottaja - Kuluttaja Asiakas - Palvelija Vuorovaikutteiset kumppanit/ryhmät 1-35 1-36 6

Iteratiivinen rinnakkaisuus Matriisin kertominen Monta identtistä iteratiivista prosessia sama koodi, toistosilmukka Kukin laskee toistossa tuloksen osasta dataa, sitten tulokset yhdistetään yhteinen muisti tai sanomanvälitys esim. puurakenteiset algoritmit Monta tapaa järjestää rinnakkaisiksi, jos read set ja write set erillisiä Matriisin kertolasku (s. 13-16) acon Fig 1.6: Replicated code, partitioned data. 1-37 a[n,n] b[n,n] c[n,n] 1 2 3 n 1 2 3. X = n a[1,*]. b[*,1] = = a[1,1] * b[1,1] + a[1,2] * b[2,1] + a[1,n] * b[n,1] = C[1,1] 1-38 jokainen rivi jokainen sarake Muita helposti rinnakkaistettavia œ järjestäminen œ etsiminen œ spekulatiivinen laskenta œ päätöspuut œ pelit 1-9000 1-3000 3000-6000 6000-9000 1-1000 1000-2000 2000-3000 Puurakenteiset algoritmit 1-39 1-40 Rekursiivinen rinnakkaisuus Integraalin approksimointi Rekursiivinen aliohjelma kutsuu itseään tilanvaraus pinosta Hajoita ja Hallitse C f(x) Voidaan tehdä rinnakkain, jos kullakin kutsulla erilliset write -joukot eivät käytä globaaleja muuttujia kullekin erilliset viite- ja tulosparametrit Quicksort Integraalin approksimointi (s. 18-19) A a m = (a+b)/2 b a:n ja b:n puoliväli Onko jo riittävä hyvä approksimaatio: A + - C < epsilon Jos ei ole, niin jatketaan 1-41 1-42 7

Tuottaja - Kuluttaja Tietoa virtaa vain yhteen suuntaan Tuottaja laskee ja laittaa tiedon kuluttajan saataville Kuluttaja käyttää tuotetun tiedon klassinen rajoitetun puskurin hallintaongelma Esim: Unixin putket (liukuhihna) sed -f Script $* tbl eqn groff Macros - co larea = quad(left, mid,fleft,fmid,larea) // rarea = quad(mid,right,fmid,fright,rarea) oc Puskurointi? Andrews Fig 1.5 1-43 1-44 puskuri Yleistys liukuhihna 1 2 3 4 tuott aja kulut taja Suodatus (filter) process Producer { while (true) { produce X; store X into [*]; Ongelmia? Huomioitavaa? process Consumer { while (true) { load Y from [*]; consume Y; 94 6 17 8 2 21 1-45 1-46 Asiakas Palvelija Tietoa virtaa molempiin suuntiin pyyntö-vastaus protokolla Asiakas ja palvelija voivat olla eri koneissa kutakin pyyntöä palvelemaan oma säie tdstopalvelin (read, write) klassinen lukijat / kirjoittajat ongelma Reply Client 1 Request Request Client n Reply Server Andrews Fig 1.6 client 1 request reply process Client [i] { send y to F; receive x from F; serve r F request reply client 2 process Server F { while (true) { receive msg from *; x=f(msg); send x to msg.sender; 1-47 1-48 8

Yleistys Interaktiiviset kumppanit / ryhmät 1 request A reply 2 3 Toimivat palvelijoina sekä asiakkaina Koordinoija tai rengas tai liukuhihna, tai kaikki kommunikoivat kaikkien kanssa Sanomanvälitys send msg to Worker[0] 4 receive msg from Coordinator A asiakas: 1 palvelija: 2 asiakas: 2 palvelija: 3 Käsite (asiakas-palvelija) liittyy kommunikointiin, ei solmuun Worker 0 Worker n-1 results data data Coordinator Worker 0 Worker n-1 Andrews Fig 1.7 1-49 1-50 Prosessi A vaihe 1 send xa to receive xb from vertaa vaihe 2 Prosessi vaihe 1 send xb to A receive xa from A vertaa vaihe 2 Esim: hajautettu matriisin kertolasku (s. 23-26) Asynkroninen vs. synkroninen kommunikointi Yksisuuntainen operaatio Koordinoija jakaa työt, kokoaa tulokset 1-51 1-52 Yleistys: 2-suuntainen liukuhihna Solmu i-1 Solmu i Solmu i+1 while { send while { receive send while { receive receive receive send send Rengas liukuhihnasta synkronointipisteet: receive: odota synkronointitietoa send: lähetä synkronointitieto 1-53 1-54 9

Yleistys: Heartbeat while (true) { compute send for all receive Internetin reititystaulut algoritmi vs. käyttäytyminen Heartbeat process Worker [i=1 to numworkers] { declaration of local variables; initialisation of local variables; while (not done) { send values to neighbors; receive values from neighbors; update local values; to/from neighbors toistosilmukka 1-55 1-56 Heartbeat, ongelmat Lukkiutumisvaara synkroninen vs. asynkroninen kommunikointi Käyttäytyminen Turhaa työtä? Lyhyin reitti tiedon välitys - mitä jos reitti katoaa? kuormantasaus - välitetään tietoa vapaasta kapasiteetista - mitä jos verkko ruuhkautunut? Rinnakkaisuuden ongelmakenttä 1-57 1-58 Ratkottavien ongelmien aiheita antavat Rinnakkainen data poissulkeminen yhteinen puskuri datan ajantasaisuus read - update - write Rinnakkainen suoritus synkronointi tuota - kuluta Resurssien jakelu lukkiutuminen Joku huutaa lisää Täysin Poissulkeminen erilliset Kilpailu Lukkiutuminen prosessit Nälkiintyminen Prosessit Poissulkeminen epäsuorasti Yhteistyö Lukkiutuminen tietoisia toisista Yhteinen muisti Nälkiintyminen Prosessit Datan ajantasaisuus suorasti Yhteistyö Lukkiutuminen tietoisia toisista Sanomanvälitys Nälkiintyminen Vuorojen jakelu Onneton prioriteetti nälkiintyminen Suoritusjärjestys / ajoitus Prosessin lopputulos 1-59 ks. Stallings Tab 5.1 1-60 10

Ohjelmointimerkinnät Yleiset kurssin algoritmien ohjelmointimerkinnät Alkujuuret: Pascal, C, C++, Java Yksikäsitteisesti, ymmärrettävästi Syntaksimerkinnät Esittelyt int i, j = 3; double sum = 0; real x; int a[n] # int a[0:n-1] int b[1:n] # array of n integers double c[n,n] = ([n] ([n] 1.0)) 1-61 1-62 Peräkkäisesti suoritettavat lauserakenteet if (ehtolauseke) else while (ehtolauseke) { for [määrä1,, määrän] { toistojen lukumäärät: i=0 to N i=1 to N by 2 i=0 to n-1 st i!=x i=0 to N, j=0 to M Rinnakkaisesti suoritettavat lauserakenteet co lause1; # N rinnakkaista suoritusta // # voivat edetä eri CPU:illa // lausen; # vapaassa järjestyksessä oc # jatka tästä vasta kun kaikki haarat suoritettu Prosessit process foo { # yksi prosessi process bar[i=1 to N]{ # N prosessia Käytämme kurssilla ensisijaisesti prosessimerkintää! 1-63 1-64 Funktiot ja Proseduurit Spesifiointimerkinnät int addone(int v) { # palauttaa kokonaisluvun return(v+1); Atominen transaktio state_1 # laskennan tila ennen atomisia operaatioita main() { # proseduuri, ei palauta arvoa int n, sum; read(n); for [i = 1 to n] sum = sum + addone(i); write ( the final value is, sum); < S1; Sn; > # lista atomisia operaatioita state_2 # laskennan tila atomisen osan jälkeen Muut prosessit näkevät joko tilan state_1 tai state_2, mutta eivät koskaan atomisen alueen välituloksia x=0; y=10; < x=x+1; y=y+1; > Muut samoja muuttujia käyttävät prosessit näkevät x==0 JA y==10 tai x==1 JA y==11 1-65 1-66 11

< await > < await (ehtolauseke) > Kertauskysymyksiä? Synkronointipisteen merkintä odota tässä kunnes ehtolausekkeen arvoksi tulee true Kun suoritus jatkuu kohdastalauseet, ehto takuuvarmasti voimassa Lauseosan suoritus atominen Välivaiheet eivät näy muille prosesseille < await (s>0) s=s-1; > Toteutus? semaforit, monitorit, sanomanvälitys, Eräissä tapauksissa ohjelmoija joutuu vielä tarkistamaan ehdon voimassaolon, ennenkuin voi antaa suorituksen jatkua! ( useita odottajia, jotka pääsevät yhtäaikaa jatkamaan) 1-67 1-68 12