------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 5.10.2001 Tehtävä 1 ------------------------------------------------------------------------- kirja s. 115 - 117. ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 5.10.2001 Tehtävä 2 ------------------------------------------------------------------------- kirja s. 62, esim. I/O:n käskyt, keskeytysten estäminen. Miksi? sovellus ei voi ohittaa KJ:ta siirräntää tehdessään, joten KJ voi tarkistaa käyttöoikeudet. Sovellus ei voi vallata CPU:ta itselleen, viim. kello aiheuttaa keskytyksen. ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 5.10.2001 Tehtävä 3 ------------------------------------------------------------------------- Kun CPU noutaa PC:n osoittamasta paikasta, bittijono tulkitaan käskyksi. Käsky puolestaan määrittää missä operandit sijaitsevat, käskyssä kerrotusta muistipaikasta haetttu bittijono on tulkittava dataksi (käskykoodin mukaisesti). Ei oikeastaan mistään, eikä sen tarvitse tietääkään. Kun prosessori on etuoikeutetussa tilassa (bitti PSW:ssä), niin se suostuu suorittamaan myös etuoikeutettuja käskyjä. Tosta se voisi päätellä olevansa suorittamassa KJ:ta. Kuitenkaan kaikkia KJ:hin kuuluvia osia ei suoriteta kokonaisuudessaan etuoikeutetussa tilassa. ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 5.10.2001 Tehtävä 4 ------------------------------------------------------------------------- ks. kirja 30, 42-43, 335-337 Käskyjä suorittava laitteisto hyödyntää tätä tietoa s.e. välimuistissa pidetään tallessa viimeeksi viitattujen muistipaikkojen sisältöjä, ja MMU:hun kuuluvassa TLB:ssä pidetään tallessa viimeisimmissä osoitemuunnoksissa käytettyjä tietoja. ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 5.10.2001 Tehtävä 5 ------------------------------------------------------------------------- ks. kirja s. 308, 311 ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 5.10.2001 Tehtävä 6 ------------------------------------------------------------------------- ks. kirja s. 35-38 ja 475-476 ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 5.10.2001 Tehtävä 7 ------------------------------------------------------------------------- ks. kirja s. 129 tunnistus (pid, ppid, uid ja gid), vuorottaminen (tallealue rekistereille, tila, prioriteetti), muistinhallinta (esim. sivutaulun fyys. osoite), tiedostojenhallinta (viitteet avattuihin tdstoihin, työhakemisto), muuta (mm. linkkikenttiä, aikalaskureita ...) Milloin/mihin käytetään? Tunnistus: esim. tiedoston käyttöoikeuksien tarkistaminen, vuorottaminen: prosessin suorituksen aloittaminen/lopettaminen CPU:lla), tila: mihin jonoon PCB sijoitettu, muistnhallinta: tiedot MMU:hun kun prosessi suoritukseen, tdstojenhallinta: suora pääsy KJ:n ylläpitämiin rakenteisiin esim. kun tdstoa luetaan/kirjoitetaan/suljetaan, muuta: kootaan esim. käytettyä CPU-aikaa vaikkapa laskutusta varten. ------------------------------------------------------------------------- Käyttöjärjestelmät I, loppukoe 5.10.2001 Tehtävä 8 ------------------------------------------------------------------------- 1) KJ valitsee uuden prosessin suoritukseen - nollaa TLB:n validibitit - aseta PTR= uuden prosessin sivutaulun fyys. osoite (löytyy PCB:stä) - kopioi muut rekisterit ja prosessi pääsee suoritukseen 2) Aluksi MMU yrittää muuntaa virtuaaliosoitteen 0 fyysiseksi osoitteeksi (sivu = 0, siirtymä = 0), 3) Koska sivun 0 tietoja ei löydy TLB:stä, MMU noutaa muistista TLB:hen sivutaulun alkion osoitteesta PTR + 0 4) Sivutaulun alkiosta käy ilmi, ettei sivu 0 ole muistissa, joten MMU aiheuttaa sivunpuutoskeskeytyksen. 5) KJ käsittelee keskeytyksen ja laittaa laiteohjaimen noutamaan puuttuvaa sivua muistiin (Kj valitsee sivutilaksi esim 77). Prosessin tilaksi tulee Blocked. 6) Kun ohjain siirtää, CPU voi suorittaa muita prosesseja. 7) Tulee "siirto valmis" keskeytys. KJ kirjaa sivutauluun sivun 0 kohdalle P=1 ja sivutilannro=77, sekä siirtää prosessin READY tilaan. 8) Aikanaan prosessi pääsee uudelleen suoritukseen. - kohdat 1) - 3) kuten edellä 9) Nyt sivutaulun alkiosta käy ilmi, että sivu 0 on muistissa ja MMU voi tehdä osoitemuunnoksen. fyys.os = katenoi(sivutilannro, siirtymä) 10) Tällä osoitteella etsitään ensin välimuistista ja vasta sitten haetaan muistista. 11) Osoitteille 1..512 osoitemuunnos onnistuu helposti, sillä nyt TLB:stä löytyy valmiiksi sivuun 0 liittyvät tiedot. 12) Kun prosessi viittaa osoitteeseen 2001, se sijaitseekin sivulla 1. Koska sivun 1 tiedot eivät ole TLB:ssä, toistuu kohdat 3) - 10) mutta sivunumerolle 1. 13) Seuraavalla viitteellä 2002 osoitemuunnoksessa tarvittavat tiedot löytyvät TLB:stä, joten osoitemuunnos on nopeaa. 14) Viite osoitteeseen 500 osuu sivulle 0. Sen tietoja ei löydy TLB:stä (validibitit on nollattu välillä, CPU suoritti muita prosessja), ja sivutaulun alkio on noudettava muistista fyysisestä osoitteesta PTR + 0 (ko. muistipaikan sisältö voi löytyä toki välimuististakin!). 15) Osoitemuunnos kuten kohat 10) ja 11) -------------------------------------------------------------------------