Kerrostus (engl. overlaying) on tietokoneissa ennen virtuaalimuistin laajamittaista käyttöönottoa käytössä ollut menetelmä suurien ohjelmien ajamiseksi.

Ennen virtuaalimuistia tietokoneiden fyysinen muisti eli muistiavaruus oli usein suurempi kuin suorittimen viittauskyky eli osoiteavaruus. Suuret ohjelmat eivät mahtuneet suhteellisen pieniin osoiteavaruuksiin (usein 16 bittiä), joten samat muistiosoitteet piti käyttää useampaan kertaan. Kerrostuksessa ohjelman eri osat sijoiteltiin niin, että sellaiset osat, joita ei tarvittu yhtä aikaa, käyttivät samaa osaa osoiteavaruudesta ja joskus myös muistiavaruudesta.

Kerrostaminen vaati ohjelmiston sisäisten suhteiden hyvää tuntemista, koska vääränlainen kerrostus johti joko virheeseen tai erittäin hitaaseen toimintaan. Hitaus syntyi siitä, että tyypillisesti kerrostettava osa ohjelmaa haettiin keskusmuistiin massamuistilaitteelta. Jos kerrostusvaihtoehtoja vaihdettiin usein, tämä hidasti olennaisesti ohjelman toimintaa. Kerrostus voitiin tehdä myös niin, että koko ohjelma oli kerrallaan keskusmuistissa, ja ohjelmien kopioimisen asemesta muutettiin muistihallinnan rekisterien arvoja. Tällöin hitausongelma hellitti selvästi, mutta virhealttius jäi jäljelle. Erityisen ongelmallisia olivat kerrostetut käyttöjärjestelmäytimet, sillä virhe kerrostuksessa aiheutti varmasti käyttöjärjestelmän kaatumisen.

Ennen virtuaalimuistin tuloa arvioitiin jopa puolet suuren ohjelmistoprojektin ongelmista tulevan kerrostuksen käytöstä. Virtuaalimuisti ratkaisee virheiden osalta kerrostuksen ongelmat. Liian pienelle keskusmuistille ei virtuaalimuistikaan voi mitään, mikä näkyy ohjelman ajon hitautena.

Lähteet muokkaa

  • Ilkka Haikala ja Hannu-Matti Järvinen: Käyttöjärjestelmät (luku 4). Talentum 2003. ISBN 951-762-837-4