1 / 16

Virtuaalimuisti

Virtuaalimuisti Modernin muistinhallinnan tärkein menetelmä on virtuaalimuisti, jossa looginen osoiteavaruus ja fyysinen muistiavaruus on erotettu toisistaan. Virtuaalimuistin osoitteenmuodos algoritmeja uusien sivujen hakemiseksi virtuaalimuisti rautatasolla ja käyttöjärjestelmässä.

rusk
Télécharger la présentation

Virtuaalimuisti

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Virtuaalimuisti • Modernin muistinhallinnan tärkein menetelmä on virtuaalimuisti, jossa looginen osoiteavaruus ja fyysinen muistiavaruus on erotettu toisistaan. • Virtuaalimuistin osoitteenmuodos • algoritmeja uusien sivujen hakemiseksi • virtuaalimuisti rautatasolla ja käyttöjärjestelmässä

  2. Osoitteenmuutos • Kun ohjelmakoodi kirjoitetaan, se toimii nimiavaruudessa, funktioita ja muuttujia käsitellään niiden nimien perusteella. • Ohjelmaa käännettäessä se siirtyy toimimaan virtuaalisessa osoiteavaruudessa – muuttujanimet korvataan muistiosoitteilla, jotka ovat muotoa segmentti ja/tai sivu ja siirtymä. • Ladattaessa ohjelma muistiin, nämä osoitteet korvataan absoluuttisilla osoitteilla, jossa segmentin loogisen numeron korvaa sen sijainti keskusmuistissa.

  3. Virtuaalinen muunnoskartta • käytetään loogisen osoitteen muuttamiseksi keskusmuistin osoitteeksi • ajasta riippuva kuvaus prosessin virtuaalisesta osoiteavaruudesta fyysiseen osoiteavaruuteen hetkellä t: Vt:virtuaalinen osoiteavaruus -> fyysinen osoiteavaruus  {A} missä t on ei-negatiivinen kokonaisluku virtuaaliaika ja A on symboli, joka viittaa tyhjään • Virtuaaliaika on aikaa, jonka prosessi itse näkee, eli se ei kulu, kun prosessi on keskeytettynä • Kun virtuaalimuistin osoite i ladataan, on vastaava fyysisen muistin osoite Mt(i). Jos i ei ole keskusmuistissa, se haetaan levymuistista.

  4. Sivujen haku muistiin • Virtuaalimuisti tuo mukanaan omat erityisongelmansa – mitkä segmentit tai sivut pitäisi hakea muistiin ja mitkä viedä pois? Ongelman erityispiirre on, että ne ovat saman ohjelman osia. • Tyypillisin tapa on suorittaa nouto tarvittaessa. • Toinen tapa on yrittää ennakoida, mitä sivuja tarvitaan. • Sivutusta käytettäessä sijoitus on aika vapaata, ja seuraavissa käsitelläänkin etupäässä sivutukseen sovellettuja menetelmiä. • Jää kuitenkin kysymys siitä, mitkä sivut otetaan pois, eli korvausstrategiat. • Seuraavassa tarkastellaan kahta pääjoukkoa algoritmeja, joissa sivut haetaan tarvittaessa: staattiset, joissa prosessille osoitettujen sivujen määrä on vakio, ja dynaamiset, joissa sivumäärä vaihtelee ajan funktiona.

  5. Staattiset algoritmit • Random • Belady • LRU (Least Recently Used) • NUR (Not Used Recently) • LFU (Least Frequently Used) • FIFO (First in - First out) • Beladyn anomalia

  6. Random valitaan korvattava sivu sattumanvaraisesti. Ei toimi kovin hyvin. Paikallisuuden takia se generoi enemmän sivuvirheitä kuin useimmat muut käytetyt algoritmit.

  7. Beladyn optimaalinen algoritmi • Vaatii täydellistä tietoa jo etukäteen • poistetaan sivu, jota tarvitaan seuraavan kerran pisimmän ajan kuluttua Least used recently • suunniteltu huomioimaan ohjelman normaalia toimintaa • käyttää hyväkseen paikallisuutta ja paikallisuuden muutosta ajan myötä • pidetään kirjaa siitä, koska sivua on viimeksi käytetty • se sivu, jonka käytöstä on pisin aika, korvataan ensimmäisenä • merkitään ikä aikaleimalla

  8. Not Used Recently • LRU-algoritmin approksimaatio • otetaan käyttöön viitattu ja muutettu bitit • aluksi ilmoitetaan, että sivua ei ole muutettu ja siihen ei ole viitattu • kun sivuun viitataan tai sitä muutetaan, käännetään sen bitti • ensimmäiseksi korvataan sivut, joihin ei ole viitattu, sen jälkeen sivut, joita ei ole muutettu ja sitten ne, joita on muutettu. Jos päädytään viimeiseen, kaikki bitit nollataan • helppo toteuttaa, suhteellisen tehokas, pieni yleisrasite -> suosittu

  9. Least Frequently Used • valitaan korvattavaksi sivu, jota on käytetty harvimmin • seuraa heikosti paikallisuuden muutoksia • vasta kun uuteen sivuun tulee riittävästi viittauksia suhteessa vanhoihin, ne jäävät käyttöön • ottaa huomioon kauan sitten tehdyt viittaukset (muunnelmassa lasketaan vain viimeisestä muistiinlatauksesta lähtien tehdyt viittaukset) • Pääsee kuitenkin kohtalaisen lähelle optimia ilman täydellistä tietoa

  10. First in, first out • Menetelmänä huono • korvaa sen sivun, joka on ollut muistissa pisimpään • sopii tiettyihin tehtäviin, mutta yleisesti ei esim. ota lainkaan huomioon paikallisuutta Kokonaisuudessaan: • LRU ja LFU ovat kohtuullisia algoritmeja, mutta voivat olla raskaita • NUR approksimoi hyvin LRUta

  11. Beladyn anomalia • edellä prosessille on varattu tietty määrä muistia. Mitä tapahtuu, jos sille varataankin enemmän sivutiloja? • ei kaikissa tapauksissa edullista • tilannetta, jossa sivuvirheiden määrä kasvaa käytettävissä olevien sivutilojen määrän kasvaessa, kutsutaan Beladyn anomaliaksi • algoritmeja, joiden kanssa anomaliaa ei esiinny, kutsutaan pinoalgoritmeiksi (esim. LRU ja LFU)

  12. Dynaamiset algoritmit • sallivat sivutilojen määrän muuttumisen dynaamisesti suorituksen aikana Työjoukkoalgoritmi • prosessin tietyssä elinkaaren vaiheessa käyttämää sivujoukkoa kutsutaan työjoukoksi • prosessin siirtyessä vaiheesta toiseen, työjoukko muuttuu, samoin sen koko • prosessin suoritus on tehokkainta, kun sen työjoukko mahtuu kokonaisuudessaan muistiin • kun vähennetään prosessille varattuja sivutiloja, tietyn pisteen jälkeen sivuvirheiden määrä kasvaa voimakkaasti (trashing) • paras sivujoukon koko on siis koko, joka on hiukan tuon pisteen yläpuolella

  13. Työjoukkoalgoritmi (jatkuu) • Työjoukkoalgoritmi esittelee formaalin tavan seurata sivutilojen sopivaa määrää (eli hystereesipistettä) • olkoon m(t) prosessille osoitettujen sivutilojen määrä virtuaalisen ajan hetkellä t. Kun t=0, myös m=0. • olkoon S(m(t)) prosessin lataamien sivujen määrä hetkellä t. Koska S(m(t)) = 0, t>0, voidaan prosessille prosessille osoitetun muistin tila hetkellä t, t>0 johtaa prosessille varatun muistin tilasta hetkellä t-1 seuraavasti, käyttäen parametriä T: S(m(t)) = S(m(t-1))U Xt-Yt, missä Xt on keskusmuistiin hetkellä t ladattujen sivujen joukko, Yt hetkellä t keskusmuistista poistettujen sivujen joukko.

  14. Työjoukkoalgoritmi (jatkuu) • algoritmi erottaa toisistaan sivujen lataamisen ja poistamisen, mikä sallii dynaamisen vaihtelun • tapauksia on neljä: • X on tyhjä: samoin Y, sivutilojen määrä ei muutu • X on tyhjä, Y ei: yksi sivutila vapautetaan • X ei ole tyhjä, Y on: varataan yksi tila lisää • kumpikaan ei ole tyhjä: sivutilojen määrä ei muutu Sivutilojen määrä siis muuttuu enintään yhdellä kerrallaan. Vakio T kertoo kuinka kauan prosessi voi varata käyttämätöntä tilaa. T:n koolla voi tehokkaasti hallita muutosnopeutta. Työjoukon koko on vahvasti sidoksissa paikallisuuteen. Nyrkkisääntö: prosessia ei kannata ottaa suoritukseen, jos sen työjoukko ei mahdu keskusmuistiin.

  15. Kelloalgoritmit • Työjoukkoalgoritmi on raskas, vaihtoehtojakin löytyy, jotka approksimoivat toimintaa, mutta ovat kevyempiä • kelloalgoritmi toimii kuten NUR järjestelmänlaajuisesti. • kaikkiin sivutiloihin liitetään viittausbitti ja mahdollisesti muutosbitti. • ’viisari’ osoittaa yhteen sivutilaan. Sivutilaa pyydettäessä ’viisari’ käy läpi kaikkien sivujen viittausbitit ja korvaa ensimmäisen johon ei ole viitattu. • dynaaminen, mutta ei ota huomioon yksittäisen prosessin tarpeita

  16. Working Set Clock • LRU-tyylinen • jokaiseen sivutilaan lisätään muuttuja ’viitattu’, johon tallennetaan virtuaalisen ajan hetki, jolloin sivutilaan on viimeksi viitattu • jos se ylittänyt oman ’elinikänsä’, sivutilan saa poistaa • approksimoi kohtuullisesti työjoukkoalgoritmia • käytetään useissa sivuttavissa käyttöjärjestelmissä Rautataso ja softataso • Melkein kaikki toteutetaan rautatasolla, softatasolla vain ne algoritmit, joiden perusteella sivut korvataan toisilla

More Related