Tiedossa on kiva kesäkurssi
Etusivu Materiaali Luennot -- Miksi -- Ajatuksia  

ITKA203 Käyttöjärjestelmät --- kesä 2007 --- Motivaatiopalopuhe

Miksi Käyttöjärjestelmät -aihetta opetetaan?

*/ ?> Esimerkki käyttöjärjestelmästä loppukäyttäjän näkökulmasta. Lähdetäänpä liikkeelle nykyhetkestä: Tänään on ja ilmeisesti juuri nyt luet ITKA203 -kurssin nettisivua. Aina kun "klikkailet tietokonetta", esimerkiksi surffaat netissä, käytät välillisesti käyttöjärjestelmää (esimerkiksi Windowsia tai Linuxia). Tätä ei tule aina ajatelleeksi, koska varsinaisesti käytät jotakin ohjelmaa (esimerkiksi nettiselainta) joka puolestaan käyttää alla olevan käyttöjärjestelmän tarjoamia palveluita (grafiikka, ikkunat ja OK/Cancel -painikkeet, hiiri ja näppäimistö, internet-yhteys, ...). Selaamasi nettisivut sijaitsevat tiedostojärjestelmässä jonkin WWW-palvelimena toimivan tietokoneen kiintolevyllä; esimerkiksi tämä sivu on osoitteesta päätellen Jyväskylän yliopiston Tietohallintokeskuksen palvelimella, jonka osoite on www.cc.jyu.fi. (Tai ainakin tietyllä tasolla näyttää siltä...) Siellä selainohjelman ym. tiedonsiirtokerrosten välittämiin klikkailuihisi vastaa palvelinohjelma, joka käyttää palvelinkoneen käyttöjärjestelmää antaakseen pyytämäsi sivun internet-yhteyden yli. Monet nettisivut rakennetaan nykyään siten, että sisältö, kuten valokuvagalleriat tai uutiset, sijaitsevat tietokannassa. Silloin itse palvelinohjelman päällä toimii vielä palvelinskripti, joka hakee tietoja kannasta kooten pyydetyn sivun dynaamisesti. Myös tietokantapalvelin on ohjelma. Meille tuttu Korppi-järjestelmä on esimerkki laajasta tietokantasovelluksesta, jonka käyttöliittymä on WWW-pohjainen. Tämä kurssin kotisivukin on "dynaaminen", vaikkei sen skripti tee juuri kummempaa kuin päivittää tuon alussa olevan päivämäärän. Kaikkialla on tällaisia ns. virtuaalikonehierarkioita eli ohjelmia, jotka käyttävät apuohjelmia, jotka käyttävät käyttöjärjestelmää, joka käyttää ns. laitteistorajapintaa. Laitteistorajapintakin sisältää ohjelmakokoelman, joka komentaa sähkön ja muiden fyysisen reaalimaailman ilmiöiden avulla toimivia laitteita (kuten reaaliaikakelloa).

Jokainen työpöydälläsi auki oleva ikkuna kuuluu jollekin ohjelmalle. Huomannet, että käynnissä voi olla useita ohjelmia yhtäaikaa. Miten tämä moniajo on tehty teknisesti mahdolliseksi? Vastaus opitaan Käyttöjärjestelmät-kurssilla. Lisäksi tietokoneessasi on jatkuvasti toiminnassa myös ohjelmia, joita et näe, mm. laiteajureita. Kaikkialla on ohjelmia (kuten WWW-palvelimia ja tietokannanhallintajärjestelmiä, tekstinkäsittelyohjelmia, piirto-ohjelmia, pelejä, ...) joiden tulee toimia rinnakkain, yhtäaikaa, ilman konflikteja tai virhetilanteita. Ja ei mahda tulla yllätyksenä, että tiedekunnastamme valmistuva ammattilainen tulee suunnittelemaan ja toteuttamaan juuri noita ohjelmia - mieluiten hyviä sellaisia. Se on vaikeata, ellei jopa mahdotonta, jos taustalla olevaa koneistoa sekä siitä aiheutuvia "vaaranpaikkoja" ei ymmärrä. (Sivuaineopiskelijalle sanoisin, että ei tämä oppi ojaan kaada teikäläistäkään!)

Joskus olet varmaan selannut nettisivua, josta tulee virheilmoitus, kuten "404 Not Found". Internet on rikki; kuka sen korjaa? Esimerkiksi olisi hyvä, jos sivuston ylläpitäjä mahdollisimman nopeasti ottaisi (hätätilanteessa vaikka kesämökiltä?) kämmentietokoneellaan pääteyhteyden WWW-palvelimelle, etsisi virheen aiheuttajan WWW-sivuston ohjelmakoodista ja korjaisi tilanteen heti. (Olipa meillä kerran yökerhon jälkeen pienet jatkot, joissa nimeltä mainitsematon ammattilainen kävi nostamassa kaatuneen WWW-palvelimen pystyyn; siihen ei kauan mene, ja sitten voi taas jatkaa ns. yöpäivystystä... mutta ei siitä sen enempää... öhöm). Miten tällainen käytännössä tehdään? Mm. tämä kuuluu Käyttöjärjestelmät-kurssin aiheisiin... tutustumme unix-shelleihin, jollaisen kautta voi suoraan editoida Unix-tyyppisen käyttöjärjestelmän varaan rakennetulla palvelimella sijaitsevia tiedostoja. Palvelimella voi olla myös monta käyttäjää yhtäaikaa. Jollain tavoin on voitava huolehtia siitä, että jokaisen käyttäjän yksityiset tiedot pysyvät yksityisinä - tiedostojen käyttö- ja lukuoikeudet eli tietojen suojaustasot on hallittava... ja niin edelleen... käyttöjärjestelmään liittyviä asioita kaikki.

Siinäkö siis kaikki? Eipä todellakaan; puhutaanpa "ubiquitous computingista", joka läpäisee nykyisen yhteiskuntamme: Esimerkiksi aina kun soitat kaverillesi, näppäilet kännykkääsi. Siinä on käyttöjärjestelmä, jonka päällä on ohjelmia, kuten puhelinluettelo, kalenteri, WAP-selain, laskin, pelejä, kamera. Ohjelmat käyttävät puhelimen käyttöjärjestelmän tarjoamia palveluita (näppäimet, näyttö, äänet, muistikortit). Bänditreeneissä kitaristi saattaa käännellä nappeja digitaalisesta efektilaitteesta. Vaikkei ehkä käyttöjärjestelmää perinteisessä mielessä, efektilaitteessa on jonkinlainen tietokone. Se on pitänyt jonkun ohjelmoida hallitsemaan yhteys signaaliprosessoreihin, AD/DA-muuntimiin, muistipiireihin (efektiasetukset) ja säätönappuloihin. Kitaristin efektilaitteessa tarvitaan monia käyttöjärjestelmän piirteitä! ... puhumattakaan kosketinsoittajan uudesta synasta, jossa on kosketusnäyttö ja enemmän muistia kuin puoli vuosikymmentä vanhassa PC:ssä. Soitin ei saa lopettaa toimintaansa yhtäkkiä kesken keikan tai sitten voi Holopainenkin kirota ääneen. Muita esimerkkejä ovat pelikonsolit, DVD-soittimet, televisiot, "minihifit", kannettavat MP3-soittimet, leditaulut (joista näkee kaupungilla kellonajan ja lämpötilan), animoidut mainosnäytöt (esim. Kauppakadun kompassilla Jyväskylässä), pankkiautomaatit, teollisuuden mittalaitteet, ilmastointi-, kulunvalvonta- ja hälytysjärjestelmät, puhelinkeskukset, ... ja tässä oli vain ensiksi mieleen tulleita esimerkkejä paikoista, joihin sisältyy tietokonelaitteistoa. Aina kun jossain on tietokone, siellä on käyttöjärjestelmä (tai jotakin, jolla on käyttöjärjestelmän piirteitä). Tietokoneita on nykyään joka paikassa, ja tulevaisuudessa varmasti vieläkin useammassa.

Huhut kertovat, että (tietokone)peliteollisuus olisi jo ohittanut mittasuhteissaan elokuvateollisuuden. Pelit ovat kiinnostavia (ainakin minun mielestäni), joten mainitsen ne yhtenä motivoivana esimerkkinä alueesta, jossa laitteiston ja käyttöjärjestelmien tunteminen on ensiarvoisen tärkeää. Tällä kurssilla opimme siis mitä se tarkoittaa, että joku on tietokone. Maailman ensimmäiset tietokoneet 1950-luvulla ja taskussasi oleva kännykkä ovat monessa mielessä samanlaisia. Käyttöjärjestelmät-kurssilla tutustumme erääseen (toistaiseksi...) mukavan pysyvään asiaan, jonka nimeksi on muodostunut Von Neumann -arkkitehtuuri.

Tarkista! Huhut kertovat, että mm. uusille Playstationeille pitää ohjelmoida paljon suoraan konekielellä, koska toistaiseksi ei ole selvää, miten laitteissa käytettäville moniydinprosessoreille pitäisi tehdä virtuaalikonehierarkian alemmat kerrokset. Kun tämä ratkeaa nykyisille prosessoreille, ovat insinöörit todennäköisesti keksineet taas jotakin uutta, ja kehityksen kärjessä pysyminen edellyttää syvällistä ymmärtämistä niistä laitteista, joille ohjelmia, esimerkiksi pelejä, tehdään. Pelikonsolit ovat tietokoneita siinä missä kaikki muutkin. Jokaisen oma asia on muuten tarkistaa kahden yllä mainitun huhun paikkansapitävyys jostakin; minä en juuri nyt ehdi, koska pitää mm. suunnitella yksi kurssi ennen kesää... */ ?>

Digitaaliset laskimet (engl. Digital Computer) eli kansanomaisemmin "tietokoneet" eri ilmenemismuodoissaan ovat oheislaitteineen yhä enemmän jokaisen ihmisen arkipäivää. Opiskelemme informaatioteknologiaa, ja niinpä hyvin suuri osa tekemisistämme on yhteydessä näihin ohjelmia suorittaviin automaatteihin. Tietojärjestelmien suunnittelijan ja toteuttajan on tunnettava koko pelikenttänsä hyvin, koska muuten sovelluksissa jää sijaa ihmishenkiä vaarantaville virheille, tietoturva-aukoille ja muillekin ikävyyksille. Vertaan informaatioteknologiaa mielelläni lentokoneisiin ja lentämiseen: tuolla on maailma täynnä lentomatkustajia (vrt. tietotekniikan käyttäjiä); sitten on lentokapteeneita (osa meistä) sekä lentokoneiden rakentajia ja suunnittelijoita (myös osa meistä), lennonjohtajia, lentokonereittien suunnittelijoita, korjausmekaanikkoja sekä heidän työnjohtajiaan ja kouluttajiaan... Matkustajan on luotettava siihen, että kone pysyy ilmassa: Pilotti tietää, mitä hän tekee... Lentokoneen rakentaja tiesi, mitä hän teki... Verkkopankin ylläpitäjät varmastikin tietävät, mitä he tekevät biteille, jotka symboloivat ensi viikolla ruokapöydässäni konkretisoituvia euroja. Tämä kurssi on ensijohdanto tietokonelaitteistoon ja käyttöjärjestelmiin, ja yllä olevin sanoin se on (ainakin kesäluennoijan mielestä) erinomaisen perustellusti suositeltava, tärkeä ja vakavasti otettava opintojakso. Teimmepä mitä tahansa, koneisto kaikkine rajoituksineen ja mahdollisuuksineen on tasan juuri se. Vakavasti ottaen koetan tehdä kesäkurssista hauskan kokemuksen osallistujille.