7 OHJELMISTON TOTEUTUS
7.1 Ansiot......................................... 5 Q
Ohjelmoitaessa on erääseen päätavotteista päästy kiistattomas
ti. Käyttöjärjestelmä on toteutuksen viimeisiä yksityiskohtia myöten symmetrinen ja riippumaton yksittäisten prosessorien vikaantumisesta, silloin kun vikaantumiseen ei liity koko
järjestelmän tilan muutosta. Tästä ansiosta voidaan johtaa useimmat muista.
Lähtökohtana olleen numeerisen tyostökoneohjauksen tiukat reaaliaikavaatimukset ovat käyttöjärjestelmän avulla täytet
tävissä alustavien laskelmien ja simulointiajojen mukaan.
Etenkin käytettäessä koelaitteiston kahdeksanbittisten pro
sessorien tilalla kuusitoistabittisiä prosessoreita voidaan kuormituksen ja vasteaikojen suhteen päästä erittäin hyviin tuloksiin.
Käyttöjärjestelmä tukee modulaarista sovellutusohjelmien ra
kennetta sekä ihmisläheistä prosessi-käsitettä. Tehtävät muodostavat itsenäisiä moduuleja sekä tehtävälistoja voidaan pitää rajoitetusti rinnakkaisuutta sisältävinä prosesseina.
Saman ajatuksen jatkeena voidaan pitää käyttöjärjestelmän tukemaa mahdollisuutta liittää useita uC*-järjestelmiä rin
nakkain.
Käyttöjärjestelmän toteutuksessa on onnistuttu jättämään aiot
tu mahdollisimman suuri strateginen päätösvalta ajoituskysy- myksissä ja luotettavuuden sekä suorituskyvyn välisen kompro
missin muotoilussa sovellutusohjelmoijalle. Tehtävätyyppien
lisäys ja aikavakioiden muuntelu on samaten tehty helpoksi, joten käyttöjärjestelmän yleisyys ei ole kärsinyt. Sovellu
tuksia voidaan nähdä niin nopean kuin hitaankin prosessin
ohjauksen piirissä.
Käyttöjärjestelmä on ohjelmoitu modulaarisesti toisistaan riippumattomiin osiin ja siihen on helppo toteuttaa muiden operaatioiden kanssa tasavertaisia lisäyksiä.
Suunniteltu hierarkinen vikastrategia on erittäin kattava ja sallii mahdollisuudet sovellutusohjelmasta riippuen ohjelmoi
da kuhunkin tapaukseen sopivat toipumisproseduurit. Tämän ohella on käyttöjärjestelmän kriittiset osat pyritty mini
moimaan. Käyttöjärjestelmämalleista on helppo todeta niiden lukkiutumattomuus. Tämä voitaneen todentaa myöhemmin koneel
lisesti. On syytä olettaa, että mahdolliset lukkiutumiset johtuvat vain ohjelmointivirheistä ja ovat poistettavissa.
Tämä ei tietenkään tarkoita sitä, ettei sovellutusohjelmista voisi tehdä lukkiutuvia.
Käyttöjärjestelmä on havainnollisesti mallitettu oleellisem
milta osiltaan ja toteutus vastaa malleja hyvin pitkälle.
Mallituksen eräänä ansiona voidaan pitää verrattain helppoa tutustuttamista käyttöjärjestelmän toimintoihin, joka pelkän verbaalisen kuvauksen varassa olisi hyvin vaikeata.
7.2 Puutteet
Käyttöjärjestelmästä voidaan osoittaa useita osittain lait
teistosta ja osittain toteutuksesta johtuvia puutteita. Jous
tavuuden vuoksi nämä puutteet on kuitenkin myöhemmin pääosin korjattavissa. Suurimpana tällaisena puutteena voidaan pitää sitä. ettei vikastratégiaa ole täydellisesti toteutettu. Tämä johtuu osittain aiemmin esitetyistä puutteista laitteistossa ja osittain riittämättömästä ajasta valita eri toteutusvaihto
ehtojen välillä.
Toinen selvästi havaittava puute on, ettei käyttöjärjestelmä ratkaisevasti tue tiedonsiirtoa tehtävien välillä. Toistaisek
si kommunikointi tapahtuu yhteismuistissa olevien yhteisten muuttujien avulla. Tämä johtuu muistinhallinnan puuttumisesta koelaitteistosta. Lopullisessa laitteistossa on tämäkin osa erittäin tarpeellinen. Laitteistomodifikaation jälkeen voi
daan käyttöjärjestelmää näiltä osin täydentää
Resurssien jaon yksinkertaisuus on eräs silmiinpistävä piir
re. Monimutkaisempaan resurssistrategiaan kuuluisi kuitenkin olennaisesti muistin dynaaminen allokointi. Tämä on jätetty toteuttamatta samoin perustein kuten edellinenkin kohta.
Ohjelmien rinnakkaisuutta on usein vaikea hahmottaa. Käyttö
ohjeet ovat osin puutteelliset, eivätkä sisällä ohjeita oh
jelmien jakamiseen rinnakkaisiin osiin; runsas simulaattorin käyttö ohjelmien muotoilussa on tarpeen.
Näiden lisäksi seuraavat yksityiskohdat kaipaisivat lisätyötä :
- PL/M—toteutus ei ole paikoitellen riittävän nopea
- Erillistä äänestysproseduuria keskeytysohjelmia varten ei ole toteutettu
- Käyttöjärjestelmä ei tue riittävästi vaihtoehtoisten ohjelmien käyttöä äänestysten yhteydessä
- Symmetrinen keskeytyspalvelu on järjestelmälle raskas
- Virtuaaliajoittimen a joitusaIgoritmi on yksinkertainen ja tehtävälistojen lukumäärä kiinteä
7.3 Jatkokehittelyn suuntaviivat
Tässä diplomityössä suunnitellun ohjelmistoarkkitehtuurin ja sitä vastaavan käyttöjärjestelmän ominaisuuksia on syytä vie
lä tutkia ja kehitellä useista eri lähtökohdista:
-Suorituskykyanalyysin perusteella saatavien tulosten perus
teella tulisi käyttöjärjestelmää kehittää siten, että käyt
töjärjestelmästä aiheutuva suorituskyvyn lasku minimoituu.
Simulointitulokset antavat selkeät lähtökohdat sille, miten tyypilliset ohjelmistot kuormittavat käyttöjärjestelmää.
Runsaasti kuormitettuihin käyttöjärjestelmän osiin olisi syytä kiinnittää huomiota ja niiden koodia voisi optimoida.
Esimerkiksi tehtävää joitin vaikuttaa tällaiselta kuormite
tulta osalta ja on lisäksi ohjelmoitu PLM-ohjelmointikie- lellä. Jos se kirjoitetaan suoraan assemblykoodiksi voidaan saavuttaa merkittävää suorituskyvyn kohoamista.
-Sovellutusohjelmien ja käyttöjärjestelmän välistä rajapintaa tulisi siirtää lisäämällä käyttöjärjestelmään joitakin usein käytettyjä toimintoja. Tällaisista toiminnoista hyviä esimerk kejä ovat puskuroitu synkronointisanomien välitys sekä pusku
roitu äänestys. On selvästi havaittavissa, että puskurointi lisää käyttöjärjestelmän läpäisyä monissa tapauksissa huomat
tavasti. Resurssien hallintaa tulisi myös monipuolistaa si
ten, että nykyisen yhden resurssiryhmän sijasta voitaisiin varata tehtävälle useita resurssiryhmiä. Varausstrategian laa dinnassa tulee tällöin kiinnittää erityistä huomiota siihen, ettei käyttöjärjestelmän kuormitus kasva liiaksi ja ettei strategia salli lukkiutumistilanteita.
-Sovellutusohjelmien optimaalinen laadinta ei ole mahdollista ilman syvällistä käyttöjärjestelmän tuntemista tai läpikotais ten simulointiajojen suorituksia. Olisi kehitettävä ohjeisto sovellutusohjelmien rinnakkaisuuden löytämiseksi ja sen muun
tamiseksi käyttöjärjestelmän kannalta soveliaimpaan muotoon.
-Käyttöjärjestelmän mallitus perustuu Petri-verkkoihin. Digi
taalitekniikan laboratoriossa on meneillään toinen projekti, jossa suunnitellaan Petri-verkkojen tietokoneistettua analy
sointia. Tulisi tutkia mahdollisuuksia liittää näin syntyvään ohjelmistoon muunnosalgoritmit, joiden avulla tässä kirjoituk sesa esitettyjä muunnettuja Petri-verkkoja voi analysoida.
Saatavat tulokset olisivat varmasti erittäin hyödyllisiä käyt töjärjestelmän varmentamisen kannalta.
8 Yhteenveto
Teknillisen korkeakoulun digitaalitekniikan laboratoriossa kuluneen vuoden aikana suoritetussa tavoitetutkimuksessa on tutkittu tiukasti kytketyn moniprosessorijärjestelmän sovel
tuvuutta numeeriseen työstökoneohjaukseen. Koelaitteistona on ollut laboratorion aiempien moniprosessoriprojektien yhtey
dessä konstruoitu hybridivarmennettu uC*-monimikroprosessori.
Kirjoittajan osuutena tutkimuksessa on ollut soveltuvan käyt
töjärjestelmän suunnittelu koelaitteistolle.
Lähtökohtana on ollut tutustuminen merkittäviin rinnakkaisiin tutkimuksiin ja koelaitteiston arkkitehtuurin antamiin edelly
tyksiin käyttöjärjestelmäsuunnittelun pohjana. On ilmeistä, että hybridivarmennettu arkkitehtuuri on sovellutuksen kannal
ta antoisa, joskin koelaitteisto on puutteellinen. Laitteisto ei anna riittävää tukea käyttöjärjestelmätoimintojen kannalta oleelliselle muistinsuojaukselle. Tämä puute heijastuu suunni
tellun käyttöjärjestelmän muistinhallintaoperaatioiden puuttu
misena. Operaatiot on mahdollista lisätä myöhemmin, jos koe
laitteistoa kehitetään.
Ohjelmistoarkkitehtuurin suunnittelussa oli tavoitteena, että laitteiston suomat mahdollisuudet varsinaiseen moniprosessoin- tiin ja toisaalta äänestimen avulla varmennettuun tehtävien suoritukseen olisivat joustavasti käytettävissä. Luontevin ohjelmistoarkkitehtuuri olisi saavutettu simuloimalla tieto- ohjausta tehtävätasolla kuten uC*:lle aiemmin suunnitellussa käyttöjärjestelmässä mutta näin ei olisi voitu saavuttaa kaikkia pääsovellutukselle asetettuja reaaliaikavaatimuksia.
Toteutettu ohjelmistoarkkitehtuuri on muodollisesti edellistä rajallisempi mahdollistaen virtuaaliajoituksen ja rinnakkais
prosessoinnin ilman kohtuutonta käyttöjärjestelmäkuormitusta.
Rajoitukset eivät vaikuta arkkitehtuurin yleisyyteen.
Suurimpana ansiona ohjelmistoarkkitehtuurin ohella voidaan työssä pitää käyttöjärjestelmän suunnittelussa käytettyä me
todiikkaa. Petri-verkkoja käytetään yleisesti rinnakkaisten
järjestelmien mallittamiseen. Puutteina on usein kuitenkin esitetty kyvyttömyys hyödyntää malleissa esiintyviä samankal
taisuuksia. Työssä on formalismia kehitetty edelleen jolloin esitetty puute on pääosin saatu poistettua kadottamatta Pet- ri-verkkojen analyyttisiä ominaisuuksia. Sivutuloksena voi
daan osoittaa modifioituja verkkoja voitavan käyttää myös rekursiivista laskentaa mallitettaessa.
Käyttöjärjestelmän oleelliset osat on mallitettu kehitetyn formalismin avulla. Mallit antavat mahdollisuuden havainnol
listaa järjestelmän dynaamista toimintaa. Soveltuvien välinei
den ollessa käytössä on järjestelmän formaali analysointi lisäksi mahdollista. Kehitetty formalismi, ohjelmistoarkki
tehtuuri ja laaditut mallit ovat saavuttaneet kansainvälistä tunnustusta. Kolme tekijän yhdessä työn ohjaajan kanssa ai
heesta kirjoittamaa raporttia on esitetty tai hyväksytty esi
tettäväksi alan ulkomaisissa konferensseissa.
Eräänä tutkimuksen tavoitteista on ollut sovellutusohjelman toiminnan luotettavuus. Käyttöjärjestelmän osalta tähän on pyritty suunnittelemalla hierarkinen vikastrategia, jolloin laitteiston avulla seurataan alimman tason ohjelmien toimin
taa ja nämä taasen seuraavat ylempiä kerroksia. Erillisenä vikastrategian osana on äänestimen avulla saatavan vikatilas- ton käyttö. Muistinsuojauksen osalta on suunnitelmat jätetty avoimiksi, laitteiston ollessa tältä osin puutteellinen.
Käyttöjärjestelmä on tärkeimmiltä osiltaan toteutettu ja tes
tattu. Ohjelmointi on suoritettu suurimmaksi osaksi oppilas
töinä, joita kirjoittaja on tiiviisti ohjannut. Ohjelmiston suurin ansio on modulaarisuus ja moduulien riippumattomuus toisistaan. Ohjelmiston eri osia voidaan käyttää toisistan riippumatta. Onnistumista tavoitteena olleen symmetrisyyden toteuttamisessa kooditasolle asti voidaan pitää merkittävänä saavutuksena.