------------------------------------------------------------------------- Käyttöjärjestelmät I, erilliskoe 15.1.2003 Tehtävä 1 ------------------------------------------------------------------------- a) kirja s. 115-116. 2p + 2p. b) Prosessorin välimuisti: paikallisuuden perusteella seuraavana suoritettava käsky on nyt suoritettavana olevan käskyn lähistöllä muistissa ja sama muistipaikka (käsky/data) tulee viitattavaksi uudestaan. Ohjelman suoritus siis pyörii lähekkäisten muistipaikkojen sisällä. Kannattaa siis pitää tallessa välimuistissa prosessorin viittaamien muistipaikkojen sisältöjä. Osoitteenmuunnospuskuri TLB: edellisen kohdan perusteella seuraavaksi viitatava muistipaikka on edellisen lähistöllä, joten se todennäköoisesti osuu samalla sivulle. Kannattaa siis pitää tallessa MMU:n sisällä osoitemuunnoksessa jo käytettyjä tietoja. Puskurimuisti (aka levyvälimuisti): ohjelmat käsittelevät tiedostoja tavallisimmin peräkkäisjärjestyksessä. Kannatta tuoda levyltä kokonainen lohko (esim 1024 tavua), jolloin seuraavaksi tarvittavat tavut ovatkin jo muistissa. Virtuaalimuisti: ohjelmasta käytetään vain pientä osaa kerrallaan eli suoritus pyörii pienessä osassa sivuja, jolloin loppuja sivuja voidaan säilyttää levyllä ja näin vapautuvaa muistia käyttää muiden prosessien tarpeisiin. Yksi OK= 2p, kaksi OK = 4P, 3 OK = 5p ja 4 OK = 6p c) kirja s. 62. CPU:ssa oltava etuoikeutetun tilan bitti pystyssä (PSW:ssa), jotta suostuu suorittamaan etuoik. käskyn, muuten poikkeus. Esim. MMU:n rekistereiden asettaminen (niitä ronkkimalla voisi saada muiden alueita käyttöön), keskytysten estäminen (estämällä aikaviipalekeskeytykset voi vallata CPU:n itselleen), I/O-rekistereiden suora käsitteleminen (voisi ohittaa KJ:n käyttöoikeustarkistukset) ... 1 p + 2p + 2p ------------------------------------------------------------------------- Käyttöjärjestelmät I, erilliskoe 15.1.2003 Tehtävä 2 ------------------------------------------------------------------------- a) kirja luku 1.4. Taulukko 1.1 (Classes of Interrupts), muista myös sivupuutoskeskeytys ja palvelupyyntö(keskeytys). maininnat = 2p, perustelut = 2p b) kirja kuva 1.7. Keskeytys huomataan pystyyn nostetusta bitistä tilarekisterissä PSW tai erillisessä keskeytysrekisterissä. Tutkitaan jokaisen käskysyklin lopuksi (ellei keskeytykset ole juuri sillä hetkellä estettyinä). milloin = 1p, miten = 1p c) kirja kuva 1.10 ja sivut 21-25. Lisäksi syytä mainita etuoikeutettuun tilaan siirtyminen ja keskeytysten esto (mainittu toisaalla kirjassa). Laitetoiminnot 5 p (kuittaus, PSW&PC pinoon, siirtyminen etuoikeutettuun tilaan, keskeytysten esto, PC:lle käsittelijän alkuosoite), ohjelmallinen osa 4 p (rekistereiden talletus pinoon, käsittely (heti/käsittelevä prosessi esim. ajuri Ready-tilaan), rekistereiden palautus tai niiden talletus PCB:hen + vuorottajan valitseman prosessin rekisterit CPU:lle) ------------------------------------------------------------------------- Käyttöjärjestelmät I, erilliskoe 15.1.2003 Tehtävä 3 ------------------------------------------------------------------------- kirja Taulukko 3.5 (Typical Elements of Process Control Block) tunnistus (3 p) mitä puolet ja milloin puolet --------- -pid: muut prosessit viittaavat yks. numerolla, -ppid: äitiprosessi saa tietoa lapsestaan -uid, gid: tärkeä mm. käyttöoikeuksien tarkistuksessa muistinhallinta (2 p) --------------- - tieto siitä missä prosessille varatut muistialueet ovat - tavallisesti vain osoitin erillisellä alueella olevaan sivutauluun - käytetään osoitemuunnoksissa (ST:n osoite PTR:ään), tarvitaan myös kun tehdään uusia tilanvarauksia, korvataan vanhoja varauksia uusilla ja kun prosessin päättyessä vapautetaan kaikki varaukset. vuorottaminen (1+3+1 p) ------------- - tila (Ready, Blocked jne..): voiko prosessi edetä, vai odottaako jotain. Linkitetty tilan mukaiseen jonoon. - tallealue rekistereille: jos ei ajossa, tiedot tallessa täällä. Kun saa ajovuoron, kopioidaan CPU:lle - prioriteetti: vaikuttaa siihen kuinka nopeasti prosessi saa CPU:n. Tähän kategoriaan kuuluu myös prioriteetin laskentaan vaikuttavia tietoja, esim. käytetty CPU-aika, käytetty I/O-aika tiedostojärjestelmä (3 p) ------------------- - työhakemiston polkunimi: tarvitaan, jos tiedosto avataan suhteellista polkunimeä käyttäen, cd-komento vaikuttaa tähän - tiedostokuvaaja: kutakin prosessin avaamaa tiedostoa kohden on yksi viite KJ:n muihin tietorakenteisiin (~ globaali avoimet tiedostot taulu). Tarvitaan aina, kun prosessi käyttää tiedostoa. Kun prosessi päättyy, suljetaan kaikki prosessin tiedostot. Se edellyttää myös KJ:n tallettamien globaalien (yhteiskäyttöisten) tietojen päivittämistä. - luotavien tiedostojen oletusoikeudet (UNIX: umask, Windows: security descriptor). Kun prosessii luo uuden tiedoston, kopioidaan sen attribuutteihin PCB:stä omistajan sekä ryhmän tunniste, sekä käyttöoikeudet. Muuta (2 p) ----------- - linkkikenttiä: PCB:t muodostavat resurssien odotusjonoja, esim. Ready-jonossa CPU:ta odottavat, kunkin laitteen (laiteajurin) jonossa ko. laitteelta palvelua odottavat jne. Äitiprosessiinkin voi olla suora linkki. - aikaleimoja ja -laskureita (CPU-aika, I/O-aika) - prosessien väliseen kommunikointiin liittyvää tietoa, esim. lipukkeita, signaalilipukkeita jne. - yms. ------------------------------------------------------------------------- Käyttöjärjestelmät I, erilliskoe 15.1.2003 Tehtävä 4 ------------------------------------------------------------------------- 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 (läsnäolobitti P=0), 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 sivutilanro=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(sivutilanro, siirtymä) 10) Tällä osoitteella etsitään ensin välimuistista ja vasta sitten haetaan muistista. 11) Osoitteille 1..510 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 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 osoitteille 500-510 kuten kohdat 9) - 11) o-o-o Karkesti ottaen kukin kohta 1 piste. Täydet pisteet sai, jos kaikki yleisperiaatteet olivat vakuuttavsti kohdallaan, vaikkei esitys olisikaan ollut aivan yhtä täsmällinen kuin tässä annettu. Välimuistista ei tarvinnut mainita mitään. -------------------------------------------------------------------------