Rinnakkaisohjelmistot erilliskuulustelu 3.6.2003 1. Olet tekemässä oppimateriaalia ja tarkoituksena on havainnollistaa rinnakkaislaskentaa. a) Anna opintorekisterin käyttöön liittyviä esimerkkejä siitä, - mitä voidaan rinnakkaistaa (ja miten ko. rinnakkaisuus saadaan aikaan) - mitä ei voida rinnakkaistaa - mitä hyötyä rinnakkaistamisesta on (mainitsemissasi esimerkeissä) - mitä haittaa rinnakkaistamisesta on (mainitsemissasi esimerkeissä). b) Seuraava prosessi käyttää vartioitua kommunikointilausetta: process C { char c1, c2; West?c1; do West?c2 -> East!c1; c1 = c2; [] East!c1 -> West?c1; od } Kuvaa prosessin toimintaperiaate (oleellista: kommunikointi!) 2. Esitä nukkuvan parturin ongelman ratkaisu käyttäen semaforeja. Partu- reita on täsmälleen yksi, mutta odotushuone on iso (aina mahtuu vielä yksi odottaja). Parturoinnin aikana asiakas nukkuu, mutta parturin täytyy tietää, ketä parturoi (asiakasprosessit ovat client[i = 1 to N] ja "tukanleikkuu" koskee ko prosessin tietorakenteisiin). Ratkaisun tulee olla mahdollisimman yksinkertainen. 3. Museossa järjestetään vain opastettuja kiertokäyntejä. Vierailijat saapuvat odotushuoneeseen, josta opas heidät sitten noutaa. Vieraan algoritmi on rakenteeltaan seuraavan näköinen: {tee jotain muualla}; {mene odotushuoneeseen}; {kulje museossa} ja oppaan: {laske ryhmä museoon}; {kulje museossa} . Pari hallinnollista huomautusta: - ryhmän siirtyessä museon puolelle odotushuoneen ulko-ovi on kiinni - jos ryhmän koko on alle 10, niin opas jää odottamaan lisää asiakkaita. Mallita opas ja vierailijat prosesseina. Synkronointi toteutetaan monitorilla, jossa on rutiinit "mene odotushuoneeseen" ja "laske ryhmä museoon". Kirjoita monitorin koodi. Signal-operaatio on tyyppiä signal_and_continue. Miten ohjelmasi toimisi, jos signal-operaation tyyppi olisikin signal_and_wait? 4. Verkon kuormitustilanteen kartoittamiseen voidaan käyttää esimerkiksi ns. "probe-echo" -algoritmia. Algoritmin idea on yksinkertainen: verkko käsitellään binääripuuna, jonka juurisolmu kysyy kummankin alipuunsa kuormitustiedot ko. alipuun juurelta, nämä toimivat vastaavasti ja tie- dot saatuaan palauttavat ne kysyjälle (lisäten mukaan omat tietonsa). Kommunikointiin käytetään sanomanvälitystä globaalien kanavien kautta. Kirjoita kunkin solmun koodin oleelliset osat. Koodista tulee näkyä prosessirakenne ja kanavien käyttö. Suorituskykysyistä ratkaisussa on hyödynnettävä rinnakkaisuutta niin paljon kuin mahdollista. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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ä.