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
Jan 21, 2016
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
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ä
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
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
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
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)
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
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
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
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 11
Käyttöjärjestelmät Käyttöjärjestelmät
SIVUTUS
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 12
Sivutus Sivutus Kuva 7.11Kuva 7.11
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)
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ä
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
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
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 18
Osoitemuunnos Osoitemuunnos Kuva 8.3Kuva 8.3
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
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
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 22
Etsintä TLB:stäEtsintä TLB:stä KKuva 8.uva 8.99
Kuva 8.8. Kuva 8.8.
PerformPerformpage page
replacementreplacement
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 25
TLB ja osoitemuunnos TLB ja osoitemuunnos Kuva 8.7Kuva 8.7
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
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
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
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
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 31
2-tasoinen sivutaulu 2-tasoinen sivutaulu Kuva 8.5Kuva 8.5
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
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
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)
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ä
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ä
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
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
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 40
Erilaisia sivukokojaErilaisia sivukokoja
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 41
Käyttöjärjestelmät Käyttöjärjestelmät
SEGMENTOINTI
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 42
Segmentointi Segmentointi Kuva 7.11Kuva 7.11
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
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
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
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 47
Osoitemuunnos Osoitemuunnos Kuva 8.12Kuva 8.12
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
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ä
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 51
Sivuttava segmentointi Sivuttava segmentointi Tan01 4-39Tan01 4-39
PCB
Segmenttitaulu
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
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)
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 54
Osoitemuunnos Osoitemuunnos Kuva 8.13Kuva 8.13
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
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ö
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
KJ-I S2003 / Auvo Häkkinen, CT50A2601 / Heikki Kälviäinen
6 - 58
Yhteiskäyttö: editori Yhteiskäyttö: editori Tan01 4-31Tan01 4-31
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ä
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?
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
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ä?