Etusivu | -- Materiaali -- | Luennot | Miksi | Ajatuksia |
ITKA203 K�ytt�j�rjestelm�t --- kes� 2007 --- Kirjallinen materiaali ja ohjeistus
Nelj�n opintopisteen (108 tuntia) sis�lt�rajaus
T�ss� on lopullinen versio kirjallisesta materiaalista, joka kurssilla k�ytiin l�pi kes�ll� 2007. Jotakin on j�tetty pois, ja joitakin kohtia on t�smennetty aiemmasta. Kiit�n kaikkia, jotka ovat antaneet rakentavaa palautetta ja esitt�neet pyynt�j�.
Tenttit�rpeist� ilmenee oppimistavoitteet:
- Mahdolliset tenttikysymykset, joista tulee 24 pisteen verran valintoja per kerta.
Luentomoniste on perusrunko my�s kes�ll� 2007:
- Jarmo Ernvall: K�ytt�j�rjestelm�t (myynniss� Kampus Kirjassa). Monisteesta soveltuvat sivut 1-5 ja 21-64. Muiden osioiden sijasta kokeillaan kes�ll� 2007 uusia prujuja (ks. seuraavat kohdat).
- Prosessorista (HTML) | Prosessorista (PDF) : Prosessorin toiminta, konekielen suoritus, virtuaalimuistin k�ytt�, aliohjelman kutsuminen ja suoritus; esimerkkin� x86-64 -arkkitehtuuri. Luentomonisteen luvut 2 ja 3 korvaava materiaali. Liittyy tiiviisti harjoitusty�h�n.
- Monisteen lopussa oleva Unix-shell-ohjelmointiosuus korvataan k�yt�nn�n esimerkeill� Bourne Shellill� demo4:n materiaalissa (ks. alla)
- Luentomonisteen lopussa oleva harjoitusty�ohje korvataan hieman erilaisella (ks. alla)
- Luentomuistiinpanoja (HTML) | Luentomuistiinpanoja (PDF) : Prujautin luennoilla puhelemistani asioista muistiinpanoja samalla kun puhelin. Tuolla saattaa olla seassa joitakin asioita, joita ei ole kahdennettu luentomonisteessa (ainakaan ihan samoilla sanoilla)
Demoissa ja harjoitusty�ss� l�pik�yty materiaali kuuluu my�s kurssiin:
- Demo 1: demo1.html PDF-versio: demo1.pdf. Skriptikoodi ja lisukkeet demo1.zip (Shellin ja unix-ty�kalujen perusteet)
- Demo 2: demo2.html PDF-versio: demo2.pdf. Koodipaketti demo2.zip (C-ohjelmointi)
- Demo 3: demo3.html PDF-versio: demo3.pdf. Koodipaketti demo3.zip (Systeemiohjelmointia ja k�ytt�j�rjestelm�n toiminnan havainnollistusta)
- Demo 4: demo4.html PDF-versio: demo4.pdf. Skriptikoodi ja lisukkeet demo4.zip (Lyhyesti shell-skripteist�)
- Harjoitusty�:
harkkaohje.html PDF-versio: harkkaohje.pdf.
- C-osuus malliharjoitusty�st�: malliharkka.c.
- GDB-osuus malliharjoitusty�st�: malliharkka_ajo.txt
- "Valmis" malliharjoitusty�: malliharkka_valmis.txt
Luennoilla esitellyt esimerkkiohjelmat valaisevat teoriaa:
- MunOhjelma.java
- bytes_to_bits.c
- minish.c (minimalistinen shell)
- sigesim.c (IPC: signaalit)
- chattomyself.c (IPC: send ja receive)
- Alkup., josta thread_nosem.c (ongelmallinen) ja thread_sem.c (ratkaistu) (s�ikeet, semaforit)
- Deadlock.java (lukkiutuminen, Sunin Java-s�ieohjelmointi -introsta)
- Huomaa my�s demoissa olleet esimerkit, joita en listaa t�ss� erikseen
Yll�oleva materiaali on siis kurssin t�m�nkertainen aiherajaus. Alla on lis�tietoa, kirjallisuutta ja nettilinkkej�.
Kirjallisuutta / Reference material
Olen 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. Kirjallisuusviitteet on kopioitu luentomonisteesta. Googlella l�ysin joitakin linkkej� kirjojen kotisivuihin.
On otettava huomioon, ett� nelj�n opintopisteen kurssiin ei voi mahtua kuin pintaraapaisu siit�, mit� esim. noissa oppikirjoissa kerrotaan todellisesta maailmasta.
K�ytt�j�rjestelmist� / About operating systems
- William Stallings: Operating Systems: Internals and Design Principles -- luentomoniste pohjautuu suurelta osin t�h�n kirjaan.
- 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... aina t�m� Aku Ankan voittaa?) Vanha kunnon "Tietotekniikan perusteet" on mielest�ni hyv� lis�materiaali. Siit� niin sanotusti "kerrattiin" joitakin hy�dyllisi� esitietoja t�ll� kurssilla.
- 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.
N�k�j��n atk-keskuksen (edesmenneet) koneet
tukki
jakanto
olivat Sparceja. Mikroluokissa, t�iss� ja kotona meill� useimmilla lienee x86-prosessori kuten Pentium. - 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, kun viimeksi pidin K�ytt�j�rjestelm�t. Ne liittyv�t aihepiireihin, joita k�yd��n luennolla l�pi jossakin j�rjestyksess� my�s kes�ll� 2007.
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
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 suoria linkkej� J. Ernvallin kirjoittamaan materiaaliin sek� nettil�hteisiin, joihin aiemmilla kurssikerroilla on ollut linkkej�. En tied� viel�, onko 8086 se arkkitehtuuri, jota kes�ll� 2007 k�ytet��n esimerkkin�. Voi olla; voi olla ett� ei... ja joka tapauksessa tarkemmin ajatellen prosessori kuin prosessori on abstraktisti ajateltuna vain joku prosessori; ei ne niin kovin erilaisia ole.
- Avustusta; printf ja muuta I/O:ta
- Avustusta; char-taulukko
- Avustusta; int-taulukko
- Avustusta; C:n bittioperaatiot ja 8086-k�skyj�
- Avustusta; enter
- 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 l�hdemateriaali
- alan lehti� ja kongresseja
Vastaavan aiheen opetusta muualla maailmalla
K�ytt�j�rjestelm�t ovat elimellinen osa informaatioteknologiaa. Niinp� sit� 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:
- 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 2007-07-31.