1. Johdanto Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 1
1.1. Lähtökohta Keskeisiä käsitteitä: siirtymäsysteemit spesiointikielet Estelle (vanhempi spesiointikieli, paljon Pascalin piirteitä) Prosessialgebroihin perustuvia: Lotos CCS (A Calculus of Communicating Systems, Milner) CSP (Communicating Sequential Processes, Hoare) Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 2
1.2. Yhteistilaverkko Hajautetun algoritmin yksittäinen prosessi usein yksnkertainen Usean prosessin muodostamaa systeemiä voi olla hankala analysoida Hajautetussa järjestelmässä uudenlaisia virhetilanteita: lukkiumia eläviä lukkiumia Reiluus Lomitusemantiikkaa Yhteistilaverkon tilaräjähdys Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 3
1.3. Ekvivalenssipohjainen veriointi Miten yhteistilaverkosta voi löytää virheitä: Lukkiumat paljastuvat jo yhteistilaverkkoa muodostettaessa Elävät lukkiumat vastaavat yhteistilaverkon komponentteja, joista ei päästä enää takaisin pääsykliin, esimerkiksi alkutilaan. Tällaiset lukkiumat löydetään vaikkapa syvyyssuuntaisen etsinnän avulla. On kuitenkin virhetilanteita, joita on vaikea nähdä pelkästään yhteistilaverkkoa analysoimalla. Esimerkiksi voi olla haitallista, jos tietyt tapahtumat sattuvat väärässä järjestyksessä. Väärän järjestyksen havaitseminen edellyttää, että yhteistilaverkon suoritusjälkiä verrataan sallittuihin suoritusjälkiin. Sallitut suoritusjäljet täytyy esittää jollakin tavalla. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 4
Ekvivalenssipohjaiseen verioinnin lähtökohta: Systeemin toimintaa voidaan usein kuvata ulkopuolisen havaitsijan kannalta Havaitsija näkee vain sen, mitä tapahtuu systeemin, tai oikeammin tässä yhteydessä protokollan, rajapinnalla sen kommunikoidessa protokollaa käyttävien prosessien kanssa Rajapinnan toimintaa voidaan myös kuvata siirtymäsysteemillä Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 5
Eksivalenssipohjaisessa verioinnissa pyritään osoittamaan, että protokolla täyttää palvelun. Miten? Protokollan toiminta mallinnetaan ensin jollain spesiointikielellä. (Jokainen protokollan prosessi, esimerkiksi lähettäjä, vastaanottaja ja ajastin, kuvataan spesiointikielellä) Muodostetaan systeemiä vastaava yhteistilaverkko (iso siirtymäsysteemi, muodostetaan ohjelmistolla) Yhteistilaverkon kaarissa näkyvät tapahtumat, jotka protokolla suorittaa. (tapahtumista piilotetaan kaikki muut kuin rajapinnan tapahtumat) Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 6
1.4. Mallintarkistus Vaihtoehto ekvivalenssipohjaiselle verioinnille Miten? Aikalogiikan kaavoilla ilmaistaan systeemiltä vaadittavat ominaisuudet Rakennetaan systeemistä malli (siirtymäsysteemi tai verkko) Tutkitaan, pätevätkö logiikan kaavat tuossa mallissa Kaksi tunnetuinta ja useimmiten käytettyä logiikkaa ovat: Lineaarisen ajan logiikka (LTL, Linear Time Logic) Haarautuvan ajan logiikka (CTL, Computation Tree Logic). Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 7
1.5. Käytännön kokemuksia Sovellukset ovat pääsiassa syntyneet yliopistojen tutkimusprojekteissa. Teollisuus on jossain määrin kiinnostunut formaaleista menetelmistä (Intel, piirisuunnittelu) Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 8
2. Tilasiirtymäsysteemit Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 9
2.1. Vuorottelevan bitin protokolla Vuorottelevan bitin protokolla (alternating bit protocol, AB-protokolla): Lähettäjäprosessi S ja vastaanottajaprosessi R vaihtavat sanomia virhealttiin vuorosuuntaisen kanavan välityksellä. Vuorosuuntainen kanava sallii sanomien lähettämisen yhteen suuntaan kerrallaan, mutta ei molempiin suuntiin yhtäaikaa. Kanava voi vääristää tai hukata minkä tahansa sen kautta lähetetyn sanoman. Sanomien järjestys säilyy kanavassa. Kanava ei monista sanomia. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 10
Sanoman vastaanottaja pystyy erottelemaan vääristyneet sanomat virheettömistä esimerkiksi CRC-kentän avulla niin suurella todennäköisyydellä, että seuraavissa tarkasteluissa voidaan olettaa kaikkien vääristyneiden sanomien paljastuvan. Vastaanottajaprosessi R kuittaa virheettömänä perille saapuneen datasanoman d S:lle kuittauksella a. (Negatiiviset kuittaukset eivät ole käytössä; vääristynyt sanoma ei aiheuta kuittaustoimenpidettä.) Siten protokollan perustoimintaa voidaan kuvata kaaviolla S a a d d.. R Lähettäjän täytyy siis odottaa kuittausta, ennen kuin se lähettää uuden sanoman. Ongelma: Mitä tapahtuu jos kuittaus häviää? Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 11
Lähettäjä ei lähetä enää mitään, vaikka uusia datasanomia olisikin odottamassa lähettämistä Ratkaisu: Ajastin, joka laukeaa, jos kuittausta ei kuulu tietyn ajan kuluessa Eräs protokollaan liittyvä skenaario voisi olla nyt seuraava: a d S timeout a d a d R Tulee kuittaussanomien käytöstä uusia ongelmia? Entä jos kuittaus häviää? Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 12
Monistumisriski: S saattaa lähettää datasanoman d uudestaan arvellen sen tulleen hylätyksi linjavirheen vuoksi, vaikka d onkin tullut virheettömänä perille. Ratkaisu: Numeroidaan sanomat (numerot 0 ja 1 riittää) Siten edellinen skenaario tuleekin kirjoittaa muodossa: d0 a0 S timeout d1 a1 d1 a1 R Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 13
Mallinnetaan seuraavaksi lähettäjä ja vastaanottaja siirtymäsysteemeinä. Mallinnuksessa täytyy ratkaista aluksi muutamia yksityiskohtia: Merkitäänkö kunkin tapahtuman yhteyteen, onko se lähetys- vai vastaanottotapahtuma? Siirtymäsysteemissä ei merkitä tapahtumiin, ovatko ne lähetyksiä vai vastaanottoja. (Vasta spesiointikielessä) Miten ajastin mallinnetaan? Tällä kertaa yhdellä siirtymällä lähettäjäprosessissa. Miten mallinnetaan sanoman katoaminen tai vääristyminen? Sisäisellä tapahtumalla τ Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 14
Lisäksi käytämme epädeterminismiä. Näillä sopimuksilla lähettäjä S ja vastaanottaja R ovat tilasiirtymäkaavioina: d1 R1 a1 τ R4 d1 S1 a1 S4 d0 d1 t d0 τ t d1 τ R2 a0 τ R3 S2 a0 S3 d0 d0 Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 15
2.2. Asiakas/palvelin-systeemi Järjestelmä koostuu: Palvelinprosessista S Asiakasprosesseista C i, i = 1,, n Asiakas C i pyytää palvelua S:ltä sanomalla csi. S lähettää vastauksen sbi puskuriin B i. Asiakas C i voi noutaa vastauksen sanoman bci avulla. Protokolla noudattaa round robin-periaatetta. Tämä tarkoittaa, että vuoromerkki kiertää asiakkaalta toiselle. Aina kun asiakas saa vuoromerkin, se pyytää palvelua. Tämän Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 16
jälkeen se luovuttaa vuoromerkin seuraavalle. Vuoromerkki toteutetaan sanomien avulla. Kun asiakas C i vastaanottaa sanoman ti, se voi pyytää palvelua. Tämän jälkeen se lähettää sanoman t(i + 1) asiakkaalle C i+1. Yhteenlasku tässä tapauksessa tulkitaan niin, että n + 1 = 1. Asiakas C i siirtymäsysteeminä: t(i+1) C4 bci C1 ti C2 csi C3 bci C5 t(i+1) Alkutila on C1 paitsi C 1 :ssä, jossa se on C2. Tällöin round robin alkaa C 1 :stä. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 17
Palveluprosessi S ja puskuriprosessi B i : S1 cs1 sb1 sbn cs2 Sn S0 S2.. csn sb3. S3 cs3 sb2 B1 sbi bci B2 Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 18
2.3. Tilasiirtymäsysteemin määritelmä Lähtökohtana on malli, jossa hajautettu järjestelmä koostuu kahdesta tai useammasta prosessista. Prosessilla tarkoitetaan tässä yhteydessä suurin piirtein samaa kuin käyttöjärjestelmien yhteydessä: Prosessi on ohjelma, jonka suoritus on alkanut, mutta ei vielä pysähtynyt. Samasta koodista voidaan synnyttää useita prosesseja. Prosessi etenee diskreetein askelin tilasta toiseen; tila määräytyy muuttujien arvoista ja seuraavaksi suoritettavasta käskystä (tai käskyistä sallimme kuvauksissa epädeterminismin). Prosessin eteneminen tapahtuu suorittamalla jokin tapahtuma, joka voi olla esimerkiksi sisäinen laskenta (muuttujien päivitys yms.), Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 19
sanoman lähetys tai vastaanotto, jokin muu tapahtuma, jossa on mukana toisia prosesseja. Esimerkki viimeksi mainitusta on mm. synkronointi. Synkronointia voi tietenkin tapahtua myös lähetyksen ja vastaanoton yhteydessä. Yleensä hajautettujen järjestelmien kuvaus siirtymäsysteemeillä tapahtuu korkealla abstraktiotasolla. Se tarkoittaa käytännössä, että huomiota kiinnitetään ennen kaikkea prosessien keskinäiseen kommunikointiin. Prosessien sisäistä toimintaa pyritään pelkistämään usein mahdollisimman paljon. Spesiointikielet tosin tarjoavat välineitä monipuoliseen sisäisen laskennan kuvaamiseenkin, kun taas tavallisen siirtymäsysteemin yhteydessä sisäinen laskenta täytyy häivyttää melko täydellisesti. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 20
Määritelmä 1. Siirtymäsysteemi on rakenne (S, A,, s 0 ), missä S on tilojen joukko; A on tapahtumien joukko, joka myös sisältää näkymättömän tai sisäisen tapahtuman τ ; S A S on siirtymärelaatio; s 0 on alkutila. Usein S ja A ovat äärellisiä, mutta periaatteessa ne voivat olla myös numeroituvasti äärettömiä. A:n alkiot edustavat tapahtumia, joiden yhteydessä prosessit eli tässä tilasiirtymäsysteemit vaihtavat tietoa. Huomattakoon, että tässä formalismissa ei yksittäisen prosessin yhteydessä erotella, onko kysymyksessä lähetys vai vastaanotto. Siirtymäsysteemi voitaisiin määritellä niin, että tämä otettaisiin huomioon, mutta tavoitteenamme on Lotosta vastaavat siirtymäsysteemit, joissa riittää yllä esitetty rakenne. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 21
Siirtymäsysteemistä voidaan lukea, miten prosessi etenee suorituksen aikana. Toiminta lähtee liikkeelle alkutilasta s 0. Siirtymärelaatio määrittelee, mitkä vaihtoehdot tilassa tulevat seuraavaksi suoritusvuoroon. Tilasiirtymäsysteemien käyttö hajautetujen järjestelmien kuvaamisessa käy parhaiten selville esimerkeistä, joista pari on jo esitelty. Ensimmäisen luvun lopuksi esitellään vielä merkintöjä, joita tarvitaan jatkossa. 1. Jos siirtymäsysteemissä (s 1, a, s 2 ), niin tavallisesti kirjoitetaan s 1 a s 2. 2. Jos tilasta s 1 alkaa τ -polku s 1 τ τ τ s 2 s n, ε ε niin merkitään s 1 = s n. Merkintä = käsittää myös tapauksen, että tilasta ei siirrytä mihinkään. Siis aina pätee s 1 ε = s 1. 3. Merkintä s 1 τ = s n tarkoittaa, että s 1 = s k s r = s n. ε τ ε Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 22
4. Tapahtumajono u = a 1 a 2 a n johtaa tilasta r tilaan s, jos on olemassa polku Tällöin merkitään r u = s. r= r ε a 1 ε a 1 s 1 = r 2 ε ε a 2 s 2 = = r n ε n s n = s. Spesioinnin ja verioinnin perusteet. Päivi Kuuppelomäki 2008 23