Muisti: - keskusmuisti - välimuisti auttaa "lokaalisuuden periaatteen" takia - rekisterit Lokaalisuus: - useimmiten tarvitaan lähellä toisiaan olevaa dataa - useimmiten suoritetaan lähekkäistä koodia Lataaminen: Ohjelman koodi ladataan keskusmuistiin ja luodaan sille prosessi. Swap / heittovaihto: - Usein ohjelmat odottavat I/O:ta, joten ne voidaan viedä "jäähylle" kovalevylle - Mahtuu enemmän prosesseja (data, koodi, pino, dynaamiset alueet) kuin keskusmuistiin mahtuisi Segmentointi: - jaetaan muistia "loogisiin" alueisiin käyttötarkoituksen mukaan (esim. koodisegmentti, datasegmentti, ...) Sivutus: - jaetaan muisti (hybridiratkaisussa jaetaan segmentit) sivun kokoisiin palasiin. Sivun koko kätevää olla sama kuin kovalevyn lohkon koko. Mitä saadaan: - käynnissä voi olla paljon enemmän ohjelmia kuin keskusmuistiin mahtuu Mitä tämä vaatii: - prosessorissa pitää olla teknologia osoitteenmuodostukseen - käyttöjärjestelmän tuki teknologian käyttöön. Osoitteenmuodostus: - virtuaaliosoitteen muuntaminen fyysiseksi laitteistotasolla Virtuaaliosoite jossain 64-bittisessä osoiterekisterissä: 1111111111111111111 111100011000001100010010101101010010010110101 Virtuaalisivun numero: Muistipaikka sivulla: 111100011000001100010010101101010 010010110101 Hybridiratkaisussa esim. Segmentin numero: Sivun numero: Muistipaikka: 111100011 000001100010010101101010 010010110101 Käytännön toteutuksessa voi olla useampi taso vielä: Segmentin numero: Sivuhakemisto: Sivu: Muistipaikka: 111100011 0000011000 10010101101010 010010110101 Vastaava fyysinen osoite: Fyysisen sivun "numero": Muistipaikka: 111111111111111111111 1111111111100000100000000111101 010010110101 Mitä pitää siis olla: Jokaiselle prosessille kartoistustaulukko prosessille varatuista sivuista: Sivutaulu: - jokaiselle prosessin omistamalle sivulle: + tieto, onko sivu muistissa vai kovalevyllä + paikka kovalevyllä + fyysisen sivun numero Prosessori käyttää sivutaulua! Viimeaikaiset tiedot TLB:ssä. Jos prosessori osoitteenmuodostuksessa havaitsee, että sivu ei ole muistissa, seuraa keskeytys nimeltä sivunvaihtovirhe (page fault) -> Kontrolli käyttöjärjestelmälle -> mahdollisesti pitää tallentaa vanhoja tietoja (vapauttaa kehys, jos kaikki oli täynnä) ja pitää ladata tarvittava uusi sivu vapautuneeseen kehykseen. Käyttöjärjestelmällä on Frame Table eli kehystaulukko Kaikkien fyysisen muistin sivujen (kehysten) kohdalta tiedot, mm: - mikä prosessi käyttää - muutosbitti eli onko sivun sisältö muuttunut (eli tarvitseeko tallentaa tiedot, jos kehys vapautetaan) - käyttölaskuri, seinäkelloaika (Eli osataan tietää mikä on harvimmin käytetty sivu... sen kehys kannattanee vapauttaa, eli least-recently-used LRU) - suojaustietoa (saako sivua kirjoittaa / suorittaa)