|
TAVOITTEET
Osiossa tutustumme ensin yksinkertaisen muistinhallinnan (varaus, vapautus) perusperiaatteisiin ja sen jälkeen virtuaalimuistitoteutuksen keskeisiin ideoihin.
Avainsanat: looginen osoite, fyysinen osoite, MMU ja osoitemuunnos, virtuaalimuisti, sivutus ja segmentointi, sivutaulu ja segmenttitaulu, osoitemuunnospuskuri (TLB)
OPPIKIRJAN TEKSTI
LUENTOKALVOT sekä MUUTA MATERIAALIA
Muuta materiaalia: Tanenbaum A.S.: Modern Operating Systems. 2nd ed. 2001. Sivut 189-214, 249-262. Kirja löytyy myös TKTL:n kirjastosta.
HARJOITUKSET, KOHDAT A-C
Ennen ryhmän tapaamista: Tutustu huolellisesti kaikkiin tehtäviin. Pohdi niitä jo itseksesi ja kirjaa ylös tehtäviin liittyviä ajatuksia, tuloksia, ongelmia ja pulmia. 1. tapaaminen: Käykää yhdessä läpi tehtävät ja pohtikaa mitä tiedätte asiasta, mitä tietoja vielä tarvitsisitte, jne. Ohjaaja on tapaamisessa käytettävissä, mutta ei ratko tehtävää puolestanne. Hän voi ohjata ryhmäänne oikeaan suuntaan, jos tuntuu, että olette ihan eksyksissä. Osion aikana: Tapaamisten välillä voitte järjestää oman tapanne kommunikoida keskenänne: tapaamiset laitoksella, sähköposti, irc, webCT (jos joku haluaa sitä käyttää, niin ottakaa yhteyttä luennoijaan). Laatikaa raporttinne 2. tapaamiseen mennessä. 2. tapaaminen: Ryhmät esittelevät raporttiensa sisältöjä muille ryhmille. 2. tapaamisen jälkeen: Jos on tarvetta vielä täydentää tai muokata ryhmän raporttia, niin tämä on mahdollista tapaamisen jälkeen. Tähän on varattu korkeintaan kaksi päivää, koska raporttien on tarkoitus olla valmiina jo 2. tapaamisessa. |
Osion 1 raportti (kohdat A-C) tulee palauttaa kirjallisena joko luennolla tai huoneen D225 vieressä olevaan lokeroon. Raporttiin pitää kirjata: opintopiirin jäsenten nimet, laskuharjoitusryhmän numero ja ohjaajan nimi. Viimeinen palautusajankohta on
Palautus on siis viimeistään kaksi päivää oman harjoitusryhmän toisen kokoontumisen jälkeen.
A - POHTIKAA PORUKALLA TEHTÄVIÄ Allaolevan tehtävälistan kaikki tehtävät on tarkoitettu kaikkien pohdittavaksi. Laatikaa yhdessä ratkaisut näihin tehtäviin ja palauttakaa ne kirjallisena (raportiin mukaan jäsenten nimet, ohjaajan nimi ja ryhmän numero). |
2.1 - DYNAAMINEN MUISTINVARAUS
Muistissa on eräässä vaiheessa dynaamisen muistinhallinnan seurauksena seuraavankokoiset vapaat alueet (muistiosoitteiden mukaisessa järjestyksessä): 10K, 4K, 32K, 18K, 7K, 9K, 12K ja 15K.
Seuraavaksi halutaan varata 12K, 10K ja 9K. Mikä on varausjärjestys käytettäessä varausalgoritmia
a) First Fit, b) Best Fit, c) Next Fit (jatkaa muistin alusta) ja d) Worst Fit (Mikä mahtaa olla Worst Fit algoritmin kantava ajatus?)
Selvitä kunkin varausalgoritmin osalta kannattaako vapaat alueet säilyttää listassa muistiosoitteen mukaisessa järjestyksessä vai koon mukaisessa järjestyksessä. Tarkastele perusteluissasi varauksen ja vapautuksen nopeutta, listan ylläpidon helppoutta sekä vapaiden alueiden yhdistelyä suuremmiksi alueiksi.
2.2 - BUDDY SYSTEM
Eräs pientietokone käyttää Buddy Systemiä vapaiden muistialueiden hallintaan. Siinä on aluksi yksi koko alueen (256 KB) kokoinen muistilohko osoitteessa 0. Pienin alueelta varattava lohko on kooltaan 4KB.
a) Mitä staattisen ja dynaamisen muistinvarauksen ongelmia on pyritty ratkomaan Buddy Systemiä käyttämällä? Montako erillistä listaa Buddy System käyttää vapaan tilan hallitsemiseksi? Miksi toteutus ei perustu yhden listan käyttöön?
b) Montako vapaata muistialuetta on varausten 5KB, 25KB, 35KB ja 20KB jälkeen jäljellä, minkä kokoisia ne ovat ja mitkä ovat niiden alkuosoitteet (Piirrä vapaiden listat). Kuinka paljon muistia hukkautui sisäiseen pirstoutumiseen?
c) Jatketaan edellisen kohdan tilanteesta ja vapautetaan 5KB:n varaus. Mitkä ovat nyt vapaiden alueiden koot ja osoitteet? Miten listat ovat muuttuneet?
2.3 - MMU:N TOIMINNASTA
Virtuaalimuistia varten on muistinhallintayksikössä rekisteri (esim. PTR, Page TABLE Register), jossa on suorituksessa olevan prosessin sivutaulun fyysinen muistiosoite. Lisäksi käytössä on 16 alkion assosiatiivinen osoitemuunnospuskuri (TLB, translation lookaside buffer). Sivun koko on 1024 tavua ja järjestelmä käyttää yksitasoista sivutaulua.
Selosta mitä muistinhallintayksikössä tapahtuu, kun vuorottaja valitsee suoritukseen uuden prosessin ja prosessi viittaa ainakin virtuaaliosoitteisiin 0, 1 ... 510, 2001, 2002, 500 .. 510.
Tarkenna itse muut tarvittavat yksityiskohdat. Huomaa, että sivupuutoksen sattuessa suoritettava prosessi vaihtuu aina, joten TLB:n vanha sisältö katoaa.
2.4 - SIVUTUS vs. SEGMENTOINTI
a) Miten sivutusta käyttävä ja segmentointia käyttävä virtuaalimuistitoteutus eroavat toisistaan? Mitä hyvää segmentoinnissa on sivutukseen verrattuna? Entä päinvastoin?
b) Mitä tietoja KJ tallettaa prosessin sivutauluun? Entä segmenttitauluun?
c) Mitä hyötyä on osoitemuunnospuskuri TLB:n (Translation Lookaside Buffer) käytöstä? Voisiko virtuaalimuistitoteutus toimia ilman TLB:tä? Mitä tietoja MMU pitää tallessa TLB:ssä, kun käytetään a) sivutusta b) segmentointia?
d) Selitä kuinka MMU tekee osoitemuunnoksen segmentoivassa järjestelmässä.
2.5 - SIVUTTAVA SEGMENTOINTI
Miksi eräissä järjestelmissä yhdistetään segmentointi ja sivutus?
Eräs prosessi on jaettu 4:ään samankokoiseen segmenttiin. Järjestelmä käyttää segmentoinnin lisäksi myös sivutusta. Sivun koko on 2KB ja jokaista segmenttiä varten on 8:n alkion sivutaulu. Piirrä kuva, josta käy ilmi segmenttitaulu sekä segmenttikohtaiset sivutaulut. Mitä tietoa on nyt segmenttitaulun alkiossa?
a) Mikä on suurin mahdollinen segmenttikoko?
b) Mikä on yo. prosessin loogisten osoitteiden osoiteavaruuden koko? (eli mikä on suurin viitattavissa oleva looginen osoite)
c) Prosessi viittaa fyysiseen osoitteeseen 0x00021ABC (muuta tämä heksadesimaaliesitys ensin bittijonoksi). Millainen on looginen osoite, jota prosessi käyttää?
d) Mitä voit sanoa järjestelmän fyysisen muistin koosta (osoiteavaruudesta)?
2.6 - KÄÄNTEINEN SIVUTAULU
Koneessa on 48-bittiset virtuaaliosoitteet ja 32-bittiset fyysiset osoitteet. Sivukoko on 8KB. Kuinka monta alkiota tarvitaan tavallista sivutaulua varten? Entä käänteistä sivutaulua varten? Miksi käänteisen sivutaulun käyttö on kuitenkin harvinaisempaa?
B - PERUSTELKAA PORUKALLA TARKISTUSKYSYMYKSIÄ Kehittäkää viisi aihepiiriin liittyvää tarkistuskysymystä / keskeistä asiaa pohtivaa tehtävää, sekä perustelkaa miksi kysymyksiinne on tärkeää osata vastata. Saatte valita myös kirjan / luentokalvojen ja harjoitusten kysymyksistä. Tässä kohdassa on tärkeämpää kehittää hyvät perustelut kuin keksiä pyöriviä esineitä uudelleen. Välttäkää myös 'trivial-pursuit'-tyyppisiä yksittäisiä detaljitietoja testaavia kysymyksiä. Hyvä tarkistuskysymys on sellainen, johon vastaaminen vaatii suuremman kokonaisuuden ymmärtämistä. Vihjaiskaa, jos joku kohta kaipaa mielestänne tarkennusta, asiaan voidaan palata luennolla. |
C - TEHKÄÄ PORUKALLA EVALUOINTIA / ITSEARVIOINTIA Tiimityönä: Täyttäkää oheinen lomake 2 ja jättäkää se luennoijalle / laatikkoon ryhmän raportin mukana. Lomaketta jaetaan harjoitusryhmässä. Kyselyllä on kaksi tarkoitusta: (1) kerätä tietoa tehtävien tekemisen onnistumisesta opintopiireissä ja (2) auttaa opintopiiriä oman toiminnan parantamisessa. Arvostamme lyhyitä vastauksia, joihin olennainen on kiteytetty. Pyrkikää olemaan avoimia. Paneutukaa palautteen antamiseen huolella, vastatkaa kaikkiin kohtiin ja perustelkaa mielipiteitänne. Palautteen kattavuus (ts. onko kaikkiin kohtiin vastattu ajatuksella) arvioidaan (0, 1, tai 2), sen sijaan palautteen sisällöllä ei ole vaikutusta arviointiin. Muuta palautetta / kommentteja voitte lähettää milloin tahansa kurssin uutisryhmään hy.opiskelu.tktl.kj (toivottavasti saamme keskustelua aikaiseksi), tai kertoa suoraan kurssin vetäjille suullisesti, sähköisesti tai kirjallisesti. |
Kertauskysymyksiä (Poimittuna raporteista)
|
|