Etusivu | -- Materiaali -- | Luennot | About us |
ITKA203 Käyttöjärjestelmät --- kesä 2011 --- Kirjallinen materiaali ja ohjeistus
Neljän opintopisteen (108 tuntia) sisältörajaus
Tenttitärpeistä ilmenee oppimistavoitteet:
- Mahdolliset tenttikysymykset, joista tulee 24 pisteen verran valintoja per kerta.
Pääasiallinen kirjallinen materiaali:
- Materiaali v. 0.99, tekstit ja kuvat koko alueelta -- tämä on nyt mielestäni käyttökelpoinen; ilmoitelkaa, jos olette jostain kohdasta eri mieltä, niin korjataan tai täydennetään sitten!
Kuten meillä kaikessa, tekemällä oppii parhaiten tai ainakin hyvin. Siksipä on demoja eli hands-on tehtäviä:
- Demo 1: sormet unixiin
- Demo 2: sormet C:hen
- Demo 3: sormet skripteihin
- Demo 4: harjoitustyö
- "Demo 5:" käy läpi tenttikysymykset :).
Lisäksi luennoilla tullaan esiteltiin esimerkkiohjelmia:
- (toistaiseksi katso luentosivun alta)
Alla on lisätietoa, kirjallisuutta ja nettilinkkejä.
Kirjallisuutta / Reference material
Olen edelleenkin sitä mieltä, että mikään ei korvaa kunnon oppikirjaa. Kovakantinen on kallis, mutta se on sijoitus tulevaisuuteen (ja näyttää hyvältä hyllyssä). Luentomoniste on aina väistämättä referaatti ja paikallinen tulkinta. Käyttöjärjestelmistä kertovia kirjoja on paljon; seuraavassa on muutamia hyviä poimintoja (kopsittu aiemmilta kurssikerroilta; uudemmat painokset ovat varmasti jo saatavilla).
On otettava huomioon, että neljän opintopisteen kurssiin ei voi mahtua kuin pintaraapaisu siitä, mitä esim. noissa oppikirjoissa kerrotaan todellisesta maailmasta. Tällä kurssilla toivottavasti saa pienen alkusysäyksen, joka helpottaa asian varsinaista opiskelua siinä vaiheessa kun se tulee tarpeelliseksi työtehtävien tai oman kiinnostuksen vuoksi.
Käyttöjärjestelmistä / About operating systems
- William Stallings: Operating Systems: Internals and Design Principles -- tämäkin kurssikerta pohjautuu suurelta osin tähän kirjaan, tosin toiseksi viimeiseen eli kuudenteen painokseen.
- Andrew S. Tanenbaum: Modern Operating Systems
- Ilkka Haikala ja Hannu-Matti Järvinen: Käyttöjärjestelmät
- Avi Silberschatz, Peter Baer Galvin ja Greg Gagne: Operating System Concepts
- ... and so on, search the library database using the keyword 'operating system' ...
Unixista / About Unix
- Bach: The Design of the UNIX Operating System
- Beck: Linux kernel internals
- ... and so on, search using the keyword 'unix' ...
Windowsista / About Windows
- Custer: Inside Windows NT
- ... and so on ...
+ Sivistävää iltalukemista
Seuraavat dokumentit ovat vapaasti saatavilla netistä:
- Tietotekniikan perusteet -luentomoniste (jos kesällä jää luppoaikaa...)
- Intel Pentium -prosessorin manuaalit ("hardcore"...) -- Huolella kirjoitettua teknistä dokumentaatiota (edelleen sarjaa "jos jää luppoaikaa"). Tätä aikansa silmäilemällä ymmärtää jo aika paljon tietokoneen sielunelämästä. Muistit, prosessorin toimintatilat ja rekisterit, kaikki konekieliset käskyt ja kuinka ne muutetaan bittikoodiksi...
- SPARC -prosessoriarkkitehtuurin kuvaus ("hardcore"...) -- vertailun vuoksi toinen manuaali. Ei prosessori vaan arkkitehtuuri sellaiselle. Mikroluokissa, töissä ja kotona meillä useimmilla lienee kuitenkin nykyään x86-jatkumon prosessori. Useimmissa kännyköissä sen sijaan varmaankin tikittää nykyisellään ARMin prosessori; senkin manuaalit löytynevät valmistajan nettisivulta Support-osion alta.
- The Java Virtual Machine Specification kertoo miten Java-virtuaalikone toimii. (myös hiukan HC, mutta ei liene paha hieman silmäillä tätäkin joskus kun kaipaa jotain kivaa tekemistä)
Linkkejä
Nämä linkit kertyivät kesällä 2005 ja 2007, kun pidin Käyttöjärjestelmät -kurssia. Ne liittyvät aihepiireihin, joita käydään luennolla läpi jossakin järjestyksessä myös kesällä 2011. Osa linkitetyistä sivuista on varmaan poistunut vuosien varrella, eli kesällä 2011 etsitään mahdollisesti korvaavat linkit sitä mukaa kuin aiheet tulevat luennolla vastaan:
Kokonainen käyttöjärjestelmä lähdekoodina
Okei, tämä on vain käyttöjärjestelmän ydin eli "kernel" ...
- Linux kernel
- Pieni "kartta", josta voi ottaa suuntaa koodien tutkimisessa. Tämä on osa isompaa nettijulkaisua.
Lisätietoa muutamista käyttöjärjestelmän osista
- Hieman tietoa tiedostojärjestelmistä
- Linux-muistinhallinnasta
- Toinen juttu sivutetusta virtuaalimuistista -- osa jonkinlaisesta assembler-aiheisesta weppijulkaisusta
Laitteistosta
- Tyypillisen nykyprosessorin kuva: http://www.activewin.com/reviews/hardware/processors/amd/athlonxp2200/index.shtml
- Jonkinlainen kuva kovalevyn rakenteesta
Emulaattoreita
Säikeistä ja yhdenaikaisohjelmoinnista (concurrent...)
Shell-ohjelmoinnista
Oletusarvoisesti C-shell on se interaktiivinen shell, jota porukka meillä käyttää. Sen voi vaihtaa, ja jostain syystä minä käytän bashiä kun joskus olen siihen tottunut. Shell-skriptejä tullaan opiskelemaan käyttäen esimerkkinä joko C-shelliä tai bashiä. Paljon käyttävät maailmalla molempia ja myös muita.
Tekstieditointia mm. Unixeissa
Mm. ohjelmointi on tekstin eli lähdekoodin editointia. Tässä on linkkejä sellaisiin tekstieditorityökaluihin, jotka yleensä löytyvät Unix/Linux-koneiden perusasennuksista. Jos sinulla ei ole kokemusta, suosittelen, että editoit nanolla (ei hajoa pää heti alussa):
- GNU Nano - The Text Editor
- Nano on itse asiassa "vapaa Pico" ...
Yllä mainitut ovat helppoja ja siksi hyviä aloittelijalle. Nano näyttää olevan asennettu JY:n Tietohallintokeskuksen Linux-koneisiin, joita me kaikki voidaan käyttää (ja ainakin tällä kurssilla käytetään). Mutta sitten kun/jos sinulla on kokemusta, sinulla ei ole vaihtoehtoja vaan on siirryttävä eteenpäin:
- EmacsWiki , lähtökohta tekstieditointiin Emacsilla.
- Vastaava Vi-improved -editorille
- Hieman Emacsin ja Vi-improvedin välistä vertailua
Myös nämä löytyvät THK:n tarjoamilta suorakäyttökoneilta. Vi-editori itse asiassa löytyy suurin piirtein maailman jokaisesta Unix-koneesta. Se on myös tehokas ja kätevä, sanovat aktiivikäyttäjät. Minä osaan kirjoittaa rivejä Vi-improvedilla, tallentaa tekstin ja poistua ohjelmasta. En juuri muuta sillä osaakaan... Vi on osittain vähän työläs hahmottaa... Emacsissa on kaikki, mitä voin kuvitella tarvittavan tekstinkäsittelyyn. Jos voisin kuvitella jotain muuta tarpeellista, voisin periaatteessa laajentaa Emacsia tekemään juuri sen. Mutta editorin valinta on näitä subjektiivisia makuasioita! Ymmärtääkseni kuitenkin nörtti osaa joko Emacsin tai Vin käytön tai se ei ole oikea nörtti. Windowsilla tekstiä voi editoida myös esimerkiksi ConText-ohjelmalla, joka on asennettu ainakin Agoran mikroluokkiin.
Aiempien kurssikertojen linkkilistaa
Tässä on joitain sekalaisia nettilähteitä, joihin aiemmilla kurssikerroilla on ollut linkkejä.
- eräs 8086 assemblertutoriaali
- Systems Design and Programming -- ulkomainen kurssimateriaali, jossa on mukana hyviä x86 -selityksiä
- Programming from the Ground Up by J. Bartlett -- ohjelmoinnin oppikirja, joka lähtee liikkeelle "oikeasta suunnasta" eli tyvestä puuhun.
- C++
- Stallingsin oppikirjan lisämateriaaleja (5. painos)
- Stallingsin oppikirjan lisämateriaaleja (6. painos)
- alan lehtiä ja kongresseja. Googlettamalla löytyy varmasti lisää.
Vastaavan aiheen opetusta muualla maailmalla
Käyttöjärjestelmät ovat elimellinen osa informaatioteknologiaa. Niinpä asiaa opetetaan joka paikassa. Alla on yhden Google-session antama lista muiden oppilaitosten järjestämistä vastineista. Ehkä se auttaa suhteuttamaan aiheen tärkeyttä, ja ehkä kurssien painotuserot auttavat näkemään, miten monta muuta asiaa käyttöjärjestelmiin liittyy (suurin osa linkeistä on tottakai rikkoutunut neljässä vuodessa, mikä paikattaneen jossain vaiheessa kesää 2011 uudella Google-sessiolla):
- Machine Structures @ University of California, Berkeley
- Operating System Engineering @ Massachusetts Institute of Technology -- nämä tekevät harjoitustyönä oman käyttöjärjestelmän; me ei kesällä ihan ehditä samaan ... no joo, tuo onkin näköjään jatko-opiskelijoille suunnattu kurssi. MITläiset aloittavat ilmeisesti kurssista Computation Structures ja jatkavat kurssilla Computer System Engineering sekä Laboratory in Software Engineering . Meidän ITKA203:n sisältö on jotakuinkin pehmennetty ja pyöristetty hybridi kahdesta ensiksimainitusta tasolla, joka on mahdollinen täysin ilman tuollaisen kolmanneksi mainitun ameriikankurssin pohjia; meillä projektityö ajoittuu myöhempään vaiheeseen opintoja kuin mihin Käyttöjärjestelmät on suunniteltu.
- Käyttöjärjestelmät 1 @ Helsingin yliopisto -- Etelän immeisillä on esitietokursseina Tietokoneen toiminta ja sikäläinen "ohjelmointi 1". Meidän ITKA203 on jotakuinkin pehmennetty ja pyöristetty hybridi noista kahdesta hesalaisten nimikkeestä.
- Operating Systems and Concurrent Programming @ Helsingin Teknillinen Korkeakoulu, esitietoina Computer Architecture ja kaksi kurssia ohjelmointia. Arvatenkin meidän ITKA203 on pehmennetty ja pyöristetty ...
- Käyttöjärjestelmät @ Tampereen Teknillinen Yliopisto -- vastaa jonkin verran meikäläistä lähestymistä ainakin luento-otsikoiden perusteella (syksyn 2006 otsikot näköjään poistettu sittemmin...). Meillä kuitenkin hieman pehmennetympi ja pyöristetympi, ja lisäksi sisällytämme unix-shell -intron ITKA203:een, kun ei sitä muissa pakollisissa kursseissamme taida olla. Meidän lähestyminen on myös vähemmän "matemaattinen" ja vähemmän KJ:n algoritmeihin keskittyvä kuin Tampereella.
- Käyttöjärjestelmät @ Lahti -- ehkä jopa lähempänä meikäläistä lähestymistä (miinus se unix-shell)
- Tietokonejärjestelmät @ Joensuu -- tässä listassa mainituista kaikkein lähimpänä meidän kurssia (sisältää jopa sitä shell-käyttöä). Joensuun nettisivu sisältää muuten näköjään linkin meidän Tietotekniikan perusteisiin, jonka taisin tuossa ylempänä luvata lisämateriaaliksi myös kesäkurssilla. Joudumme tästäkin pehmentämään ja pyöristämään ihan siksi, että meillä tähän on mitoitettu vain 4 op eikä Tietotekniikan perusteet ole nykyään pakollinen (eli ei voi olettaa pohjatiedoksi vaan joutuu "kertaamaan" tätä samalla kun käydään varsinaista Käyttöjärjestelmät -sisältöä. (Harmi sinänsä, mutta se on pedagogis-poliittinen kysymys, josta minä olen toistaiseksi ihan hiljaa ja olen täällä vain töissä...)
- Introduction to Operating Systems @ The Chinese University of Hong Kong.
- ... ja niin edelleen ... joka paikassa tämä kuuluu ohjelmaan eikä paljon toinen toisestaan eroa ...
Viimeksi kajottu 2011-07-02.