For faster navigation, this Iframe is preloading the Wikiwand page for Näennäismuisti.

Näennäismuisti

Wikipediasta

Näennäismuistin osoitteet kuvautuvat joko fyysiseen keskusmuistiin (RAM) tai massamuistilaitteelle (kuvassa massamuistilaitteena Disk). Vain keskusmuistissa olevaan tietoon voidaan suoraan viitata, massamuistilaitteella oleva tieto on ensin siirrettävä keskusmuistiin.

Näennäismuisti eli yleisemmin virtuaalimuisti mahdollistaa sen, että osa prosessin käyttämästä muistista voi olla keskusmuistin asemasta massamuistilaitteessa.

Käytännössä virtuaalimuisti tarvitsee toimiakseen virtuaaliosoitteet, mutta virtuaaliosoitteet eivät tarkoita, että järjestelmä olisi samalla virtuaalimuistijärjestelmä.

Jo varhaiset elektroniset tietokoneet 1940- ja 1950-luvuilla käyttivät kaksitasoista muistihierarkiaa: 1950-luvulla päämuisti oli ferriittirengasmuistia ja toissijainen muisti rumpumuistia. Tietokoneen suoritin pystyi osoittamaan vain päämuistia ja suuri osa ohjelmoijan työstä koostui ohjelman jakamisesta lohkoihin ja ajoitukseen tasojen väliseen siirtoon. Ensimmäisten käyttöjärjestelmien suunnittelijat tavoittelivat ohjelmoijan työn helpottamista.[1]

Ensimmäisen prototyypin virtuaalimuistijärjestelmälle saavutti Atlas-ryhmä Manchesterin yliopistossa vuonna 1959.[1] Atlas-ryhmä kutsui ratkaisua yksitasoiseksi tallennusjärjestelmäksi ja sen ytimessä oli uusi innovaatio: "osoite" ja "muistisijainti" olivat kaksi eri asiaa.[1] Tämä johti kolmeen keksintöön: 1) he rakensivat laitteiston, joka automaattisesti muutti suorittimen tuottaman osoitteen sen hetkiseen muistisijaintiin; 2) he kehittivät sivutuksen, jossa keskeytysmekanismi siirsi puuttuvan muistisivun päämuistiin; 3) he tekivät korvausalgoritmin, joka siirsi vähiten hyödylliset sivut takaisin toissijaiseen muistiin.[1]

Atlas oli luultavasti ensimmäinen tietokone, jonka kontrolliohjelmaa voitiin kutsua käyttöjärjestelmäksi ja sitä on kutsuttu "ensimmäiseksi tunnistettavaksi moderniksi käyttöjärjestelmäksi".[2][3] 1960-luvulta lähtien virtuaalimuisti otettiin laajalti käyttöön kaupallisissa käyttöjärjestelmissä ja laitteissa.[1]

Virtuaalimuistin toiminta

[muokkaa | muokkaa wikitekstiä]

Virtuaaliosoitteen muuttaminen fyysiseksi osoitteeksi on selitetty kohdassa virtuaaliosoite. Mikäli prosessin koko osoiteavaruus on keskusmuistissa, virtuaalimuisti toimii kuten tavallinen muisti. Varsinkin suurten ohjelmien kohdalla on epätarkoituksenmukaista pitää koko ohjelmaa jatkuvasti keskusmuistissa. Keskusmuisti voi käydä vähiin myös silloin, jos koneessa ajetaan useita prosesseja yhtä aikaa. Riippumatta virtuaalimuistin käytön syistä viittaus sivuun, joka ei ole keskusmuistissa, edellyttää virtuaalimuistijärjestelmältä kykyä hakea puuttuva sivu keskusmuistiin.

Virtuaalimuisti tarvitsee toimiakseen laitteiston tukea. Laitteiston tulee pystyä keskeyttämään ajossa oleva käsky, jos käskyn tekemä muistiviittaus ei ole mahdollinen. Tämän jälkeen suoritus siirtyy käyttöjärjestelmän ytimelle, joka tarkistaa ensin, onko kyseessä virheellinen viittaus ohjelman sallitun osoiteavaruuden ulkopuolelle, ja mikäli ei ole, noutaa halutun sivun keskusmuistiin massamuistilaitteelta eli yleensä levyltä.

Keskusmuisti täyttyisi, jos sinne jatkuvasti vain haettaisiin uusia sivuja. Virtuaalimuistijärjestelmän tulee siis myös poistaa sivuja keskusmuistista. Tätä varten on olemassa useita eri poistoalgoritmeja. Nämä pyrkivät siihen, että poistettavaa sivua ei todennäköisesti tarvittaisi kovinkaan pian. Poistoalgoritmeja ovat muiden muassa FIFO (engl. first in, first out), joka poistaa keskusmuistissa kauiten olleen sivun, LRU (engl. least recently used), joka poistaa pisimpään käyttämättömänä olleen sivun ja DWS (engl. Denning working set), joka pystyy mukautumaan prosessin muuttuviin tarpeisiin ja ennustaa hyvin sen pisteen, jolloin pitää siirtyä sivutuksesta heittovaihtoon (engl. swapping). Käytettävä poistoalgoritmi riippuu käyttöjärjestelmästä ja laitteiston muistinhallintayksikön ominaisuuksista. Yhdellä käyttöjärjestelmällä voi eri laitteistoilla olla käytössä eri poistoalgoritmeja.

Jotta virtuaalimuistijärjestelmä toimisi sujuvasti, pyritään noin 10 prosenttia keskusmuistista pitämään vapaana massamuistilaitteelta haettavia sivuja varten.

Virtuaalimuistin rajoituksia

[muokkaa | muokkaa wikitekstiä]

Virtuaalimuisti helpottaa suunnattomasti ohjelmoijien työtä, sillä aiemmin käsin tehty kerrostus on hyvin virhealtista ja kuluttaa paljon voimavaroja. Virtuaalimuistia ei kuitenkaan voi aina käyttää. Esimerkiksi suurin osa käyttöjärjestelmän ohjelmakoodista ja datapuskureista on oltava aina keskusmuistissa, koska muuten järjestelmä ei toimi. Tämän takia osa muistista voidaan lukita keskusmuistiin pysyvästi.

Myös reaaliaikavaatimukset rajoittavat virtuaalimuistin käyttöä. Reaaliaikavaatimus edellyttää, että johonkin toimintoon kuluva aika on etukäteen laskettavissa. Vaikka virtuaalimuistin toiminta on loogisesti ohjelmalle näkymätöntä, se kuluttaa aikaa satunnaisesti, joten reaaliaikaprosessit on niin ikään lukittava keskusmuistiin. Koska sulautetut järjestelmät ovat yleensä reaaliaikaisia, niissä voidaan vain harvoin käyttää virtuaalimuistia.

  • Ilkka Haikala ja Hannu-Matti Järvinen: ”Luku 4”, Käyttöjärjestelmät. Talentum, 2003. ISBN 951-762-837-4.
  1. a b c d e Peter J. Denning: Before Memory Was Virtual (PDF) denninginstitute.com. 1.11.1996. Viitattu 14.7.2021. (englanniksi)
  2. Atlas Architecture chilton-computing.org.uk. Viitattu 14.8.2019. (englanniksi)
  3. Per Brinch Hansen: Classic Operating Systems: From Batch Processing To Distributed Systems, s. 7. Springer, 2001. ISBN 978-1-4757-3510-9. doi:10.1007/978-1-4757-3510-9. (englanniksi)

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]
{{bottomLinkPreText}} {{bottomLinkText}}
Näennäismuisti
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?