ITKA203 Käyttöjärjestelmät -kurssin Demo 7c keväällä 2014. "Toteutuskatsaus"
Paavo Nieminen, paavo.j.nieminen@jyu.fi
Jyväskylän yliopiston tietotekniikan laitos.
Harjoituksen tavoitteet:
- Otat kosketusta oikean käyttöjärjestelmän oikeaan koodiin.
- Totuttelet lukemaan toisten tekemää koodia (IT-alan metataito).
- Ehkäpä (toivottavasti) havaitset, kuinka tämä pieni kurssimme on (toivottavasti) antanut joitain pieniä, alustavia, pohjia ymmärtää edes jotakin oikean käyttöjärjestelmän toteutuksellisista yksityiskohdista.
Joissakin korkeakouluissa otetaan bottom-up -lähestymistapa, jossa toteutetaan itse pieni käyttöjärjestelmä. Andrew S. Tanenbaumin oppikirjassa aikoinaan esimerkkinä ollut "koeputkikäyttöjärjestelmä" Minix on ollut pohjana ainakin Linuxin ensimmäisille versioille. Omalla kurssillamme katsotaan kuitenkin käyttöjärjestelmien teoriaa ja käytäntöä läpileikkauksena ja jonkinlaisena ohjattuna läpikävelynä. Tässä harjoitteessa ihmetellään ajankäytöllisten rajoitteiden puitteissa jotakin palasta olemassa olevasta koodista ja yritetään sitä kautta hahmottaa miltä todellinen toteutus voisi näyttää. Millään tapaa kurssiin käytössä oleva aikaikkuna ei riitä syventymiseen, vaan tarkoituksena on toivon mukaan näyttää lähtökohtia ja työkaluja omatoimiseen syventymiseen, mikäli sellainen jotakuta alkaisi kiinnostaa pidemmän päälle. Lisämotivaatioksi tarjotaan lisäpiste tenttiin.
Tutkittavien kohteiden valinta oli palautusmuodon määrittelyn lisäksi suuri haaste tällaisen tehtävän julkaisussa.. en tiedä onnistuiko tämä ekalla kertaa laisinkaan... Tavoitteena oli, että valittavana olisi suurin piirtein saman kokoista ja/tai tasoista koodia sopivan kokoinen palanen eri aihealueista. Keväällä 2014 yritin parhaani mukaan varmistua, että ehdotetut koodinpätkät ovat relevantteja käytännön toteutuksen tai sovellusten kannalta. Prosessissa jouduin selaamaan koodia loppujen lopuksi aika paljon, ja jouduin toteamaan, että todellisuus pystyy olemaan aika paljonkin monimuotoisempi kuin miltä se pelkistetyissä oppikirjaesimerkeissä näyttää. Arvostaisin palautetta ja parannusehdotuksia tulevia kurssikertoja varten!
Tehtävässä tutustut käytössä olevaan avoimena lähdekoodina tuotettuun käyttöjärjestelmään yleisellä tasolla sekä yhteen yksityiskohtaan syventyen.
Palautuksena on määrämuotoinen tiivistelmä ja oppimisdokumentaatio tekstitiedostona.
Käytä hyödyksesi seuraavia:
Valitse tutkittavaksesi yksi seuraavista kohteista (tiedostoista / funktioista / tietorakenteista). Heitä vaikka arvalla ja hylkää, mikäli arvottu aihepiiri ei kiinnosta tai tuli kohde, joka on arvioitu liian hankalaksi/pitkäksi (merkkasin "level 2" tai "level 3", jos jouduin itse kahlaamaan kovinkin paljon oheismateriaalia).
Tästä demosta saa bonuspisteen, mikäli Optima-järjestelmän palautuskansioon on palautettu seuraavanlainen vastaus:
Vastaus on tasan yksi tekstitiedosto, jonka merkistökoodauksena on UTF-8. Ohjepituus on noin pari kuvaruudullista tekstiä järkevällä fonttikoolla; siis muutamia satoja sanoja.. niin paljon kuin tarvitset.
Pohjana tiedostolle on seuraava [täydennä hakasulkeissa olevien tilalle]:
Tutkimani ytimen versio: [minkä version latasit / katselit] Tutkimani lähdekooditiedosto: [mistä tiedostosta tutkimasi kohta löytyi] Viimeisin muutos tiedostoon: [kenen tekemä, milloin, millä kommentilla] Mitä tarkoitusta lähdekooditiedosto palvelee kokonaisuudessa: [kerro] Etsimäni ominaisuus/kohta on kyseisen version riveillä: [ilmoita tiedosto ja alue, jossa tutkittu ominaisuus on] Laaja kommentti koodipätkästä: ------------------------------ [kuvaile suomeksi, oman käsityksesi mukaan, mitä tarkoitusta ohjelman pätkä palvelee ja millä keinoin.] Havaintoja ja tunnelmia: ------------------------ [kuvaile suomeksi, oliko koodin tutkiminen esim. tylsää tai mielenkiintoista; oliko työlästä tai helppoa; oliko vanhaa tuttua tietoa tai yllätyksiä; yhtymäkohtia aiempaan kurssi-, työ- tai harrastustoimintaan] Seuraavia asioita en pystynyt vielä ymmärtämään: -------------------------------------------------------------- [listaa / kuvaile hämäräksi jääneitä kohtia suomeksi]