Ero sivun ”Näennäismuisti” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
p →‎Virtuaalimuistin rajoituksia: Viite reaaliaikaisuuteen
p Botti poisti 40 Wikidatan sivulle d:q189401 siirrettyä kielilinkkiä
Rivi 28: Rivi 28:
[[Luokka:Käyttöjärjestelmä]]
[[Luokka:Käyttöjärjestelmä]]
[[Luokka:Tietokonetekniikka]]
[[Luokka:Tietokonetekniikka]]

[[ar:ذاكرة افتراضية]]
[[id:Memori virtual]]
[[ms:Ingatan maya]]
[[be-x-old:Віртуальная памяць]]
[[ca:Memòria virtual]]
[[cs:Virtuální paměť]]
[[da:Virtuel hukommelse]]
[[de:Virtuelle Speicherverwaltung]]
[[el:Εικονική μνήμη]]
[[en:Virtual memory]]
[[es:Memoria virtual]]
[[eo:Virtuala memoro]]
[[eu:Alegiazko memoria]]
[[fa:حافظه مجازی]]
[[fr:Mémoire virtuelle]]
[[gl:Memoria virtual]]
[[ko:가상 메모리]]
[[hy:Վիրտուալ հիշողություն]]
[[hi:वर्चुअल मेमोरी (आभासी स्मृति)]]
[[it:Memoria virtuale]]
[[he:זיכרון וירטואלי]]
[[ky:Виртуалдык эс же виртуалдык эсти башкаруу]]
[[lt:Virtualioji atmintis]]
[[hu:Virtuális memória]]
[[nl:Virtueel geheugen]]
[[ja:仮想記憶]]
[[no:Virtuell hukommelse]]
[[pl:Pamięć wirtualna]]
[[pt:Memória virtual]]
[[ru:Виртуальная память]]
[[si:අතථ්‍ය මතකය]]
[[simple:Virtual memory]]
[[sk:Virtuálna pamäť]]
[[sl:Navidezni pomnilnik]]
[[sv:Virtuellt minne]]
[[vi:Bộ nhớ ảo]]
[[tr:Sanal bellek]]
[[uk:Віртуальна пам'ять]]
[[ur:مجازی حافظہ]]
[[zh:虚拟内存]]

Versio 19. maaliskuuta 2013 kello 10.04

Näennäismuisti eli yleisemmin virtuaalimuisti mahdollistaa sen, että osa prosessin muistista voi olla keskusmuistin asemesta massamuistilaitteessa.

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

Virtuaalimuistin toiminta

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

Virtuaalimuisti helpottaa suunnattomasti ohjelmoijien työtä, sillä aiemmin käsin tehty kerrostus oli hyvin virhealtista ja kulutti 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.

Lähteet

Ilkka Haikala ja Hannu-Matti Järvinen: ”Luku 4”, Käyttöjärjestelmät. Talentum, 2003. ISBN 951-762-837-4.

Aiheesta muualla