ITKA203 Käyttöjärjestelmät: Osaamistavoitteet

Versio:13.3.2017

Tässä dokumentissa kuvaillaan Jyväskylän yliopiston Informaatioteknologian tiedekunnan aineopintotasoisen kurssin "ITKA203 Käyttöjärjestelmät" osaamistavoitteet. Uusin kehitysversio historiatietoineen on seuraavassa sijainnissa: https://yousource.it.jyu.fi/itka203-kurssimateriaalikehitys/itka203-kurssimateriaali-avoin/blobs/master/osaamistavoitteet.txt

Aiemmin osaamistavoitteet olivat implisiittisessä tenttikysymystärppien ja avainsanalistojen muodossa sekä huomioina harjoitustehtävien johdannoissa. Keväällä 2015 ne ensimmäistä kertaa eksplikoitiin kohdassa Taustamateriaali ja kansainväliset suositukset mainitun ohjeistuksen mukaisesti. Opettajat varaavat mahdollisuuden muokata tavoitteita myös kurssin aikana, mikäli tarvetta ilmenee. Meneillään olevan kurssin osalta versio kiinnitetään viimeistään viimeisellä luennolla, ja sen jälkeen se pidetään samana kolmen tenttikerran ajan.

Taustamateriaali ja kansainväliset suositukset

Laadinnan pohjana käytettiin seuraavaa W5W^2 -projektin tuottamaa ohjetta, johon oman opintotietojärjestelmämme Korpin osaamistavoiteohjeet viittaavat:

https://www.uef.fi/documents/1526314/1526337/N%C3%A4in+asennat+osaamistavoitteet+opetussuunnitelmaasi-+laaja+oppim%C3%A4%C3%A4r%C3%A4_OY.pdf/e6750ff0-6f2f-4f55-8f68-d5cc33adca0c

Mallina on käytetty ACM:n "computing curriculum" -suosituksia vuosilta 2001 ja 2013 (käyttöjärjestelmien osalta suositus on kohtalaisen muuttumaton näiden versioiden välillä; lisätyt kohteet vaikuttaisivat liittyvän muihin kursseihimme, joten ydinsisältö rakennettiin nyt ensisijaisesti vuoden 2001 mallin mukaisesti):

http://wiki.acm.org/cs2001/index.php?title=Operating_systems

http://www.acm.org/education/CS2013-final-report.pdf (erit. sivu 138)

Tässä tehty ACM-mallin mukautus perustuu paikalliseen kurssikehityskaareen sekä muilla tiedekuntamme kursseilla tarjottavaan opetukseen: Kurssille on valittu tietyt ACM-mallin "elective"-tavoitteet, joita meillä on aiemminkin korostettu. Toisaalta on jätetty pois tavoitteita, jotka kuuluvat omassa OPSissamme joillekin muille kursseille. ACM:n "core"-tavoitteista joitakin on karsittu tämän kurssin rajallisen tuntimäärän vuoksi. Konkreettisiin käytännön esimerkkeihin perustuva toteutusnäkökulma tuo käytännönläheisiä osaamistavoitteita, joita ACM-mallissa ei mainita. Näistä erityisesti ohjelmointiin liittyvät osaamistavoitteet ovat linjassa niiden tutkintojemme profiilin kanssa, joilla tämä kurssi on pakollinen osa.

Paikallisen kurssikehityskaaren mukainen tulkinta

Opintojakson sisältö:

Käyttöjärjestelmän rakenne ja periaatteet, yhdenaikaisuus ja rinnakkaisuus, ajoitus, muistin hallinta, oheislaitteiden hallinta, tiedostojärjestelmä.

Opintojakson opetustavoite:

Kurssilla esitellään opiskelijalle käyttöjärjestelmien merkitystä, periaatteita ja toteutusratkaisuja yksinkertaistettujen teoreettisten yleiskuvausten sekä konkreettisten koodi-, kuori- ja skriptausesimerkkien kautta. Konkreettisina esimerkkiartefakteina käytetään Linuxin ydintä lähdekoodeineen, POSIX-standardia, bash-kuorta, GNU-työkaluja, C-kieltä ja AMD64-prosessoriarkkitehtuuria.

Opintojakson osaamistavoitteet:

Hakasuluissa tavoitelauseiden lopussa on koetettu tehdä ydinainesanalyysiä seuraavasti:

  • [ydin/arvos1] tarkoittaa välttämätöntä, siis "välttävää", ydinosaamista kurssin läpäisyyn ykkösellä
  • [ydin/arvos2] tarkoittaa hieman laajempaa, tyydyttävää, ydinosaamista
  • [edist/arvos3] tarkoittaa laajaa, hyvää, osaamista.
  • [edist/arvos4] tarkoittaa edistynyttä, kiitettävää osaamista
  • [edist/arvos5] tarkoittaa edistynyttä, erinomaista osaamista ja ehkä alustavaa "asiantuntijuuttakin".

Tämä kurssi on ensimmäinen johdanto aihepiiriin, joten se on enemmän laaja kuin syvä. Niinpä suurin osa osaamistavoitteista, eli kurssin ns. "ydinaines", ovat luonteeltaan melko pintapuolisia ja siten toivottavasti myös yksittäisinä vähemmän työläitä saavuttaa. Ne kuuluvat kolmeen ensimmäiseen tasoon (jotakuinkin vastaten arvosanoja 1-3), joilla kurssin saa läpi ja voi hyvällä omallatunnolla jatkaa opintoja alalla. Kahteen viimeksi mainittuun kategoriaan puolestaan sisältyy erityisesti (1) kurssin luonteen mukaisesti teknisiin yksityiskohtiin ja koodarin kädentaitoihin liittyvää osaamista, joka ylittää pintapuolisen ydinaineksen, sekä (2) aineopintotasoiseen yleistavoitteeseen liittyen tieteellistä ja ammatillista osaamista. Sokerina pohjalla on viimeisenä mainittu yksi ultimaattisempi osaamistavoite, joka parhaimmillaan voisi johtaa käyttöjärjestelmien syvällisempään tutkimiseen esimerkiksi kanditutkielman aihepiirinä.

Arvostelun mielessä noudatetaan osittain "määrä korvaa laadun" -periaatetta, jossa tentissä kysytään pääasiassa tasojen 1-4 asioita, vaikka täysillä pisteillä on mahdollista saada arvosanaksi 5. Korkeampiin tasoihin liittyviä vapaaehtoisia demotehtäviä tekemällä voi kuitenkin saada bonuspisteitä, joilla on mahdollista kompensoida unohduksia/lapsuksia tasojen 1-4 asioihin liittyvissä kysymyksissä. Tasojen 4-5 tavoitteet ovat luonteeltaan soveltavia ja luovia, joten niiden saavuttaminen edellyttää oletettavasti tasojen 1-3 osaamista.

Arvosanatavoitteen perässä on yksilöivä ID-numero, jota käytetään tenttikohtaisten kysymysten arvonnassa. ID-numero 0 tarkoittaa, että tehtävästä ei ole kevään 2015 tenttiin mennessä keksitty hyvää ja yksikäsitteistä tehtävänantoa, joten se ei ole mukana arvonnassa

Käyttöjärjestelmät -kurssin suoritettuaan opiskelija...

...käyttöjärjestelmän rakenteen ja periaatteiden osalta:

  • osaa kuvailla tyypillisen nykyaikaisen käyttöjärjestelmän päätehtävät ja kykenee pääpiirteissään selittämään historian, jonka kautta käyttöjärjestelmien nykymuoto on syntynyt [ydin/arvos1_1]
  • osaa luetella käyttöjärjestelmän tärkeimmät osajärjestelmät ja tehtävät, joita kunkin osajärjestelmän vastuulla on [ydin/arvos1_2]
  • tunnistaa ja osaa antaa esimerkkejä ristiriitaisista tavoitteista ja kompromisseista, joita käyttöjärjestelmän toteutukseen ja asetusten tekemiseen välttämättä liittyy [ydin/arvos1_3]
  • tuntee olennaisimman käyttöjärjestelmiin liittyvän terminologian ja sanojen tunnetuimmat variaatiot suomeksi ja englanniksi; kykenee kommunikoimaan aiheeseen liittyvistä erityiskysymyksistä kirjallisesti (ja suullisesti; ei kuitenkaan verifioitavissa kirjallisella tentillä) molemmilla kielillä [ydin/arvos1_4]
  • osaa kuvailla käyttöjärjestelmille tyypilliset abstraktiot (prosessit, resurssit, tiedostot) sekä kerrosmaisen rakenteen abstraktioiden ja fyysisen laitteiston välillä; osaa kertoa syitä abstraktioiden käyttöön laiteohjauksessa ja kykenee yleistämään abstrahointimenettelyn ohjelmistojen tekemiseen muutoinkin [ydin/arvos1_5]
  • ymmärtää standardoinnin päämäärät käyttöjärjestelmien (ja muiden rajapintojen) yhteydessä; osaa kertoa, millaisia asioita POSIX-standardi määrittelee ja toisaalta mihin POSIX ei ota kantaa. [ydin/arvos1_6]
  • tietää ja tunnistaa (sisällön kuvauksen perusteella) tyypillisimmät käyttöjärjestelmässä tarvittavat tietorakenteet (tietyt tietueet sekä niistä muodostuvat taulukot, jonot, listat, pinot, hierarkkiset rakenteet) sekä tietää, mihin tarkoitukseen mitäkin niistä voidaan käyttää. Erityisesti opiskelija osaa tunnistaa ja kuvailla ne käyttöjärjestelmän tietorakenteet, joita käytetään prosessien tilan hallinnassa, sivuttavan virtuaalimuistin hallinnassa, tiedostojärjestelmän toteutuksessa sekä vuoronnuksessa. [ydin/arvos1_7]
  • osaa kertoa, missä olosuhteissa tietokoneen prosessori suorittaa ohjelmakoodia käyttöjärjestelmätilassa ja milloin käyttäjätilassa sekä mitä eroja näillä tiloilla on keskenään [ydin/arvos1_8]
  • tietää, missä olosuhteissa ja millä mekanismilla prosessori siirtyy keskeytyskäsittelyyn; ymmärtää keskeytyskäsittelyn hyödyt ja toisaalta implikaatiot sovellus- ja järjestelmäohjelmistojen kannalta [ydin/arvos1_9]
  • tietää olennaisimmat erot monoliittisen ja mikroydinjärjestelmän välillä [ydin/arvos2_2]
  • osaa esittää C-kielisen tietorakenteen sisällön tietokoneen muistissa sijaitsevien peräkkäisten muistipaikkojen sisältöinä, joilla on yksilölliset osoitteet; erityisesti pystyy toteuttamaan objekti-/tietorakenneviitteen muistiosoitteena. Vastaavasti osaa löytää muistissa olevasta datasta yksinkertaisen C-tietorakenteen komponenttien sijainnin ja sisällön, kun tietorakenne, alkuosoite ja muistin sisältö osoitteen ympäriltä on annettu. [ydin/arvos2_0]
  • ymmärtää ohjelman suorituksen muistissa sijaitsevien konekielisten käskyjen jonona sekä tyypillisten ohjelmointirakenteiden ilmenemisen konekielessä; tunnistaa konekielisen ohjelman sellaisen nähdessään (AT&T tai Intel -tyyppisenä assemblynä tai disassemblynä) [ydin/arvos2_3] (eikö tämä sisälly seuraavaan tavoitteeseen, jossa aivan simuloidaan mielikuvamallissa konekieltä?? no ei oikeastaan, koska tavallaan tässä on kyseessä "koko prosessorin trace", ei yksittäisen prosessin. Eli varsinainen kysymys on: millaisella tenttikysymyksellä tämän ymmärtämistä mitattaisiin, ehkä erityisesti suhteessa seuraavaan?)
  • osaa lukea lyhyitä (so. 2-10 käskyä) suomen kielellä rivi riviltä kommentoituja konekielisiä ohjelmanpätkiä ja muodostaa mielessään (tai kynällä ja paperilla) niiden jäljen sekä niiden suorittamisen aiheuttamat tilapäiset ja pysyvät vaikutukset tietokoneen rekistereihin ja muistiin [edist/arvos4_1]

... yhdenaikaisuuden osalta:

  • osaa kertoa, kuinka moniajo voidaan toteuttaa yksiprosessorijärjestelmässä ja tietää, kuinka moniprosessorijärjestelmä eroaa yksiprosessorijärjestelmästä sovellusohjelmoijan näkökulmasta [ydin/arvos1_10]
  • osaa kuvailla prosessin elinkaaren vaiheet tilakaavion avulla sekä tulkita annettua tilakaaviota [ydin/arvos1_11]
  • tunnistaa ja osaa luetella tilanteita, joissa samanaikaisten prosessien tai säikeiden käyttäminen on edullista ongelman ratkaisemiseksi (sisältäen muiden muassa lähtökohtaisen tarpeen moniajokäyttöjärjestelmälle) [ydin/arvos1_12]
  • osaa selittää prosessin käsitteen sekä käyttöjärjestelmän prosessielementin ja prosessitaulun rakenteen pääpiirteet; tunnistaa prosessielementin nähdessään sellaisen ja osaa arvioida, onko kyseisessä elementissä mukana kaikki tarpeellinen tyypillisimpien käyttöjärjestelmätehtävien hoitamiseksi [ydin/arvos1_13]
  • osaa selittää prosessin ja säikeen eron [ydin/arvos1_14]
  • osaa antaa konkreettisen koodi- tai pseudokoodiesimerkin, joka voi johtaa lukkiutumistilanteeseen tai kilpa-ajosta aiheutuvaan datan korruptoitumiseen; vastaavasti osaa kertoa, onko annetussa esimerkkikoodissa mahdollisuus jompaan kumpaan ongelmaan [ydin/arvos2_4]
  • muistaa yksinkertaisimmat yhdenaikaisen suorituksen aiheuttamat haasteet (poissulkua, synkronointia edellyttävät tilanteet) ja osaa ratkaista ne käyttäen (POSIX-) semaforeja [edist/arvos3_1]
  • osaa verifioida tuottaja-kuluttaja -ongelman ratkaisemiseksi ehdotetun esimerkkikoodin oikeellisuuden, eli ratkaiseeko se oikeasti ongelman vai ei. [ydin/arvos2_5] (eikö tämä sisälly olennaisesti edelliseen?)
  • osaa selittää (POSIX-tyyppisen) semaforin käsitteenä, (POSIX-yhteensopivan) alustan tietorakenteena sekä sovellusohjelmalle tarjottavana rajapintana; muistaa semaforikäsitteen historian ja pystyy luettelemaan esimerkkisovelluksia [ydin/arvos2_6]
  • osaa nimetä semaforin lisäksi muita tapoja vastaavanvahvuisen synkronoinnin tuottamiseksi. [ydin/arvos2_7]
  • osaa luetella ja selittää yksinkertaisia vuoronnusmenetelmiä sekä antaa esimerkkejä tilanteista, joissa kukin niistä voisi olla edullisempi valinta kuin jokin toinen; vastaavasti osaa valita annetuista vaihtoehdoista sopivimman vuoronnusmenetelmän annetussa skenaariossa [ydin/arvos2_0] (2015 ja 2016 tulee tentti niin pian, ettei tälle asialle jää lukuaikaa; jatkossa vois olla käsittely varhaisemmassa vaiheessa kurssia jolloin voisi kysyä järkevästi? Tai sitten vois suosiolla hyväksyä, että ei kuulu meidän peruskurssille?)
  • osaa antaa esimerkkejä vuoronnuksen yleisten periaatteiden ilmenemisestä muissakin yhteyksissä kuin käyttöjärjestelmän prosessivuorontajassa [ydin/arvos2_9]
  • osaa kertoa, mitä tarkoittaa reaaliaikajärjestelmä ja antaa esimerkkejä reaaliaikajärjestelmistä [edist/arvos3_2]
  • (?) tietää, mitä on pre-emptiivinen deadline-vuoronnus ja missä tilanteessa sitä esimerkiksi tarvitaan [edist/arvos3_0] (2015 ja 2016 jäi vähän loppupuolelle kurssia)

... muistinhallinnan osalta:

  • osaa selittää, mikä on tietokoneiden muistihierarkia ja siihen liittyvät kompromissit [ydin/arvos1_15]
  • tietää, mikä on lokaalisuusperiaate, miten sitä hyödynnetään muistijärjestelmässä sekä kuinka periaate on yleistettävissä muihin sovelluksiin [ydin/arvos2_10]
  • osaa selittää sivuttavan virtuaalimuistin toimintaperiaatteen ja kuvailla sen toteuttamiseksi tarvittavat käyttöjärjestelmän tietorakenteet sekä ohjelmiston ja laitteiston osat [ydin/arvos2_11] (sisältyykö seuraavaan sopivasti?)
  • osaa muuntaa virtuaalimuistiosoitteen fyysiseksi annetun (yksitasoisen) sivutaulun perusteella; ymmärtää sekä osaa selittää jaetun muistialueen toteuttamisen virtuaalisia muistiosoitteita käyttäen [edist/arvos3_3]
  • osaa kuvailla yksityiskohtaisesti sivunvaihtokeskeytyksen kulun LRU-menettelyssä [edist/arvos4_2]
  • tietää cache thrashing -ilmiön ja tunnistaa mahdollisuuden sellaisen olemassaoloon yksinkertaisessa koodiesimerkissä; osaa kuvailla keinoja, joilla ilmiöltä voidaan yrittää välttyä; osaa valita kahdesta konkreettisesta koodiesimerkistä sen, jossa ilmiö on vähemmän paha [edist/arvos4_3]

... oheislaitteiden hallinnan ja tiedostojärjestelmän osalta:

  • osaa kuvailla laiteohjelmistojen kerrosmaisen rakenteen ja I/O-pyynnön sekä I/O-keskeytyksen käsittelyn yleisellä tasolla [ydin/arvos1_16]
  • osaa kuvailla tiedon pitkäaikaiseen tallennukseen ja lataamiseen liittyvät vaiheet laitteiston ja ohjelmiston osien toiminnan tasolla [ydin/arvos2_12]
  • tietää DMA:n toimintaperiaatteen hyötyineen ja implikaatioineen [ydin/arvos2_13]
  • ymmärtää erikoistiedostojen roolin ja "kaikki ilmenee tiedostona -periaatteen" unix-tyyppisissä järjestelmissä; osaa antaa esimerkkejä unixin erikoistiedostoista [edist/arvos3_4]
  • tietää RAIDin (vähintään muutamien eri tasojen) toimintaperiaatteet hyötyineen ja implikaatioineen [edist/arvos3_5]
  • osaa kertoa, miksi naiivisti toteutettu tiedostojärjestelmä voi korruptoitua sähkövirran katketessa ja kuvailla keinot, joilla korruptoitumista voidaan ehkäistä (journalointi) [edist/arvos3_6]
  • osaa selittää yhden konkreettisen tavan organisoida tiedostojärjestelmä levyllä (unix i-nodet) [edist/arvos4_4]

... käytännön sovellusten osalta (kuori):

  • uskaltaa ja osaa käyttää "unix-tyyppistä" käyttöjärjestelmää, esim. Linuxia, komentorivikuoren avulla sekä pääteyhteyden yli, aiheuttamatta vaaraa omille tiedoille tai häiriötä muille käyttäjille tai järjestelmälle [ydin/arvos1_17]
  • osaa käyttää screen -apuohjelman tarjoamia teksti-ikkunoita sekä jotakin yleisesti käytettyä tekstieditoria tietojen manipulointiin tekstimuotoisen pääteyhteyden kautta suoraan linux-palvelimella [ydin/arvos1_0]
  • tuntee Bourne Again Shell -kuoren (bash) tärkeimmät (erityisesti POSIX-yhteensopivat) sisäänrakennetut komennot sekä yleisimmät unix-tyyppisiin (etenkin POSIX-yhteensopiviin) järjestelmiin asennetut apuohjelmat (grep, find, ...); osaa käyttää näitä manuaalisivujen perusteella sekä arvioida kriittisesti nettifoorumeilta löytyvien ohjeiden laatua [ydin/arvos1_0] (esimerkit jäivät tasolle echo, cat, ls)
  • osaa tulkita ja rakentaa yksittäisiä bash-komentorivejä, hyödyntäen putkitusta ja tiedostoonohjausta [ydin/arvos1_19]
  • tunnistaa ja osaa luetella käyttötarkoituksia, joihin yleisesti käytetään kuorikomentojonoja (shell script, "skripti") [ydin/arvos1_20]
  • (?) tuntee syntaksin, jolla perusohjelmointirakenteita (muuttujat, ehdot, silmukat, aliohjelmat) käytetään bash -kuoressa; tuntee myös kuoren käytölle ominaiset "||" ja "&&" -syntaksit [ydin/arvos2_0]
  • (?) ymmärtää komentoriviargumenttien ja ympäristömuuttujien roolin sovellusohjelman toimintaympäristön osana; osaa antaa käyttöohjeiden mukaisia argumentteja komentoriviohjelmille sekä julkaista ympäristömuuttujia bash-kuoressa [ydin/arvos2_15]
  • pystyy lukemaan ja ymmärtämään yksinkertaisia bash -skriptejä, muokkaamaan niitä hallitusti sekä tuottamaan itse alkeellisia skriptejä mallin tai ohjeiden perusteella [ydin/arvos2_16]
  • (?) osaa asentaa bash -skriptiin signaalinkäsittelijän, joka tekee tarvittavat lopputoimet, kuten väliaikaisten tiedostojen poistamisen [edist/arvos3_0] (2015 ja 2016 ainoastaan vapaaehtoisessa demossa; aikalailla on sellaista käytännön hommaa joka tapauksessa.. ei mitään niikö tenttiasiaa sillai)
  • (?) muistaa apuohjelmia ja keinoja, joilla unix-tyyppisen käyttöjärjestelmän hetkellistä tilaa voidaan tarkastella pääteyhteydellä ja/tai tekstimuotoisella kuorella; kykenee etsimään WWW:stä lisätietoa vastaavien tehtävien suorittamiseen ja arvioimaan kriittisesti ohjeiden laatua ja soveltuvuutta tarpeeseen [edist/arvos3_0] (milläs mittaat tämän toteutumista sitten?)

... käytännön sovellusten osalta (C-kieli, binääritiedostot, kj-kutsut):

  • osaa kääntää valmiita C-ohjelmia ja linkittää objektitiedostoja komentoriviltä GNU-työkaluilla ja suorittaa näin syntyneen ohjelman itsenäisenä prosessina sekä tekstipohjaisen debuggerin kautta [ydin/arvos1_0]
  • (?) osaa selittää vaiheet ja mahdolliset ongelmatilanteet suoritettavan ohjelmatiedoston lataamisessa, dynaamisessa linkittämisessä ja käynnistämisessä [ydin/arvos2_17] (vaiheet tuli 2015 hyvin; ongelmatilanteita ei ehditty paljonkaan)
  • osaa tarkastella minkä tahansa muotoisen tiedoston sisältöä heksavedoksena (hex dump) ja suoritettavan ohjelmatiedoston sisältöä tekstimuotoisen debuggerin disassemblerilla; osaa tehdä arvion todennäköisestä tiedostoformaatista heksavedoksen perusteella (yleisten tiedostojen kohdalla, mm. tekstitiedostot erilaisin merkistökoodauksin, ELF-ohjelmat, Windows-ohjelmat, JPG ja PNG -kuvat, HTML/XML, ZIP-paketit, docx:t, ym.) [ydin/arvos2_18]
  • osaa selittää prosessin virtuaalimuistiavaruuden tyypillisen jaon loogisiin segmentteihin (koodi, data, pino, keko, (käyttöjärjestelmäosio)) sekä antaa esimerkin segmenttien sijoittumisesta avaruuden osoitteisiin [ydin/arvos2_19]
  • osaa lukea, ymmärtää ja muokata lyhyitä (n. 50 riviä kommenttirivien lisäksi) C-kielisiä ohjelmia [edist/arvos3_7]
  • ymmärtää ja osaa selittää ohjelman käynnistämisen vaiheet unix-tyyppisten fork() ja exec() -käyttöjärjestelmäkutsujen tapauksessa [edist/arvos3_8]
  • ymmärtää suorituspinoon päällekkäin allokoitavien aktivaatiotietueiden käytön aliohjelmien parametrien ja paikallisten muuttujien säilytyksessä; osaa soveltaa tätä tietoa tekstipohjaista debuggeria käyttäen ja kykenee näkemään yhteyden aiemmin opitun oliokielen (esim. C#) viitteiden ja rakenteisen, laiteläheisen kielen (esim. C) muistiosoittimina toteutuvien viitteiden välillä [edist/arvos4_5]
  • osaa ohjeita tai esimerkkiä mukaillen hyödyntää ohjelmalle annettuja komentoriviargumentteja ja ympäristömuuttujia omassa C-ohjelmassa sekä omassa bash-skriptissä jonkin toiminnallisen tavoitteen saavuttamiseksi [edist/arvos3_9] (2015 tuli C-ohjelma hyvin, mutta sh ei niinkään; 2016 jäi myös shell aika vähälle.. ehkä hyvä niin)
  • osaa WWW-pohjaista työkalua (lxr) käyttäen paikantaa linux-ytimen uusimman version lähdekoodista jonkin yksinkertaisen käyttöjärjestelmätoiminnallisuuden sijainnin, selvittää sen toteutuksen pääpiirteet lähdekoodin perusteella ja kuvailla nämä suomen kielellä [edist/arvos5_0]

... tieteellisten ja ammatillisten taitojen osalta:

  • pystyy seuraamaan käyttöjärjestelmiin liittyvää ammattikeskustelua esimerkiksi lkml-sähköpostilistalla [edist/arvos3_0]
  • tietää julkaisufoorumeita, joissa käyttöjärjestelmätutkimuksen uusia tieteellisiä tuloksia julkaistaan [ydin/arvos2_0]
  • osaa hakea oman yliopiston tilaamista tutkimustietokannoista kokotekstiartikkeleita käyttöjärjestelmien osa-alueisiin liittyen [edist/arvos3_0]
  • kykenee lukemaan käyttöjärjestelmiin liittyviä tutkimusartikkeleita ymmärtäen ne vähintään johdannon ja johtopäätösten osalta [edist/arvos4_0]
  • kykenee löytämään uusien käyttöjärjestelmiin liittyvien tutkimusartikkelien pohjalta "kuumia aiheita" ja toistaiseksi auki olevia tutkimuskysymyksiä [edist/arvos5_0]
  • kykenee muodostamaan alustavasti käyttöjärjestelmiin liittyvän kanditason tutkimussuunnitelman tai aihe-ehdotuksen ["ultimaattinen tavoite" joka ylittää tämän kurssin sisäiset osaamistavoitteet ja parhaimmillaan muodostaa sillan konkreettisen kandidaattitutkielman puolelle]

Huom. Ohitetaan tarkoituksellisesti mm. seuraavia tärkeitä asioita:

Tällä kurssilla ei käsitellä seuraavia kansainvälisissä sisältösuosituksissa listattuja asioita:

Aiheita käsitellään käyttöjärjestelmiinkin sovellettavissa olevista yleisistä näkökulmista rinnakkaisilla aineopintokursseilla sekä syventävillä jatkokursseilla, mm. Ohjelmistoturvallisuus, Tietoverkkoturvallisuus, Operating System Security 1&2 (sekä muut Informaatioturvallisuus-kurssit), Requirements Engineering, Ohjelmistoarkkitehtuurit, Ohjelmistotestaus, Hajautetut järjestelmät, Introduction to SOA and Cloud Computing, ...

Tuloksena syntyvä taulukkomuoto välttävälle osaamiselle (arvosana 1):

Yrittää mukailla ns. Bloomin taksonomiaa. Taulukko on välttämättä karkea yksinkertaistus yllä mainituista täsmällisistä osaamistavoitteista.

1 muistaa 2 ymmärtää 3 osaa soveltaa 4 osaa analysoida 5 osaa arvioida 6 osaa luoda

Osa-alue "Bloomin taso"
Käyttöjärjestelmän merkitys ymmärtää
Käyttöjärjestelmän perustoiminta ymmärtää
Käyttöjärjestelmän perusrakenne ymmärtää
Keskeytysjärjestelmä ymmärtää
Rinnakkaisuus osaa soveltaa
Tehtävien ajoitus, skedulointi osaa soveltaa
Muistin hallinta ymmärtää
Oheislaitteiden hallinta ymmärtää
Tiedostojärjestelmä ymmärtää
Interaktiivinen tekstikuori osaa soveltaa
Kuoriskriptit ymmärtää
C-kieli ymmärtää