Etusivu | Materiaali | -- Luennot -- | About us |
ITKA203 Käyttöjärjestelmät --- kesä 2011 --- Luennot ja muistiinpanot
Alla on lista suunnitelluista otsikoista ja käsiteltävistä aiheista. Mukailtaneen kesän 2007 kulkua. Luennolla näytettyyn materiaaliin tulee linkit sitä mukaa kun kesä 2011 avautuu. Huom: Kyseessä on suunnitelma, ja toteuma voi olla erilainen.
# | vko | pv | Otsikko | Aiheet |
---|---|---|---|---|
1 | 21 | ti | Käynnistys | Käynnistys: Kurssi-info, johdattelua ja motivointia, esitietoja. Visuaalisia efektejä ja syntetoitu ääniraita. |
2 | 21 | ke | Mikä on tietokone | Kerrokset käyttäjän ja laitteiston välissä. Tiivistys tietokoneen rakenteesta, Von Neumann -arkkitehtuuri, käskykanta, nouto-suoritussykli yksinkertaisimmillaan. |
3 | 21 | to | Ohjelmointi ja ohjelmat | Ohjelmointikielet, kääntäjät, kirjastot, virtuaalikoneet, emulaattori. |
4 | 22 | ti | Ohjelman suoritus | Esimerkkiarkkitehtuuri x86-64, esimerkkejä konekielisistä käskyistä, ohjelman virtuaalinen muistiavaruus, osoitteenmuodostus, kutsupino, aliohjelma-aktivaatio (alustavasti). Havaintoja käyttöjärjestelmältä vaadituista ominaisuuksista. |
5 | 22 | ke | Prosessit 1/4 | Aliohjelma-aktivaatio ja suorituspinon käyttö (täydennystä), parametrien ja paluuarvon välitys x86-64:ssä. Prosessorin konteksti, prosessi. Keskeytys. |
6 | 23 | ti | Prosessit 2/4 | Prosessien luonteesta ja käyttöjärjestelmän tietorakenteista, joita prosessien hallitsemisessa tarvitaan. Prosessielementti, Ready-jono. Yksinkertainen vuoronnusperiaate jonottamalla. Ohjelmoitu keskeytys. Käyttöjärjestelmän kutsurajapinta, esimerkki käyttöjärjestelmäkutsusta. |
7 | 23 | ke | Prosessit 3/4 | FLIH; esim. x86-64. keskeytykset ja prosessien tilasiirtymät tarkemmin. Prosessitaulu. Prosessin luonti, käyttöjärjestelmäkutsu fork(). Shellin toimintaperiaate. Prosessien vuorottelu. Prosessien kommunikointi. Säie. |
8 | 24 | ti | Prosessit 4/4 | Prosessien kommunikointitapoja. Synkronointi. Kriittinen alue, poissulku. Tuottaja-kuluttaja -ongelma ja ratkaisu. |
9 | 24 | ke | Muistinhallinta | Edellistä: deadlock-tilanne. Uutta: Muistinhallinta ja sivuttava virtuaalimuisti. Osoitteenmuodostus yleisesti ja esimerkkinä myös x86-64. Muistihierarkia (rekisterit, välimuistit, keskusmuisti, levy). Sivut ja sivujen hallinnan tietorakenteet: sivutaulut ja kehystaulu. Sivunvaihtokeskeytys. LRU-valintamenettely. |
10 | 25 | ti | Tiedostojärjestelmät | I/O laitteet, levyt, ajurit, tiedostojärjestelmät. |
11 | 25 | ke | Skripteistä | Shell-skriptit, päämääriä ja huomioitavaa. |
12 | 26 | ti | Erinäisiä seikkoja | Java-virtuaalikoneen tavukoodi ja disassembly, metodin suoritus "konekielitasolla" Javassa. Kirjastot ja linkittäminen. Vuoronnusmenettelyjä. Kovalevyn vuorontamisesta. Reaaliaikajärjestelmistä. |
13 | 26 | ke | Suunnittelusta | Hiukan palautetta demoista ja otteita vastauksista. Katsaus käyttöjärjestelmien ja tietokonelaitteistojen historiaan. Käyttöjärjestelmän suunnitteluun liittyviä tavoitteita ja vaihtoehtoja. Yleisarkkitehtuuri Unix / Linux / Windows -käyttöjärjestelmissä. |
14 | 26 | to | Lopputoimet | Yhteenvetoa, kertausta, paikkailua ja tenttitärppejä. |
Alle tulee tarkemmat luentomateriaalit kurssin edetessä, ml. linkit videotaltiointeihin ja esimerkkiohjelmiin.
Luento 1: Käynnistys
-- takaisin luentolistaan --Materiaalit
Linkkejä
- Instanssi - tapahtuma, joka tuli ohimennen mainittua
Luento 2: Mikä on tietokone
-- takaisin luentolistaan --Materiaalit
- Muistiinpanot
- Tietotekniikan perusteet -luentomoniste (otettiin poimintoja sivuilta 1-70).
- Videot (saman sivun allehan nämä kaikki näköjään tulee...)
Linkkejä
- Linux kernel
- the Linux Cross Reference On-line -työkalu linuxin koodin selailuun
- Pieni "kartta", josta voi ottaa suuntaa koodien tutkimisessa. Tämä on osa isompaa nettijulkaisua.
Luento 3: Ohjelmointi ja ohjelmat
-- takaisin luentolistaan --Materiaalit
- Muistiinpanot
- Tietotekniikan perusteet -luentomoniste (hiukan palattiin vielä tähän).
- Videot
Esimerkkiohjelmat
- Hei, maailma! Javalla HeiMaailma.java ja C:llä heimaailma.c
- Hei, kaikki! Javalla HeiKaikki.java ja C:llä heikaikki.c
- C-kielisen ohjelman assembler-käännös heikaikki.s
- C-ohjelma, joka käyttää aliohjelmakirjastoa "libm" heimatikka.c
Linkkejä
- JPC "The Pure Java x86 PC Emulator"
Luento 4: Ohjelman suoritus
-- takaisin luentolistaan --Materiaalit
Esimerkkiohjelmat
- Hei, kaikki! Javalla HeiKaikki.java ja C:llä heikaikki.c
- C-kielisen ohjelman assembler-käännös heikaikki.s
Luento 5: Prosessit 1/4
-- takaisin luentolistaan --Materiaalit
Esimerkkiohjelmat
- Vielä kerran sama esimerkki C:llä heikaikki.c
- Ja assembler-käännös heikaikki.s
Luento 6: Prosessit 2/4
-- takaisin luentolistaan --Materiaalit
Esimerkkiohjelmat
- Ja yhä tämä aiempi esimerkki C:llä; nyt sisältää aliohjelman, joka kutsuu aliohjelmaa ja palauttaa paluuarvon heikaikki.c
- Assembler-käännös heikaikki.s näyttää nyt, kuinka paluuarvo jätetään sovittuun rekisteriin RAX, josta kutsuva ohjelmaosio saa sen käyttöönsä.
- Ohjelma pois.c, jossa on pari erilaista tapaa prosessille saada itsensä lopetettua. Huomaa että tietenkin suoritus loppuu siihen tapaan, joka lähdekoodissa nyt sattuu olemaan ensimmäisenä.
- Ohjelma minish.c, jota tutkaillaan vähän myöhemmin lisää. Tänään tämä vedettiin häthätää pelikentälle esimerkkinä ohjelmasta, joka sattuu odottamaan syötettä käyttäjältä (ei tarvii vielä tänään kummemmin miettiä tätä ohjelmaa.)...
Linkkejä
- Lista Linuxin järjestelmäkutsuista (parempi linkki kuin luennolla vilautettu)
Luento 7: Prosessit 3/4
-- takaisin luentolistaan --Materiaalit
Esimerkkiohjelmat
- Minimaalinen shell minish.c -- esimerkki prosessin luonnista unixissa.
- Esimerkki signaaleista sigesim.c
- Esimerkki viesteistä chattomyself.c
Linkkejä
- Lest We Remember ... ohimennen mainittu video, jossa demonstroidaan muistin säilymistä virran katkaisemisen jälkeen
Luento 8: Prosessit 4/4
-- takaisin luentolistaan --Materiaalit
Esimerkkiohjelmat
- Esimerkki signaaleista sigesim.c
- Esimerkki viesteistä chattomyself.c
- Esimerkki jaetusta resurssista ja ongelmasta thread_nosem.c (esimerkki käyttää ns. POSIX-säiekirjastoa ja semaforia kerroksena Linuxin ytimen päällä; semaforin idea kuitenkin näyttäytyy normaalisti)
- Esimerkki jaetusta resurssista ilman ongelmaa thread_sem.c (esimerkki käyttää ns. POSIX-säiekirjastoa ja semaforia kerroksena Linuxin ytimen päällä; semaforin idea kuitenkin näyttäytyy normaalisti)
- "Sattuu sitä paremmissakin piireissä" (Windowsin dialogi-ikkuna MaB-salin tietokoneella luennon päätyttyä)
Luento 9: Muistinhallinta
-- takaisin luentolistaan --Materiaalit
- Muistiinpanot
- Ruokailevat nörtit - Deadlock
- Piirros prosessien tiloista, muistin sivutuksesta ym.
- Videot
Linkkejä
Luento 11: I/O ja tiedostojärjestelmät; Skriptit
-- takaisin luentolistaan --Materiaalit
Esimerkkiohjelmat
- Esimerkki huonosta skriptistä latin9_to_utf8.sh (huono, koska ei tarkista erityistilanteita kuten tiedostojen olemassaoloa; tekee myös väliaikaistiedostot oleskeluhakemistoon... mutta tämä teki viime viikolla kertaalleen nopsasti sen mitä piti eli muunsi tietyt tekstitiedostot merkistöstä toiseen...)
- Esimerkki ihan vähän paremmasta skriptistä latin9_to_utf8_paremmin.sh (pari tarkistusta enemmän ja väliaikaiset tiedostot siellä missä pitääkin, jonkinlainen yritelmä estää tiedostojen tuhoutuminen skriptin peräkkäisellä käytöllä samaan tiedostoon)
Linkkejä
Luento 12: Erinäisiä seikkoja
-- takaisin luentolistaan --Materiaalit
Esimerkkiohjelmat
- Simppeli Java-ohjelma LaskunToimittaja.java sekä javap-työkalulla tehty symbolinen tavukoodikäännös molemmista luokista: LaskunToimittaja.disassembly ja Laskija.disassembly
Linkkejä
Luento 13: Suunnittelusta
-- takaisin luentolistaan --Materiaalit
- Muistiinpanot
- Videot
- Huomioita demosta 1 demo1_palautetta.txt
- Pari kuvaa suoraan Stallingsin kirjasta, kaiken uhalla otettu käyttöön: f01.pdf f13.pdf f14.pdf f15.pdf f16.pdf f18.pdf
Linkkejä
- alan lehtiä ja kongresseja. Googlettamalla löytyy varmasti lisää.
Luento 14: Lopputoimet
-- takaisin luentolistaan --Materiaalit
- Muistiinpanot
- Videot
- Toiseksi viimeinen versio materiaalista ja tenttikysymyksistä.
Viimeksi kajottu 2011-06-30.