------------------------------------------------------------------------- Käyttöjärjestelmät I, Kurssikuulustelu 03.11.2004 Tehtävä 2 / Avrll ------------------------------------------------------------------------- a) PAIKALLISUUS (s. 30, 42-43) 1) välimuisti: nopea apumuisti CPU:n ja muistin välissä. Pidä tallessa viimeaikoina viitattujen muistipaikkojen sisältöjä (käskyjä, dataa), jotta ei tarvitse noutaa hitaammasta keskusmuistista. 2) osoitemuunnospuskuri (TLB): nopea apumuisti MMU:ssa. Pidä tallessa viimeisimmissä osoitemuunnoksissa käytettyjä sivutaulun alkiota, jotta ei tarvitse noutaa hitaammasta keskusmuistista. 3) lohkopuskurit: KJ:n 'työalueita" keskusmuistissa. Pidä tallessa viimeaikoina viitattuja levylohkoja. Tdstoja käsitellään tyypillisesti peräkkäisjärjestyksessä, joten srva viitattu tavu sijaitsee tn. samassa lohkossa kuin edellinen, ja on siten saatavissa nopeammin kuin levyltä. 4) virtuaalimuisti: Keskusmuistin ja levyn yhteiskäyttöä. Pidä keskusmuistissa vain ne sivut, joihin on viimeaikoina viitattu. Uusi viittaus kohdistuu suurella tn:llä samalle sivulle. b) KESKEYTYSMEKANISMI (mm. s. 17) 1) CPU:n ulkopuolisten laitteiden ohjaustarve, esim I/O valmis: Jotkut laitteet voivat toimia itsenäisesti ja ilmoittaa, kun tarvitsevat KJ:n apua. KJ tarkistaa laitteen statuksen, ja esim. siirtää siirron valmistumista odottaneen prosessin Ready-tilaan. Tavallisesti keskeytynyt prosessi saa jatkaa. 2) Aikaviipalointi (kellokeskeytys): yksikään prosessi ei voi valloittaa CPU:ta itselleen, koska viipaleen täyttymisen vuoksi CPU siirtyy suorittamaan KJ:tä, joka siirtää prossssin Ready-jonoon prioriteetin mukaiseen paikkaan, ja vuorottaa suoritukseen Ready-jonon ens. prosessin. 3) Virhetilanteiden käsittely: Jos sovelluksessa ohjelmointivirhe (esim. nollallajako), KJ voi käsitellä tilanteen (esim. tapa prosessi) ja ottaa suoritukseen jonkun toisen prosessin. 4) Palvelupyynnöt: Eräiden toimintojen oltava keskitettyjä (esim. tdstojen käyttöoikeuksien tarkistaminen) tai vaatii etuoikeutettuja käskyjä (esim. I/O). KJ palvelee pyynnön heti (sama prosessi saa jatkaa), tai käynnistää jonkun apuprosessin Ready-jonoon palvelemaan pyyntöä. Valmistumista odottava prosessi Blocked-tilaan, CPU:lle joku toinen prosessi. 5) Sivunpuutos: KJ laittaa prosessin Blocked tilaan, pistää levyohjaimen siirtämään puuttuvaa sivua keskusmuistiin, ja vuorottaa suoritukseen jonkin toisen prosessin. c) LAITTEISTOPIIRTEET (s. 62) 1) etuoikeutettu tila ja etuoikeutetut käskyt: suojaussyistä ei voida sallia esim, että mikä tahansa prosessi muuttaisi MMU:n rekistereiden arvoja (voisi viitata toisten prosessien alueille), estäisi keskeytykset (voisi valloittaa CPU:n vain itselleen) tai lukisi suoraan levyä (ohittaen tdstoihin liittyvät käyttöoikeustarkistukset). Nuo toiminnot sallittu vain KJ:lle. CPU suostuu suorittamaan etuoikeutettuja käskyjä vain, jos se on asetettu etuoikeutettuun tilaan (bitti PSW:ssä). 2) Keskeytysmekanismi: ks. b)-kohta. Keskeytyksen sattuessa laitteisto asettaa CPU:n etuoikeutettuun tilaan (bitti PSW:ssä) ja siirtää kontrollin KJ:lle (PC+PSW pinoon, PC <- käsittelijän ens. käskyn osoite). 3) Ajonaikainen osoitemuunnos: MMU muuttaa ohjelman sisäisen osoitteen fyysiseksi osoitteeksi ajonaikana (ohjelman sivujen paikka voi vaihdella jopa suoritusaikana). Tässä yhteydessä MMU voi tehdä myös käyttötapa -tarkistuksen (R/W) sekä varmistaa, että prosessi viittaa vain sallitulle alueelle. 4) Kellokeskeytykset: ks. b)-kohta o-o-o Tehtävä oli osattu melko mukavasti. Lähes puolet porukasta sai 9-12 pistettä. Eniten toivomisen varaa oli PERUSTELUISSA. Monet eivät esim. muistaneet selittää mistä paikallisuusperiaatteen hyöty syntyy, tai kuinka KJ käsittelee esimerkiksi annetun keskeytyksen. Luvattoman moni oli unohtanut pakollisista laitteistopiirteistä etuoikeutetun tilan ja etuoikeutetut käskyt. Pisteytys: tapauksen/tilanteen/piirteen mainitseminen 1/2p, toinen puolikas perusteluista. -------------------------------------------------------------------------