------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 23.3.2001 Tehtävä 1 ------------------------------------------------------------------------- ks. kirja luku 3, esim. kuva 3.6 Stallingsin yleisjaottelu: tunnistus, prosessorin tila, kontrollitietoja Tunnistus (3 p) uid, gid, pid, ppid, pgid Tallealue rekistereille (3 p) PC, PSW Muut rekisterit Prioriteetti (1 p) Määrää paikan mm. Ready-jonossa Prosessin tila (1 p) Ready, Blocked jne. Sivutaulu(n sijainti) (3 p) kopioidaan MMU:n PTR-rekisteriin Laskutustietoa (1 p) käytetty CPU-aika käytetty I/O-aika Tiedostokuvaajataulu (3 p) viitteet prosessin avaamiin tiedostoihin työhakemiston polkunimi Linkkikenttiä PCB liitetty erilaisiin jonoihin. Esim. Ready-jonossa, I/O-laitteen jonossa, jne Perustietojen luetteleminen on vasta puolet tehtävästä. Piti myös selittää milloin kutakin tietoa tarvitaan. Keskiarvo 9.1 ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 23.3.2001 Tehtävä 2 ------------------------------------------------------------------------- ks. kirja luku 3.1 ja kuva 3.7. - tilat selitetty = 7p (1 p per tila) - siirtymät 1p = New 4p = Ready - Run - Blocked 2p = Ready&Suspend - Blocked&Suspend 1p = Exit Keskiarvo 12.7 ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 23.3.2001 Tehtävä 3 ------------------------------------------------------------------------- Rakenneosat: (3 p) TLB: translation lookaside buffer: muutamia rekistereitä (esim. 8 tai 16), joissa pidetään tallessa viimeisimmissä osoitemuunnoksissa käytettyjä tietoja (3/2 p) PTR: page table register, sisältönä suorituksessa olevan prosessin sivutaulun alkuosoite (3/2 p) MMU:hun kuuluu lisäksi ainakin rekisterit MAR (memory address register) ja MBR (memory buffer register) [mainitsematta jättämisestä ei menettänyt pisteitä, mutta saattoi saada 1 p] Osoitemuunnos: (8 p) viitattava virtuaaliosoite sijaitsee MAR-rekisterissä sivu# = virtuaaliosoitteen 35 ensimmäistä bittiä siirtymä = virtuaaliosoitteen 13 viimeistä bittiä (1 p) etsi TLB:stä sivunumeron sivu# tietoja (1 p) jos ei löydy tai TLB[sivu#].validi = 0 (2 p) hae MEM[PTR+sivu#] TLB:hen (1 p) aseta TLB[sivu#].validi = 1 jos TLB[sivu#].present = 0 (2 p) aiheuta sivupuutos (1 p) fyysinen osoite = katenoi(TLB[sivu#].sivutilanumero, siirtymä) MAR = fyysinen osoite tee muistinouto (tutkii cachen ensin) viitattu muistipaikka on nyt MBR rekisterissä b) 4 p Tavallinen sivutaulu: pow(2,35) = 34 359 738 368 alkiota Käänteinen sivutaulu: pow(2,19) = 524 288 alkiota Keskiarvo 4.9. Osattiin siis surkeasti, etenkin kun asia on käsitelty sekä TITO:ssa että KJ-I:ssä. ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 23.3.2001 Tehtävä 4 ------------------------------------------------------------------------- Kukin kohta 3 pistettä. Keskiarvo 9.0 a) Virhetilanteiden hallintaan (poikkeukset), KJ:n palvelupyynnöt, Ulkopuolinen laitteisto voi ilmoittaa ohjaustarpeestaan (1 p) esim. nollallajako -> poikkeus. Sivu, jolla olevaan osoitteeseen viitataan, ei muistissa -> sivunpuutoskeskeytys. Sovellus lukee tiedostosta tavuja -> palvelupyyntökeskeytys. (2 p) b) CPU tutkii jokaisen suorittamansa käskyn lopussa (3/2 p) tilarekisteriä PSW, jossa on bitit keskeytyksiä varten (3/2 p). c) Talleta PSW ja PC pinoon (1 p) Estä uudet keskeytykset ja (1/2 p) Aseta CPU etuoikeutettuun tilaan (1/2 p) Lataa PC:n arvoksi keskeytyskäsittelijän alkuosoite (1 p) d) Kopioi keskeytyskäsittelijän pinoon tallettamat rekisterit takaisin prosessoriin (3/2 p) Suorita IRET-käsky: (3/2 p) -Kopioi PSW ja PC pinosta -Asettaa CPU:n käyttäjätilaan -Sallii keskeytykset (viimeistään tässä vaiheessa e) Rekistereiden arvot kopioidaan pinosta ja CPUsta keskeytyneen prosessin PCB:hen (3/2 p), vuorottaja valitsee uuden suoritettavan prosessin ja kopioi sen PCB:stä rekistereiden arvot CPU:hun (3/2 p) -------------------------------------------------------------------------