Rinnakkaisohjelmistot erilliskuulustelu 22.1.2002 1. a) Mitä hyötyä sovelluksen rinnakkaistamisesta voi olla? Anna esimerkkejä. b) Mitä haittaa haittoja sovelluksen rinnakkaistamisesta voi olla? Anna esimerkkejä. c) Kuvaa yksityiskohtaisesti monitorin signal-operaation toiminta tapauksissa 1) "Signal and Wait" 2) "Signal and Continue". 2. "Huvipuiston karuselli". Huvipuistossa on n asiakasprosessia ja yksi karuselliprosessi. Asiakkaat ajelevat kerta toisensa jälkeen karusellissa, johon mahtuu C asiakasta (C < n). Karuselli käynnistyy kuitenkin vasta, kun se on täynnä. Kunkin ajokerran jälkeen kaikki asiakkaat poistuvat karusellista muihin puuhiin (palatakseen karuselliin myöhemmin). Kirjoita asiakkaiden ja karusellin koodien keskeiset osat. Toiminnan ohjaus perustetaan semaforien käyttöön. (Huom: karusellissa istuminen on asiakkaan koodissa pelkkää odotusta.) 3. Oletetaan, että laskentakeskuksessa on kaksi kirjoitinta, A ja B, jotka ovat melkein samanlaisia, mutta muutamia erilaisia toimintoja niissä kuitenkin on. Kirjoittimien käyttäjinä on kolmenlaisia prosesseja: eräille kelpaa vain A, eräille vain B ja lopuille käy kumpi tahansa. Kirjoittimien jakelusta huolehtii manageriprosessi LPmngr, joka kommunikoi asiakkaiden kanssa käyttäen sanomanvälitystä. Kirjoita asiakasprosessien ja LPmngr-prosessin koodien ne osat, jotka liittyvät kirjoittimien varaukseeen ja vapautukseen. (Huom: voit olettaa, että asiakkaina on kiinteä prosessijoukko P[1:n].) 4. Mitkä ovat lukkiutumiselle (deadlock) välttämättömät ehdot? Selvitä kunkin ehdon osalta, mitä mahdollisuuksia on estää ehdon toteutuminen ja näin välttyä lukkiutumisilta. Käytä esimerkkinä suunnitteilla olevaa sovellusta, jossa käyttäjä saa varata paikkalippuja teatteriesitykseen ja halutessaan myös hotellihuoneen paikalliseen hotelliin. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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. Algoritmien kielen tulee olla suhteellisen lähellä Andrewsin käyttämää ohjelmointikieltä (ja ainakin sen tulee olla riittävän täsmällistä - jos käytät kovin omaperäistä kieltä, niin selitä, mitä tarkoitat). Yksityiskohtaisuuden taso: kaikki, mikä liittyy rinnakkaisuuden hallintaan ja kommunikointiin, on tärkeää, muilta osin toimintojen kuvauksissa voidaan käyttää suunnilleen yleiskielen ilmaisuja (esimerkiksi "sijoita X R-jonoon").