------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 24.8.2001 Tehtävä 1 ------------------------------------------------------------------------- Ks. mm. kirja s. 62 - (3 p) keskeytysmekanismi, prosessin tilan tallennus - (2 p) kello (aikaviipaleet) - (4 p) etuoikeutetut käskyt, etuoikeutettu/käyttäjätila - erityisesti I/O (mahd. mm tiedostojensuojauksen!) - (3 p)muistinsuojaus (MMU, osoitemuunnos&tarkistus) Jos vain mainittu, mutta ei selitetty miksi tarvitaan tai kuinka toimii sai vain 1p per kohta. ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 24.8.2001 Tehtävä 2 ------------------------------------------------------------------------- Erikokoisilla lohkoilla on omat listansa 256K, 128K, 64K, 32K, 16K, 8K ja 4K Siis 7 erillistä listaa (2 p) Varattava 5K: ------------ Koska mahdollisimman sopivan kokoista (eli 8K:n) aluetta ei ole, jaetaan isompia pienemmiksi 256K -> tyhjä 128K -> 128K osoitteessa 128 64K -> 64K osoitteessa 64K 32K -> 32K osoitteessa 32K 16K -> 16K osoitteessa 16K 8K -> 8K osoitteessa 8K 4K -> tyhjä Varaa 8K osoitteesta 0, pirstoutumiselle jää 3K Varattava 25K: -------------- Koska 32K listassa on alkio osoitteessa 32K, varataan se, pirstoutumiselle jää 7K Varattava 35K: ------------- Koska 64K listassa on alkio, varataan se, pirstoutuminen vie 29 K Varattava 20K: ------------- Koska 32K listassa ei ole alkioita, jaetaan 64K alue pienemmäksi. Koska niitäkään ei ole, jaetaan 128K:n alue kahdeksi 64K:n alueeksi. Niistä pienemmässä muistiosoitteessa oleva (osoitteessa 128K) jaetaan edelleen kahdeksi 32K:n alueeksi. Varataan pienemmässä muistiosoitteessa oleva. Sisäinen pirstoutuminen syö 12K. 256K -> tyhjä 128K -> tyhjä 64K -> 64K osoitteessa 192K 32K -> 32K osoitteessa 160K 16K -> 16K osoitteessa 16K 8K -> 8K osoitteessa 8K 4K -> tyhjä Tehtävässä olevien varausten jälkeen jää vapaaksi ylläolevat 4 aluetta, joiden osoitteet myös annettu (8 p) Pirstoutumiseen hukkautui 3K + 7K + 29K + 12K = 51K ( 2p) ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 24.8.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) Osoitemuunnos: (6 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 (1 p) hae MEM[PTR+sivu#] TLB:hen (1 p) aseta TLB[sivu#].validi = 1 jos TLB[sivu#].present = 0 (1 p) aiheuta sivupuutos (1 p) fyysinen osoite = katenoi(TLB[sivu#].sivutilanumero, siirtymä) MAR = fyysinen osoite tee muistinouto (tutkii cachen ensin) Viitatun muistipaikan sisältö on nyt MBR rekisterissä. b) 3 p 8K = pow(2,13) Tavallinen sivutaulu: pow(2,35) = 34 359 738 368 alkiota Käänteinen sivutaulu: pow(2,19) = 524 288 alkiota ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 24.8.2001 Tehtävä 4 ------------------------------------------------------------------------- Kaavio, jossa on 7 tilaa, ks. kirja luku 3.1 ja kuva 3.7 (3ed) tai kuva 3.8 (4ed) - selitetty mitä kukin tila tarkoittaa = 5p (new+exit, run, ready, blocked, suspend-tilat) - siirtymät 1p = New 3p = Ready - Run - Blocked 2p = Ready&Suspend - Blocked&Suspend 1p = Exit ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 24.8.2001 Tehtävä 5 ------------------------------------------------------------------------- a) Koska yhden luvun käsittely vie aikaa (5 p) 350 ms + 100000 * 0.0001 ms + 350 ms = 800 ms, niin 100 luvun käsittely vie aikaa 80 sek. Kokonaisajasta CPU käyttää laskemiseen 10 sek, joten laskentaan käytetään (CPU:n käyttöaste) 10 / 80 = 0.125 eli 12.5 % kokonaisajasta b) (5 p) 1 2 3 4 100 lue *** *** *** *** *** laske * * * * * kirj *** *** *** *** *** Kunkin luvun käsittelyn yhteydessä CPU odottaa toimettomana 350 ms (eli kunnes luku on saatu luettua). Kokonaisaika on tällä kertaa: 100 * 450 ms + 350 ms = 45.35 s Laskentaan käytetään tälläkin kertaa 10 s, joten käyttöaste on 10 s / 45.35 s = 0.22 eli 22% CPU haukottelee toimettomana vieläkin 78% kokonaisajasta. Tämä aika voitaisiin hyödyntää ottamalla lisää prosesseja suoritukseen, ts. järjestelmän moniajoastetta voi nostaa. (2 p) -------------------------------------------------------------------------