Rinnakkaisohjelmistot erilliskuulustelu 26.3.2002 1. a) Mitä tarkoittaa "thread of control" (suoritussäie)? Miten näytön ikkunat ja käsite "thread of control" suhtautuvat toisiinsa? b) Anna paikanvarausjärjestelmään liittyvä esimerkki kustakin rinnakkaisten järjestelmien neljästä perusongelmasta (poissulkeminen, synkronointi, lukkiutuminen, nälkiintyminen). c) Oletetaan, että tietorakenteen poissulkemisongelma ratkaistaan käyttäen semaforia. Miten kääntäjä voi tarkistaa, että ko. tietorakennetta ei käsitellä muualla kuin ko. semaforin sulkemilla kriittisillä alueilla? Miten kääntäjä voi tarkistaa, että jokaista tiettyyn semaforiin kohdistuvaa P-käskyä vastaa myös V-käsky (eli että semaforia ei unohdeta suljetuksi)? d) Mitä tarkoittaa "puomisynkronointi" (barrier synchronization)? e) Mitä hyötyä on rinnakkaisista prosesseista / säikeistä, jos koneessa on vain yksi prosessori? 2. Pysäköintihalliin on useita sisäänkäyntejä. Kullakin ovella on anturi, joka havaitsee auton saapumisen ja auton poistumisen, sekä valotaulu, joka ilmoittaa, onko hallissa tilaa. Järjestelmää ohjaa tietokone, jossa on - yksi prosessi kutakin anturia kohti - yksi prosessi valotaulujen ohjausta varten. Prosessin ja anturin välinen kommunikointi perustuu sanomanvälitykseen (sanoma ilmoittaa auton saapumisen/poistumisen). Prosessin ja valotaulun välinen kommunikointi perustuu sanomanvälitykseen. Prosessien keskinäinen kommunikointi perustuu yhteisen muistin käyttöön. Kirjoita prosessien koodien oleelliset osat (siis: järjestelmän ohjauksen kannalta keskeiset tietorakenteet, kommunikointiin tarvittava koodi). (Anturien ja valotaulujen laiteajureista ei tarvitse välittää.) Tuottajan ja kuluttajan välinen kommunikointi toteutetaan käyttäen puskuria, johon mahtuu useita tieto-elementtejä. Puskuri on toteutettu signal-and-continue -periaatetta noudattavana monitori-rakenteena. a) Kirjoita tuottajan, kuluttajan ja puskuri-monitorin koodien oleelliset osat. b) Oletetaan, että tuottaja ja kuluttaja käynnistyvät samaan aikaan ja että kuluttajaprosessilla on korkeampi prioriteetti. Kuvaa prosessien toimintaa alusta siihen saakka, että tuottaja saa kirjoitettua puskuriin toisen tietueen. Kuvauksen tarkkuus: koska aktiivisena, koska odottaa, missä jonossa odottaa, mikä tapahtuma siirtää prosessin tilasta toiseen. 4. Eräs sääennustuslaskenta on toteutettu rinnakkaisena. Ennustettavan alueen ilmatila on jaettu kuutioihin ja kunkin kuution ennustuksesta huolehtii yksi solmukone. Laskenta etenee vaiheittain: - alkuarvoista lähtien kukin solmu laskee kuutiolleen ensimmäisen ennusteen (esimerkiksi säätila tunnin kuluttua) - kun ennuste on valmistunut, niin solmu ilmoittaa ennustetun tilan naapureilleen - saatuaan kaikilta naapureiltaan niiden ennusteet solmu aloittaa seuraavan vaiheen ja laskee seuraavan ennusteeen (esim. säätila kuutiossa seuraavan tunnin kuluttua). Näin jatketaan, kunnes ennusteet on saatu halutulle aikavälille (esim. viikon ennuste). Kirjoita yhden solmun laskenta-algoritmin "normaalivaiheen" toimintaa ohjaavan ohjelman oleelliset osat (sovelluksen käynnistys- ja lopetus- vaiheista ei tarvitse välittää). Ratkaisussa pitää pyrkiä mahdollisimman suureen rinnakkaisuuteen (selvitä siis, millainen prosessi/säie-joukko koodeja suorittaa). Kommunikointi perustuu etäproseduurien käyttöön. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Algoritmien kielen tulee olla suhteellisen lähellä Andrewsin käyttämää pseudo- kieltä (ja ainakin sen tulee olla riittävän täsmällistä - jos käytät kovin omaperäistä kieltä, niin selitä, mitä tarkoitat). HUOMAA myös, että kussakin tehtävässä on käytettävä vaadittua rakennetta (semafori, monitori, sanomanvälitys, etäproseduuri); tämä on edellytys sille, että tehtävä arvostellaan.