1 / 22

9. Muistinhallinta

9. Muistinhallinta. Moniajojärjestelmässä keskusmuisti on jaettu usean prosessin kesken => ohjelman paikka muistissa ei ole kiinteä, vaan koodi on vapaasijoitteinen eli voidaan sijoittaa eri paikkaan muistissa tämä edellyttää todellisten muistiosoitteiden ajoaikaista laskemista.

Download Presentation

9. Muistinhallinta

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. 9. Muistinhallinta • Moniajojärjestelmässä keskusmuisti on jaettu usean prosessin kesken • => ohjelman paikka muistissa ei ole kiinteä, vaan koodi on vapaasijoitteinen eli voidaan sijoittaa eri paikkaan muistissa • tämä edellyttää todellisten muistiosoitteiden ajoaikaista laskemista

  2. Prosessi voi sijaita laitteistosta ja KJ:stä riippuen • keskusmuistissa yhtenäisellä alueella • keskusmuistissa palasina eri paikoissa • osa keskusmuistissa, osa levyllä • on tarvittaessa tuotava levyltä keskusmuistiin • muistin kerrostus = ohjelmoija kertoi milloin tarvitaan • virtuaalimuisti = KJ tuo tarvittaessa muistiin

  3. 9.1 Muistin organisointi • lineaarinen osoiteavaruus • muistiosoitteet on numeroitu peräkkäin nollasta alkaen • pienin osoitettava osa on tavun tai sanan mittainen muistipaikka • kirjanpidon takia • vapaat ja varatut alueet jaetaan suurempiin alueisiin segmentteihin tai sivuihin

  4. Muisti koostuu samanmittaisista peräkkäisistä muistipaikoista muistipaikka 0 segmentti tai sivu 6 12 18 24 30 36 42 48 54 60 66 ...

  5. Prosessori • muistihierarkia ja välimuistin käyttö 50-100 ns muutama ns rekisterit Keskusmuisti 10 ms koodi- ja data-alueet välimuisti 10-20 ns levy lohkopuskuri

  6. 9.2 Kanta- ja rajarekisteriä käyttävä järjestelmä • Osoitemuutos • prosessin muistialue on yhtenäinen kokonaisuus • osoitemuutos ja suojaus kanta- ja rajarekistereiden avulla (BASE, LIMIT) MMU LIMIT BASE ohjelman osoite fyysinen osoite MAR

  7. Jokaisesta muistiviittauksesta MMU • tarkistaa sen oikeellisuuden • osoite < LIMIT • muuttaa ohjelmaosoitteen fyysiseksi muistiosoitteeksi • osoite = osoite +BASE • jos koodille ja datalle omat muistisegmentit, niin tarvitaan kaksi paria kanta- ja rajarekistereitä

  8. 9.3 Virtuaalimuisti • prosessista pidetään keskusmuistissa kulloinkin tarpeelliset osat • peräkkäiset osat voivat sijaita erillään • muut osat saatavissa nopeasta tukimuistista • looginen <==> fyysinen muistiavaruus • muistissa fyysiset sivutilat • ohjelmassa samankokoisia loogisia sivuja

  9. muistin sivutiloja • Sivut ja sivutilat ohjelman sivuja 0 2 ohjelman sivu 2 0 1 4 ohjelman sivu 3 6 2 3 8 ohjelman sivu 0 10 ….. ………... Ohjelman sivuja voidaan sijoittaa vapaisiin sivutiloihin. Osa sivuista voi olla levyllä.

  10. Sivutaulu • kertoo, missä prosessin sivut todella sijaitsevat sivutilan nro P-bitti M-bitti muuta 9 1 0 0 1 2 3 4 0 3 1 1 4 1 0 …..

  11. => sivunumero + siirtymä • Osoitemuunnos • ohjelman osoite 12 11 10 09 08 07 06 05 04 03 02 01 00 1 0 1 0 0 0 1 1 1 1 1 0 1 Jakolasku: sivunumero = ohjelman osoite DIV sivun koko siirtymä = ohjelman osoite MOD sivun koko

  12. Fyysinen osoite: saadaan katenoimalla (= yhdistämällä peräkkäin) sivutilannumero saadaan sivunumerosta sivutaulun avulla ja siirtymä • Fyysinen osoite eli osoite muistissa

  13. Esimerkki • Luentomonisteen sivulta 123. • Mikä on kuvan 9.3 prosessin osoitetta 0 vastaava fyysinen osoite? • Mikä fyysinen osoite vastaa osoitetta 6345?

  14. Prosessin sivutaulun sijainti • Koko sivutaulu MMU:n rekistereissä • aina prosessin vaihtuessa vaihdetaan rekistereiden sisältö • osoitteen laskenta nopeaa • vain pienet osoiteavaruudet mahtuvat • Sivutaulu keskusmuistissa, MMU:ssa sivutaulun keskusmuistiosoite PTR • isotkin osoiteavaruudet mahtuvat • osoitteen lasku hidas • ensin sivutaulun alkio muistista • osoitemuunnospuskuri TLB MMU:ssa • viimeksi muunnoksissa tarvitut tiedot

  15. MMU • TLB PTR TLB fyysinen osoite ohjelman osoite MAR TLB on nopeaa assosiatiivimuistia

  16. TLB:n sisältö sivunumero sivutilannumero P-bitti V-bitti muuta Koko on esim. 8 rekisteriä. Niissä viimeksi viitatut sivutaulun alkiot. Usein tiedot löytyvät jo suoraan TLB:stä ja osoitetaulun alkion erillistä muistinoutoa ei tarvita.

  17. TLB: osoitteenmuunnos • Jaa ohjelman osoite sivunumeroksi ja siirtymäksi • Etsi sivunumeroa TLB:stä • Jos ei löydy tai v-bitti = 0 • nouda sivutaulun alkio MEM[PTR+sivunumero] johonkin TLB:n alkioon • jos p-bitti =0, niin aiheuta sivunpuutoskeskeytys • muuten lisää TLB:n alkioon sivun numero ja aseta v-bitti ykköseksi • Lisää sivutilan numeroon (TLB:ssä) siirtymä

  18. Sivujen poistaminen muistista • Jos prosessin viittamaa sivua ei löydy muistista, aiheutuu sivunpuutoskeskeytys ja sivu haetaan muistiin • Jos kaikki sivutilat jo käytössä, niin jokin sivuista on poistettava muistista • poistetaan ‘turha sivu’, mutta mistä tiedetään, että sivua ei enää tarvita? • sivu, jota ei pisimpään aikaan ole käytetty => sivukohtaiset viitebitit,

  19. 9.4. Heittovaihto • Passiivinen, turhaan keskusmuistia kuluttava prosessi siirretään levylle • kokonaan • joitakin osia prosessista • muuttumattomia osia ei tarvitse kirjoittaa uudelleen levylle • prosessin kuvaaja jää aina muistiin • aktiiviset prosessit palautetaan takaisin keskusmuistiin • heittovaihto kuluttaa resursseja

  20. Kanta- ja rajarekisteriä käyttävä järjestelmä • allokoitava riittävä tila • tuotavalle prosessille tilaa poistamalla muita passiivisia • poistoalgoritmi • siirräntää WAIT-tilassa odottavat prosessit • suuret tilaa vievät prosessit • kauimmin muistissa • pienimmän prioriteetin prosessit • noutoalgoritmi • kun tilaa vapautuu, tuo prosesseja keskusmuistiin

  21. virtuaalimuistijärjestelmä • sivutilataulu kertoo vapaat ja varatut tilat • päivitetään, kun varataan tai vapautetaan tilaa • jos ei ole vapaita sivutiloja • poistoalgoritmi valitsee poistettavat sivut • viitebitti: pitkään käyttämättömänä olleet sivut • yleensä sivu tuodaan muistiin vasta, kun sitä tarvitaan • tarvesivutus • ennaltanouto • sivut muistiin prosessin käynnistyessä • tai pyritään ‘arvaamaan’ mitä sivuja seuraavaksi tarvitaan

  22. Segmentointi • prosesseja ei jaeta vakiomittaisiin sivuihin, vaan mahdolliseti erimittaisiin segmentteihin • esim. aliohjelma = segmentti • ongelmana muistin sirpaloituminen (tai pirstoutuminen)(fragmentation) • sijoitusalgoritmi pyrkii vähentämään • ajoittain vapaiden tilojen yhdistäminen • sivuttava segmentointi: ensin segmentoidaan, sitten sivutetaan

More Related