Rinnakkaisohjelmistot kuulustelu 7.10.2003 1. a) Mitä tarkoittaa, että tietty toimenpidesarja on suoritettava "atomisena"? Käytä esimerkkinä toimenpidesarjaa < x = x+1; y = y+1; > b) Mitä tarkoittaa spesifiointikielen ilmaisu < await(B); S > ? Anna tuottaja-kuluttaja -ongelmaan liittyvä esimerkki tämän rakenteen käytöstä. c) Selitä seuraavan vartioidun kommunikointilauseen (guarded communication statement) toimintaperiaate: { ... if B1; C1 -> S1; [] B2; C2 -> S2; fi ... } (pisteytys: a: 3, b: 5; c: 7) 2. Karhulla ja M:llä mehiläisellä on yhteinen hunajapurkki. Purkkiin mahtuu H hunaja-annosta, alkujaan se on kuitenkin tyhjä. Karhu nukkuu kunnes purkki on täyttynyt, sitten se syö kaiken hunajan ja jatkaa tämän jälkeen uniaan. Kukin mehiläinen kerää jatkuvasti hunajaa purkkiin. Mehiläinen, joka saa purkin täyteen, herättää karhun. Kuvaa karhu ja mehiläiset prosesseina ja kirjoita koodi, joka simuloi niiden toimintaa. Käytä semaforeja synkronointiin. 3. Yrityksessä pyritään tasapainottamaan tulostimien kuormitusta. Asiakkaat lähettävät tulosteensa tulostinpalvelulle, joka huolehtii kaikkien tulostimien tulostusjonoista. Tulostinpalvelu valitsee saapuvalle työlle lyhimmän jonon ja ilmoittaa sitten asiakkaalle, mille tulosti- melle tulostus ohjautuu. Kirjoita asiakkaan ja tulostinpalvelun koodien oleelliset osat. Kommunikointiin käytetään sanomanvälitystä globaalien kanavien kautta. (Kutakin tulostinta ohjaa sitten oma prosessinsa, joka noutaa tulosteet ko. jonosta; näiden tulostinprosessien koodi ei kuulu tähän tehtävään eikä siitä siis tarvitse huolehtia.) 4. Verkon koneet ylläpitävät tietoa verkon kuormituksesta: aina kun jonkin solmun kuormitus oleellisesti muuttuu, se ilmoittaa siitä naapureilleen. Kun solmu saa naapuriltaan tiedon kuormitustietojen muutoksesta, se päivittää omat tietonsa ja lähettää tiedon edelleen muille naapureille. Verkko on tätä sovellusta varten konfiguroitu ketjuksi ( x-x-...-x ) . Kirjoita yhden (ketjun keskellä olevan) solmun koodin oleelliset osat. Kommunikointi perustuu etäproseduurien käyttöön. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ HUOMAA, että kussakin tehtävässä on käytettävä vaadittua rakennetta (sema- fori, monitori, sanomanvälitys, etäproseduuri); tämä on edellytys sille, että tehtävä arvostellaan. Yksityiskohtaisuuden taso: kaikki, mikä liittyy rinnakkaisuuden hallintaan ja kommunikointiin, on tärkeää, muilta osin toimintojen kuvauksissa voidaan käyttää suunnilleen yleiskielen ilmaisuja. Algoritmien kielen tulee olla suhteellisen lähellä Andrewsin käyttämää algoritmien kuvauskieltä.