62
KJ-I S2003 / A uvo Häkkinen, CT50A2601 / He 6 - 1 VIRTUAALIMUISTI VIRTUAALIMUISTI Stallings, Luku 8.1 Stallings, Luku 8.1 Käyttöjärjestelmät Käyttöjärjestelmät

VIRTUAALIMUISTI Stallings, Luku 8.1

  • Upload
    romeo

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Käyttöjärjestelmät. VIRTUAALIMUISTI Stallings, Luku 8.1. Sisältö. Ohjelman suoritus virtuaalimuistissa Sivutus Osoitemuunnospuskuri TLB Lisää sivutauluista Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä. Käyttöjärjestelmät I. OHJELMAN SUORITUS VIRTUAALIMUISTISSA. - PowerPoint PPT Presentation

Citation preview

Page 1: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 1

VIRTUAALIMUISTI VIRTUAALIMUISTI Stallings, Luku 8.1Stallings, Luku 8.1

Käyttöjärjestelmät Käyttöjärjestelmät

Page 2: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 2

SisältöSisältö

Ohjelman suoritus virtuaalimuistissa Sivutus Osoitemuunnospuskuri TLB Lisää sivutauluista Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä

Page 3: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 3

Käyttöjärjestelmät IKäyttöjärjestelmät I

OHJELMAN

SUORITUS

VIRTUAALIMUISTISSA

Page 4: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 4

Suoritus virtuaalimuistissaSuoritus virtuaalimuistissa Ohjelman loogiset osoitteet muutetaan

fyysisiksi osoitteiksi vasta ajonaikana prosessin paikka muistissa vaihtelee,

sillä ei vaikutusta osoitemuunnokseen MMU

KJ käsittelee ohjelmaa sivuina tai

kääntäjä jakaa ohjelman segmentteihin, jotka KJ voi sijoitella vapaasti muistiin KJ:n kirjanpito osien sijainnista prosessin

sivutaulussa tai segmenttitaulussa

Page 5: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 5

Suoritus virtuaalimuistissaSuoritus virtuaalimuistissa

Kaikkien sivujen / segmenttien ei tarvitse olla muistissa yhtäaikaa riittää, että suoritettava osa ja sen data muistissa paikallisuus, suoritus viihtyy samoilla alueilla ks. kuva 8.1

Laitteisto (MMU) ja KJ huolehtivat, että tarvittavat osat oikeaan aikaan muistissa MMU huomaa puuttumisen KJ noutaa muistiin

= Virtuaalimuisti

Page 6: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 6

Suoritus virtuaalimuistissaSuoritus virtuaalimuistissa Sivu- / segmenttitaulun alkiossa

läsnäolobitti, josta käy ilmi onko sivu / segmentti muistissa

Lataaja tuo aluksi muistiinvain muutaman sivun / segmentin

(ennaltanouto) tai ei yhtään (tarvenouto)

Prosessi CPU:lle MMU:hun sivu- / segmenttitaulun fyysinen muistiosoiteTLB:n sisällön mitätöinti (Translation Lookaside Buffer, nopea välimuisti

sivutaulujen viimeisimpiin viittauksiin)

Page 7: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 7

Puutoskeskeytys Puutoskeskeytys (memory / page fault)(memory / page fault) Jos viitattu osoite ei ole muistissa,

MMU aiheuttaa keskeytyksen

KJ siirtää keskeytyksen aiheuttaneen prosessin (A) Blocked-tilaan

KJ etsii sivulle / segmentille vapaan paikan muistista

KJ käynnistää ohjaimen siirtämään puuttuvaa sivua / segmenttia ko. paikkaan

Siirron aikana CPU suorittaa muita prosesseja

Page 8: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 8

Puutoskeskeytys Puutoskeskeytys

Kun siirto valmis, ohjain keskeyttää suorituksessa olevan prosessin B

KJ päivittää prosessin A sivu/segmenttitaulunja siirtää prosessin A Ready-tilaan

Suoritus palaa takaisin prosessiin B

Kun prosessi A taas aikanaan suoritukseen, se viittaa uudestaan äskeiseen osoitteeseen nyt viitatun mp:n sisältö muistissa

Page 9: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 9

Virtuaalimuistin etuja Virtuaalimuistin etuja

Muistia käytetään tehokkaammin hyväksi kustakin prosessista vain tarvittava osa muistissa montako sivua/prosessi pidetään muistissa yhtäaikaa?

lokaalit ja globaalit algoritmit

Prosessoria käytetään (kenties) tehokkaammin moniajoastetta voi nostaa

muistiin mahtuu paremmin, ei ruuhkautumista

Page 10: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 10

Virtuaalimuistin etuja Virtuaalimuistin etuja

Voi ajaa fyysistä muistia suurempia ohjelmia ohjelmoijan ei tarvitse huolehtia kerrostuksesta

Osoiteavaruus voi olla valtaisa verrattuna todelliseen muistin määrään esim. 32 bittiä => 4GB:n osoiteavaruus

Looginen osoiteavaruus saa sisältää ‘reikiäkin’ vain tarvittavat osat kuvataan fyysiseen muistiin

Page 11: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 11

Käyttöjärjestelmät Käyttöjärjestelmät

SIVUTUS

Page 12: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 12

Sivutus Sivutus Kuva 7.11Kuva 7.11

Page 13: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 13

Sivutaulu Sivutaulu Kuva 8.2aKuva 8.2a

Jokaisella prosessilla oma sivutaulu missä sivutiloissa tämän prosessin sivut sijaitsevat

Jokaisessa alkiossa läsnäolobitti P P=1: sivu muistissa, alkiossa sivutilan numero P=0: sivu ei muistissa, alkiossa esim. Tieto, missä

sivu sijaitsee tukimuistissa (suoraan/epäsuorasti)

Page 14: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 14

SivutauluSivutaulu

Jokaisessa sivutaulun alkiossa muutettu-bitti M (modified) M=1: sivun sisältö muuttunut muistissa, sivu kirjoitettava

levylle, jos varaus vapautetaan M=0: sivua ei muutettu, ei tarvitse kirjoittaa levylle

sivutilaa vapautettaessa Sivutaulun alkiossa mahd. myös muuta tietoa

käyttötapabitti: R / RW suojaustasobitti/bitit: KJ:n sivu / tav. prosessin sivu milloin sivuun viitattu viimeeksi tai viitelaskuri

poistoalgoritmit tarvitsevat näitä

Page 15: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 15

Osoitemuunnos Osoitemuunnos

Prosessien sivutaulut tavallisesti eri kokoisia ja voivat olla suuria koko riippuu sivukoosta ja ohjelman koosta koko taululle ei voi varata tilaa MMU:sta

sivutaulu muistissa ja osa jopa levyllä sivutaulun fyysinen osoite PCB:ssä

MMU:ssa sivutaulurekisteri PTR, jossa suoritettavan prosessin sivutaulun fyysinen alkuosoite

Page 16: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 16

Osoitemuunnos Osoitemuunnos

MMU jakaa loogisen osoitteen pariksi (sivunro,siirtymä) Esim. kun sivukoko 1024 B (= 210)

10 viimeistä bittiä siirtymä alkuosa sivunumero

MMU korvaa sivunumero-bitit sivutaulusta löytyvillä sivutilannumero-biteillä ts. MMU katenoi sivutilanumeron ja siirtymän bitit

Helppo laitetoiminto

Page 17: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 17

Looginen vs Fyysinen osoite Looginen vs Fyysinen osoite Kuva 7.12Kuva 7.12

= 1502= 1502

6*1024 + 478 6*1024 + 478

474788

66

11

= 6766= 6766

Page 18: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 18

Osoitemuunnos Osoitemuunnos Kuva 8.3Kuva 8.3

Page 19: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 19

Käyttöjärjestelmät Käyttöjärjestelmät

Osoitemuunnospuskuri

TLB

Page 20: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 20

Osoitemuunnospuskuri TLBOsoitemuunnospuskuri TLB Koska sivutaulu muistissa, jokaiseen

muunnokseen näyttäisi liittyvän yksi ylimääräinen muistinouto hae sivutaulun alkio MMU:hun tee osoitemuunnos nouda / talleta ko. fyysiseen osoitteeseen

Ratkaisu: osoitemuunnospuskuri TLB Translation Lookaside Buffer

MMU pitää tallessa edellisissä muunnoksissa tarvitut sivutaulun tiedot paikallisuus: sitä tarvitaan het’kohta uudestaan sivutaulun alkiota ei tarvitse noutaa joka kerta

Page 21: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 21

Etsintä TLB:stä Etsintä TLB:stä TLB nopeiden rekistereiden joukko

esim. 32 rekisteriä Käyttää assosiatiivista hakua

vertailu kohdistuu kaikkiin alkioihin yhtäaikaa etsintä nopeaa laitetoiminto!

Kaikilla prosesseilla sivut 0, 1, 2, …, mutta eri sivutiloissa TLB tyhjennettävä prosessin vaihdossa

TLB:n alkiossa (ainakin) sivunro, sivutaulun alkio, validibitti V

Page 22: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 22

Etsintä TLB:stäEtsintä TLB:stä KKuva 8.uva 8.99

Page 23: VIRTUAALIMUISTI  Stallings, Luku 8.1

Kuva 8.8. Kuva 8.8.

PerformPerformpage page

replacementreplacement

Page 24: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 24

TLB ja osoitemuunnosTLB ja osoitemuunnos

sivunro = loog. osoitteen alkubititsiirtymä = loog. osoitteen loppubitit

Jos sivun tiedot ei TLB:ssä tai V=0,nouda TLB:hen sivutaulun alkio

osoitteesta PTR + sivunro

Jos P=0, aiheuta sivunpuutoskeskeytys

Fyys.os = Katenoi(Sivutilanro,Siirtymä)

Kun keskeytys käsitelty, sama osoite tulee viitattavaksi uudelleen Esim. PC:n kasvatus vasta osoitemuunnoksen jälkeen

Page 25: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 25

TLB ja osoitemuunnos TLB ja osoitemuunnos Kuva 8.7Kuva 8.7

Page 26: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 26

TLB:n alustusTLB:n alustus Kun suoritettava prosessi vaihtuu,

TLB:n vanha sisältö mitätöitävä PTR osoittamaan uuden prosessin sivutauluun nollattava TLB:n alkioiden validibitit V=0

Koska TLB suhteellisen pieni, tarvitaan sopiva laitetason algoritmi, jonka perusteella valitaan korvattava alkio TLB:n alkiossa mahd. myös laitetason viitelaskureita:

poista se, jota ei ole aikoihin käytetty

Page 27: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 27

TLB ja välimuisti TLB ja välimuisti Kuva 8.10Kuva 8.10

Page 28: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 28

Käyttöjärjestelmät Käyttöjärjestelmät

Lisää sivutauluista

Page 29: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 29

Lisää sivutauluistaLisää sivutauluista Monet järjestelmät sallivat suuren

virtuaaliosoiteavaruuden looginen osoite esim. 32 tai 64 bittiä

Jokaisella prosessilla suuri sivutaulu jos 32-bittinen osoite ja sivukoko 4KB (12 bittiä),

niin sivuja 220 = 1M kappaletta jokainen alkio useita tavuja, esim. 4 B,

joten sivutaulu 4 MB

Myös sivutaulu jaetaan sivuihin ja myös sivutaulun osia voidaan pitää levyllä riittää, kun suorituksessa olevaan osaan

liittyvät sivut muistissa

Page 30: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 30

2-tasoinen sivutaulu 2-tasoinen sivutaulu Kuva 8.4Kuva 8.4

Ylin hakemisto mahtuu yhteen sivuun, pysyvästi muistissa

1 K alkiota (= 1024 = 210)

1K * 1K = 1M alkiota

Page 31: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 31

2-tasoinen sivutaulu 2-tasoinen sivutaulu Kuva 8.5Kuva 8.5

Page 32: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 32

Käänteinen sivutaulu Käänteinen sivutaulu

Fyys. muisti pienempi kuin virtuaaliavaruus Kirjaa sivutilakohtaisesti, mikä sivu sijaitsee

ko. sivutilassa vain yksi globaali käänteinen sivutaulu yksi alkio per fyysinen sivutila,

jossa ko. sivutilassa sijaitsevan sivun numero Jokaisella prosessilla sivu 0, 1, 2, ...

miten tiedetään, minkä prosessin sivu kyseessä? alkiossa myös prosessin numero (pid) MMU:hun rekisteri, jossa suoritettavan prosessin pid

Page 33: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 33

Käänteinen sivutaulu Käänteinen sivutaulu

Käänteisen ST:n indeksit sivutilan numeroita, mutta prosessin osoitteesta käy ilmi sivunumero ja siirtymä etsittävä sisällön perusteella

Etsintä peräkkäishakuna tehotonta Käytetään apuna hajautustaulua

käytä hajautinta indeksin laskentaan, etsi kotisolusta samaan hajautusosoitteeseen kuvautuvat alkiot linkitetty

toisiinsa Jos sivun tiedot ei listassa,

aiheuta sivunpuutoskeskeytys

Page 34: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 34

Käänteinen sivutaulu Käänteinen sivutaulu KKuva 8.uva 8.66

(Täydennetty)

Page 35: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 35

Sopiva sivukoko? Sopiva sivukoko? Laitteisto (MMU) määrää mitä sivukokoa

KJ:n käytettävä sivukoko aina 2:sen potenssi

nopea osoitemuunnos katkaisu ja katenointi helppoa

Mitä pienemmät sivut, sitä enemmän sivuja/prosessi = suuremmat sivutaulut pienempi sivutaulu vie vähemmän tilaa ison sivutaulun osia useammin levyllä

enemmän keskeytyksiä

Page 36: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 36

Sopiva sivukoko? Sopiva sivukoko? Pieni: aiheuttaa vähän sisäistä

pirstoutumista

Iso: sisältää paljon esim. tarpeetonta koodia

Iso: saattaa sopia paremmin yhteen levysiirtojen kanssa (lohkokoko)

hakuvarren siirto ja pyörähdysviive syö paljon aikaa

Iso: viittaus useammin samalle sivulle TLB:n osumatodennäköisyys hyvä

Page 37: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 37

Sivupuutosten määräSivupuutosten määrä Prosessille varatulle

alueelle sopii enemmän pieniä sivuja kuin suuria

Pieneltä sivulta viite usein muille sivuille, muistiin valikoituu pian ne sivut joita käytetään paljon vähän sivupuutoksia

Tn. että isolta sivulta viitattu sivu muistissa pienempi paljon sivupuutoksia

Kun sivukoko lähestyy prosessin kokoa, vähän sivupuutoksia P=prosessin koko

Page 38: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 38

Sivupuutosten määrä Sivupuutosten määrä Paljonko sivutiloja

per prosessi?

Jos vähän sivutiloja, KJ heittää helposti pois sivun, jota tarvitaan pian uudelleen paljon sivupuutoksia

Jos saa paljon, niin lähes kaikki sivut mahtuvat muistiin vähän sivupuutoksia

lokaalit vs. globaalit algoritmitW = working set size

N = total # of pages in process

Page 39: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 39

Sopiva sivukoko? Sopiva sivukoko?

Yleisimmin käytetty sivukoko 4KB ks. myös taulukko 8.2

Tämä ei sovellu kaikkiin tarpeisiin, eräät prosessorit sallivat useita sivukokoja Pentium sallii 2 kokoa: 4KB tai 4MB MIPS peräti 7 eri koko: 4KB ..16MB

Page 40: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 40

Erilaisia sivukokojaErilaisia sivukokoja

Page 41: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 41

Käyttöjärjestelmät Käyttöjärjestelmät

SEGMENTOINTI

Page 42: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 42

Segmentointi Segmentointi Kuva 7.11Kuva 7.11

Page 43: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 43

Segmentointi Segmentointi

Perusideoiltaan samanlainen kuin sivutus, ‘yksiköt’ vain keskenään erikokoisia segmenttejä

Jokaisella prosessilla oma segmenttitaulu Kertoo missä tämän prosessin segmentit sijaitsevat

Osoitemuunnos segmenttitaulun avulla

TLB:n käyttö kuten edellä

MMU:n rekisterissä nyt segmenttitaulun fyysinen osoite

Page 44: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 44

Segmenttitaulu Segmenttitaulu Kuva 8.2bKuva 8.2b

Jokaisessa alkiossa läsnäolobitti PP=1: segmentti muistissa,

alkiossa fyysinen alkuosoite sekä pituusJokaisessa alkiossa muutettu-bitti M

kuten sivutaulussa

Jokaisessa alkiossa myös muuta tietoakuten sivutaulussa

Page 45: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 45

Looginen vs Fyysinen osoiteLooginen vs Fyysinen osoite

= 4848 = 4848

82248224

8976 8976 ==

757522

Page 46: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 46

OsoitemuunnosOsoitemuunnossegm.nro = loog. osoitteen alkubititsiirtymä = loog. osoitteen loppubitit

Jos segmentin tiedot ei TLB:ssä tai V=0, nouda TLB:hen segmenttitaulun alkio

osoitteesta STR + segm.nro

Jos P=0, aiheuta segm.puutoskeskeytys

Jos siirtymä > Length,aiheuta keskeytys ‘virh.muistiosoite’

fyys. osoite = Base + Siirtymä

Kun keskeytys käsitelty, sama osoite tulee viitattavaksi uudelleen

Page 47: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 47

Osoitemuunnos Osoitemuunnos Kuva 8.12Kuva 8.12

Page 48: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 48

Huomioita Huomioita Segmenttitaulun alkiossa alkuosoite ja

pituus segmentin kokoa helppo kasvattaa/pienentää

dynaamisesti saattaa vaatia segmentin uudelleensijoittamista

osoitteen oikeellisuus tarkistettavissa MMU:ssa Segmentit erikokoisia,

syntyy ulkoista pirstoutumista Varaus/vapautus ei niin tehokasta kuin sivuilla Muistin tiivistämistarvetta

Segmentti sopiva suojauksen yksikkö ohjelmoija määrittelee segmentit ja käyttöoikeudet käyttötapa kopioitu segmenttitaulun alkioon

Page 49: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 49

Käyttöjärjestelmät Käyttöjärjestelmät

Segmentointi ja sivutus yhdistettynä

Page 50: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 50

Sivuttava segmentointiSivuttava segmentointi

Eräät laitteistot ja KJ:t jakavat myös segmenttejä sivuiksi, ohessa eräs tapa muistia helpompi hallita samankokoisina sivuina ei ulkoista pirstoutumista ei tiivistämistarvetta

Jokaisella prosessilla oma segmenttitaulu ja yksi sivutaulu per segmentti

Vrt. 2-tasoinen sivutaulu

Page 51: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 51

Sivuttava segmentointi Sivuttava segmentointi Tan01 4-39Tan01 4-39

PCB

Segmenttitaulu

Page 52: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 52

Sivuttava segmentointiSivuttava segmentointi Looginen osoite jakautuu nyt kolmeen osaan

segmenttinumero segmentin sivutaulun fyysinen osoite

löytyy segmenttitaulun tästä alkiosta sivunumero

sivunumeroa vastaava sivutilan numero

löytyy sivutaulun tästä alkiosta siirtymä

sivulla viitattu sana näin kaukana sivun alusta

Myös segmenttitaulua / sivutaulua voidaan sivuttaa

Page 53: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 53

Sivuttava segmentointiSivuttava segmentointi Kuva 8.2cKuva 8.2c

Segmentin alkuosoitteen (segment base) paikalla ko. segmentin sivutaulun fyysinen osoite

P-bitti ja M-bitti vain sivutaulun alkiossa Yhteiskäytön ja suojauksen data

luonnollisimmin segmenttitaulun alkiossa oikeudet annettu koko segmenttiin (sen kaikkiin sivuihin)

Page 54: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 54

Osoitemuunnos Osoitemuunnos Kuva 8.13Kuva 8.13

Page 55: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 55

Hyötyjä Hyötyjä Ratkaisee dynaamisen linkittämisen

ongelmakohdat uuden segmentin (dynaaminen) linkittäminen

tarkoittaa vain uuden alkion lisäämistä segmenttitauluun

Segmentin koko voi kasvaa sivu kerrallaan, eikä segmentille tarvitse etsiä uutta paikkaa fyysisessä muistissa

Yhteiskäyttö ja käyttöoikeudet voi määrittää segmenttikohtaisiksi kauniisti loogisten kokonaisuuksien mukaan useita erilaisia suojaustasoja

Page 56: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 56

Käyttöjärjestelmät Käyttöjärjestelmät

Yhteiskäyttö

Page 57: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 57

Yhteiskäyttö Yhteiskäyttö

Jos usea prosessi ajaa samaa koodia, riittää siitä yksi kopio muistissa jokaisen prosessin sivu / segmenttitaulussa

viitteet yhteisen koodin ja datan

sisältäviin sivutiloihin / segmentteihin mutta kullakin prosessilla omat tilat yksityiselle datalle

Koodin oltava vapaakäyntistä ei saa muuttua

Sivutus ei paras tapa yhteiskäyttöä ajatellen: sivu ‘kokoyksikkö’, ei looginen yksikkö käyttöoikeudet vaikea rajata funktiotasolla

Page 58: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 58

Yhteiskäyttö: editori Yhteiskäyttö: editori Tan01 4-31Tan01 4-31

Page 59: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 59

Segmentointi ja yhteiskäyttö Segmentointi ja yhteiskäyttö Segmentointi kaunis tapa yhteiskäyttöä

ajatellen ohjelman jakaminen eripituisiin segmentteihin

loogisempaa kuin jakaminen tasapitkiksi sivuiksi esim. yhteiskäyttöön tarkoitettu data omaksi

segmentiksi, yksityinen data omaksi segmentiksi Ohjelmoija kertoo kääntäjälle

haluamastaan segmenttijaosta haluamistaan käyttöoikeuksista

Kääntäjä muodostaa tällä perusteella ohjelman loogiset osoitteet segmentti ja siirtymä sen sisällä

Page 60: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 60

Toteutuksessa huomioitavaaToteutuksessa huomioitavaa Työjoukon koko

paljonko tilaa varataan per prosessi? Hakupolitiikka

milloin sivu / segmentti tuodaan muistiin? Sijoituspolitiikka

minne prosessin sivu / segmentti sijoitetaan? Poistopolitiikka:

mikä varaus vapautetaan? globaali/lokaali: joku sivu / joku prosessin oma sivu?

Page 61: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 61

Yhteenvetoa Yhteenvetoa ks. Taulukko 8.1

Sivutus Segmentointi

Keskusmuisti jaettu vakiokokoisiin sivutiloihin

KJ jakaa prosessin vakiokokoisiin sivuihin

Ohjelmoija/kääntäjä jakaa prosessin vaihtelevankokoiset segmentteihin

Prosessikohtaiset sivutaulut: missä sivutilassa sivu sijaitsee

Prosessikoht. segmenttitaulut: segmentin alkuos. ja pituus

Virtuaaliosoite: (sivu, siirtymä) Virtuaalios.: (segmentti, siirtymä)

Sisäistä pirstoutumista Ulkoista pirstoutumista muistin tiivistämistarve

Vapaiden sivutilojen lista Vapaiden muistialueiden lista

Kaikki sivut ei muistissa: läsnäolobitti sivutaulun alkiossa

Kaikki segmentit ei muistissa läsnäolobitti seg.taulun alkiossa

Page 62: VIRTUAALIMUISTI  Stallings, Luku 8.1

KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen

6 - 62

KertauskysymyksiäKertauskysymyksiä Miten paikallisuus ja virtuaalimuisti

liittyvät toisiinsa? Mitä tietoa on talletettava sivutauluun?

Entä segmenttitauluun? Miksi segmentointi aiheuttaa muistin

tiivistämistarvetta, mutta sivutus ei? Miksi osoitemuunnos vasta ajoaikana? Mitä hyötyä on TLB:n käytöstä? Mitä on TLB:n sisältönä?