150 likes | 264 Views
Reaaliaikajärjestelmien suunnittelu. Juhani Heikkinen Kymenlaakson ammattikorkeakoulu. Miten reaaliaikajärjestelmät eroavat erätyyppisestä järjestelmästä. Erätyyppisessä, perinteisessä ohjelmassa syötteiden voi ajatella olevan täysin tiedossa
E N D
Reaaliaikajärjestelmiensuunnittelu Juhani Heikkinen Kymenlaakson ammattikorkeakoulu
Miten reaaliaikajärjestelmät eroavat erätyyppisestä järjestelmästä • Erätyyppisessä, perinteisessä ohjelmassa syötteiden voi ajatella olevan täysin tiedossa • Reaaliaikajärjestelmässä toimintalogiikkaa ohjaavat useista eri lähteistä tulevat tieto/tapahtumavirrat
Reaaliaikajärjestelmässä vaaditaan • ajastusta • rinnakkaisuuden hallintaa
Reaaliaikaisen ohjelmistojen tyyppejä • Jako kahteen: • Pehmeät: ei tiukkoja vastevaatimuksia (esim. pankkiautomaatti) • Kovat: vasteajan täsmällisyys tärkeää (esim. auton sytytysjärjestelmä)
Toteutustapoja • Pienet mikrokontrollerit ilman käyttöjärjestelmän apua • esim. ikuinen silmukka => tutkitaan syötevirtoja ja säädetään ulostulo • usein käytetään ajastinpiirejä • keskeytyskäsittelijä hoitaa priorisoinnin
…toteutustapoja • Järjestelmän monimutkaistuessa kannattaa harkita reaaliaikakäyttöjärjestelmän käyttöä • esim RMX, OS/9, VRTX, QP, QNX • Reaaliaikakäyttöjärjestelmä tarjoaa palveluja: • prosessien hallintaan (luominen, lopettaminen, prioriteetit) • synkronointiin ja poissulkemiseen • oheispiirien ohjaukseen
…toteutustapoja • Reaaliaikakäyttöjärjestelmä tarjoaa sovelluksen toteuttamisen keskenään kommunikoivina prosesseina • prosessit poikkeavat ’normaaleista’ käyttöjärjestelmä prosesseista siinä, että muistin suojausta ei ole (tehokkuus, alkeelliset prosessorit)
…toteutustapoja • Käytetään yleiskäyttöisiä käyttöjärjestelmiä (Unix, NT, OS/2) • Nykyaikaiset kj:t mahdollistavat toteutuksen yhden prosessin sisällä toimivana säikeinä • Käyttöjärjestelmät helpottavat ylläpitoa, mutta toteutus saattaa olla hidas tai kallis; harkittavissa myös kj-ytimen koodaaminen itse
…toteutustapoja • Vaikka toteutuksessa ei käytetä reaaliaikakäyttöjärjestelmää, ohjelmisto kannattaa suunnitella siten, että ra-kj:n käyttöön voidaan siirtyä vähällä vaivalla • esim. prosessien kotelointi moduulien sisään
RA-ohjelmoinnin erityisongelmia • Poissulkeminen • usean prosessin samanaikainen tietorakenteen suojaus • Synkronointi • prosessi joutuu odottamaan toista tapahtumaa • Ajastus • Lukkiutumiset • prosessi odottaa tapahtumaa, jota ei tapahdu koskaan
Prosessirakenteen määrääminen • Pieni prosessien määrä: • nopeus: prosessien välinen kommunikointi hidasta, prosessien luonti ym. ylläpito hidasta • järjestelmän testaus helpompaa • Prosesseja lisätään seuraavilla kriteereillä: • yksinkertaistus • jokaista asynkronista i/o -vuo ohjaamaan oma prosessi
.. prosessirakenne • Prioriteetit: kiireellisille omat prosessit • ajastetut prosessit esim varmistus • moniprosessoriympäristö • hajautetut järjestelmät • muistinhallinta (muistin koko rajoittaa)
Reaaliaikajärjestelmien kansanviisauksia • Turvallisuuskriittisen järjestelmän toiminta ei saa koskaan perustua pelkästään ohjelmiston virheettömään toimintaan => +turvamekanismit • Prototyyppitestaus • Puolustautuva ohjelmointi (defensive programming) • kohdissa, joihin ei saisi koskaan tulla, on ylimääräinen tarkistus • aliohjelma suorittaa ylimääräisiä tarkistuksia parametreille • Seuraa prosessorin käyttöastetta: • Yli 50% tietää ongelmia • Kerää tilastoa prosessien käyttäytymisestä • Varaudu sanomien välityksessä kaikkeen: • mitään ei tapahdu, sanomat tulevat väärässä järjestyksessä, tuplat jne