Etusivu | -- Materiaali -- | Luennot | Opettajat |
ITKA203 K�ytt�j�rjestelm�t --- kev�t 2014 --- Kirjallinen materiaali ja ohjeistus
Nelj�n opintopisteen (108 tuntia) sis�lt�rajaus
Materiaalin kehitys tapahtuu julkisessa repossa yousourcessa. T�ll� sivulla julkaistaan kev��n 2014 versiot materiaalista, eli mm. tenttit�rpit ja "yhten�isemm�t" prujut, sitten kun ne ovat kev��n mieless� valmiita. Lis�ksi kurssin sis�lt��n kuuluu olennaisina osina my�s k�yt�nn�n harjoitteet ja luennoilla n�ytetyt esimerkkiohjelmat, joiden listaaminen prujun osana ei olisi tarkoituksenmukaista.
P��asiallinen kirjallinen materiaali:
Tenttit�rpeist� ilmenee oppimistavoitteet:
- Mahdolliset tenttikysymykset, joista tulee 24 pisteen verran valintoja per kerta.
Kuten meill� kaikessa, tekem�ll� oppii parhaiten tai ainakin hyvin. Siksip� on demoja eli hands-on teht�vi�. Ensiksikin pakolliset demot, joiden ultimaattinen deadline on ensimm�iseen tenttip�iv��n menness�:
- Demo 1: sormet unixiin
- Demo 2: sormet C:hen
- Demo 3: v�lipala ja ensimm�inen skripti
- Demo 4: Hieman edistyneempi skripti (viimeinen pakollinen demo)
Lis�ksi on vapaaehtoisia demoja, joista saa maksimissaan 6p hyvityst� tenttiin. Tenttikysymyksist� on silti saatava puolet pisteist� (12/24), ett� suoritus hyv�ksyt��n. Sama deadline kuin pakollisissa. N�iden teht�vien tarkoitus on toisaalta avartaa aihealuetta hieman pakollisen perussis�ll�n ulkopuolelle, ja toisaalta tukea lis�tekemisen kautta perussis�lt��n kuuluvien asioiden ymm�rt�mist�. Teht�vien pisteytys on ty�m��r�arvion mukainen (1-2p):
- Demo 5: "Vaarallisia ohjelmia"; vapaaehtoinen (1p)
- Demo 6: "Edistynyt skripti"; vapaaehtoinen (1p)
- Demo 7a:"Debugger-miniharkka"; vapaaehtoinen, vaihtoehtoinen, assembler -track (2p)
- Demo 7b:"Tutkimuskatsaus"; vapaaehtoinen, vaihtoehtoinen, tutkimus -track (1p)
- Demo 7c:"Toteutuskatsaus ";vapaaehtoinen, vaihtoehtoinen, implementaatio -track (1p)
- Demo 8: "Tuunaa tenttisi"; vapaaehtoinen (1p)
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 seitsem�nteen 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� sekalaiset linkit ovat kertyneet 2005, 2007 ja 2011 K�ytt�j�rjestelm�t -kurssin ilmentymi� pit�ess�ni. Ne liittyv�t aihepiireihin, joita k�yd��n luennolla l�pi jossakin j�rjestyksess� my�s nyt. Osa linkitetyist� sivuista on varmaan poistunut vuosien varrella; kaikenlaisia korjauksia saa etsi� ja ehdottaa.
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
T�ss� muutama linkki erilaisiin shelleihin:
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 @ Lappeenranta -- 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 2014-08-26.