Käyttöjärjestelmät II. Muistinhallinnan esimerkit. UNIX / Solaris MUISTINHALLINTA. UNIX / Solaris (SVR4) UNIX/Solaris: Tietorakenteita

Samankaltaiset tiedostot
UNIX / Solaris MUISTINHALLINTA

UNIX / Solaris (SVR4)

UNIX / Solaris (SVR4)

Muistinhallinnan esimerkit UNIX, Solaris, Linux, W2000

KJ-II K2006 / Auvo Häkkinen - Teemu Kerola Tehtävät, staattinen vs. dynaaminen partitiointi, Buddy System sivutus, segmentointi

Lähtötiedot tiedot / seuraavaksi? Käyttöjärjestelmät II MUISTINHALLINNAN OHJELMISTO. Looginen vs. fyysinen osoite Perusvalinnat.

MUISTINHALLINNAN OHJELMISTO

Perusvalinnat. Sivun koko. Sivun koko? Sopiva sivukoko? MUISTINHALLINNAN OHJELMISTO: Sivutuksen algoritmit. Käyttöjärjestelmät

VIRTUAALIMUISTI. Stallings, Luku 8.1

Sisältö VIRTUAALIMUISTI. Stallings, Luku 8.1. Suoritus virtuaalimuistissa. Suoritus virtuaalimuistissa. Puutoskeskeytys. Suoritus virtuaalimuistissa

Sivun koko. Perusvalinnat. Sopiva sivukoko? Sivun koko? MUISTINHALLINNAN OHJELMISTO: Sivutuksen algoritmit. Käyttöjärjestelmät, Luento 9

ltö Luento 6: VIRTUAALIMUISTI Luento 7: Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä Suoritus virtuaalimuistissa

MUISTINHALLINNAN OHJELMISTO: Sivutuksen algoritmit. Stallings, Luku 8.2

Luento 6: VIRTUAALIMUISTI

VIRTUAALIMUISTI. Stallings, Luku 8.1

Sisältö VIRTUAALIMUISTI. Stallings, Luku 8.1. Suoritus virtuaalimuistissa. Suoritus virtuaalimuistissa. Puutoskeskeytys. Suoritus virtuaalimuistissa

Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS

Luento 7: VIRTUAALIMUISTIN SIVUTUS JA SEGMENTOINTI

Kuva 8.7. u Muunnos prosessin sivunumerosta sivutilanumeroksi u Kussakin alkiossa: u Katenoimalla. u MMU:ssa; juuri äsken käytettyjä muunnoksia

ltöä (Luennot 5&6) Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS Pikakertaus: : a) b) c) Dyn.. part.: sijoitus Kuva Buddy System: esimerkki

Osio 2: Luennot 4-7 Muistinhallinta

MUISTINHALLINTA. Stallings, Luku 7

Käyttöjärjestelmät II

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

Käyttöjärjestelmät II

Osio 2: Luennot 4-7 Muistinhallinta YKSINKERTAINEN MUISTINHALLINTA. ltöä YLEISTÄ MUISTINHALLINNASTA. Looginen muisti.

Muistihierarkia Kiintolevyt I/O:n toteutus

Stallings, Luku 8.1. KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 7-1

Luento 9 Järjestelmän ulkoinen muisti

Stallings, Luku 7. KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 6-1

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus.

Luento 9 Järjestelmän ulkoinen muisti

Järjestelmän ulkoinen muisti I/O

Muistinhallinta. Teemu s Cheesecake. Tietokoneen rakenne

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Osio 2: Luennot 5-8 Muistinhallinta

Muistinhallinta. Tietokoneen rakenne. Stallings: Ch Heittovaihto vs. Virtuaalimuisti Esim: Pentium. Luento 5-1

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus (2)

Muistihierarkia Kiintolevyt I/O:n toteutus

Tietokoneen toiminta, K Tavoitteet (4)

Stallings, Luku 8.1. KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 8-1

Tietorakenteet ja algoritmit

u saantimenetelmät u kirjanpito vapaista lohkoista (taltiolla!) u hierarkkinen hakemistorakenne: kirjanpito tdstoista u tdstojen käyttö

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Käyttöjärjestelmät: Virtuaalimuisti

Sisältöä MUISTINHALLINTA. Stallings, Luku 7. Fyysinen muisti YLEISTÄ MUISTINHALLINNASTA. Looginen muisti. Prosessin rakenne

Luento 9 Järjestelmän ulkoinen muisti

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Stallings, Luku 4.1. KJ-I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 4-1. KJ-I I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 12-1

D B. Tiedostojen käsittely

Luento 5: Muistin hallinta Luento 5. Luento 5-1. Luento 5-3. u Continuous memory allocation for partition. Luento 5-5

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmän rakenne

Osio 3: Siirräntä ja tiedostojärjestelmä

Sisältöä PROSESSIT JA NIIDEN HALLINTA. Prosessi. Prosessi virtuaalimuistissa. Prosessi. Prosessi virtuaalimuistissa. Käyttöjärjestelmät

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

KJ-II K2006 / Auvo Häkkinen - Teemu Kerola

NTÄ. Luento 8: SIIRRÄNT. Osio 3: Siirräntä ja tiedostojärjestelmä. ltö. Yleistä siirrännästä. Siirtonopeuksia (teoreettisia) Kuva 11.1.

Prosessi virtuaalimuistissa PROSESSIT JA NIIDEN HALLINTA. Sisältöä. Prosessi virtuaalimuistissa. Prosessi. Prosessi. Käyttöjärjestelmät, Luento 4

LUENTO 0. Tervetuloa! Käyttöjärjestelmät II 2 ov Teemu Kerola. Helsingin yliopisto Tietojenkäsittelytieteen laitos

PROSESSIT JA NIIDEN HALLINTA

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Käyttöjärjestelmät II. SMP, Mikroytimet. Prosessit yleensä. UNIX prosessit. UNIX SVR4 Prosessit. UNIX prosessin kuvaaja

Osio 3: Prosessit, siirräntä ja tiedostojärjestelmä

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

KJ-II K2006 / Auvo Häkkinen - Teemu Kerola II:ssa?

Prosessit ja säikeet SMP, Mikroytimet W2K säikeet

u vapaakäyntisyys (reentrancy) u Yhteinen koodialue u kullakin oma data-alue, pino, PCB u osoitteet suhteellisia prosessin alun suhteen

Algoritmit 1. Luento 4 Ke Timo Männikkö

Jakso 4 Aliohjelmien toteutus

D B. Levytiedostojen käsittely. Levytiedostojen käsittely

RJESTELMÄ OSA 2 Stallings, Luku PALVELUPYYNNÖT. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Stallings, Luku

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

LUENTO 2. u moniajoa monen käyttäjän ympäristössä, oma KJ versio. u sisältää keskeiset tietoliikenneprotokollat

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Dynaaminen muisti Rakenteiset tietotyypit

NYKYAIKAISET KÄYTTÖ- JÄRJESTELMÄT

Jakso 8 Ohjelman suoritus järjestelmässä

Jakso 8 Ohjelman suoritus järjestelmässä

Luento 3: PROSESSIT JA NIIDEN HALLINTA

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 5 (verkkoluento 5) Suoritin ja väylä

Jakso 5 Suoritin ja väylä

Prosessi perinteisesti

Stallings, Luku 4.1. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

Windows ja Linux. Lappeenrannan teknillinen yliopisto Teknistaloudellinen tiedekunta Tietotekniikan koulutusohjelma

Luento 4 Aliohjelmien toteutus

Luento 9 Järjestelmän ulkoinen muisti. Muistihierarkia Kiintolevyt Muut pyörivät levyt I/O:n toteutus

Jakso 5 Suoritin ja väylä

Transkriptio:

Käyttöjärjestelmät II LUENTO 6 Käyttöjärjestelmät II Muistinhallinnan esimerkit UNIX, Solaris, Linux W2000 UNIX / Solaris MUISTINHALLINTA Ch 8.3-6 6 [Stal[ 05] 1 2 UNIX / Solaris (SVR4) Vanhoissa UNIXeissa ei virtuaalimuistia u heittovaihtoivat aina kokonaisia prosesseja Sivutus u tarvenouto u osittain ytimessä u osittain pagedaemon-prosessissa (pid=2) F käynnistyy aika-ajoin (esim. 250 ms:n välein) tarkistamaan, onko riittävästi vapaita sivutiloja (25%?) Heittovaihto u swapper-prosessi (pid=0) u pagedaemon käynnistää tarvittaessa u vain PCB (user structure) ja sivutaulu jää muistiin UNIX/Solaris: Tietorakenteita Tbl 8.5 [Stal05] Page table - jokaisella prosessilla oma - alkio per virt. muistin looginen sivu Missä sivu keskusmuistissa? X = 7; P Q P:n sivuja P&Q:n sivu X = 5 P Q P:n sivuja P:n sivu X = 7 Q:n sivu X = 5 Q:n sivuja Q:n sivuja 3 4 UNIX/Solaris: Tietorakenteita Disk block descriptor - alkio per virt. muistin looginen sivu UNIX/Solaris: Tietorakenteita Page frame data table - alkio per fyysinen sivukehys, vapaat sivutilat lisäksi free-listassa Tbl 8.5 [Stal05] Missä sivu tukimuistissa (eli levyllä)? Tbl 8.5 [Stal05] Muistin sivukehyksen tila? Swap-use table - alkio per levyllä oleva sivu Tukimuistissa olevan sivun tiedot? 5 6 KJ-II K2006 / Teemu Kerola (lu 6) 1

UNIX/4BSD: Sivukehystaulu (core map) UNIX SVR4: Korvausalgoritmi globaali poistoalg. 1 KB 16 B sijainti levyllä? kenen? segmentti? Kaksiviisarinen globaali Clock poistoalgoritmi u tutki sivukehystaulua u prosessille annettujen sivukehysten (sivutilojen) lkm vaihtelee u etummainen viisari asettaa Reference count = 0 u perässä tuleva viisari siirtää vapautettavaksi ne, joiden Reference count == 0 (edelleen?) (Fig 10-16 [Tane01]) 7 8 Kaksiviisarinen Clock (Fig 8.23 [Stal05]) Fronthand: set Reference = 0 Backhand: if (Reference == 0) page out Idea: jos ei viittausta viime aikoina (eli viisarien pyyhkimisaikavälillä), niin kehyksessä oleva sivu ei kuulu käyttöjoukkoon Miten nopeasti (frame/sec) viisarit liikkuvat? Montako kehystä on viisareiden väli? Unix SVR4: korvausalgoritmi Kaksiviisarinen clock u viisarien nopeus (scanrate) välillä [slowscan, fastscan] F molemmat viisarit etenevät samaa tahtia kehys kerrallaan, kunnes tarpeeksi vapaata tilaa reset (fronthand); jos U(backhand)==0, vapauta se ; etene u gap (handspread) viisarien välissä F jos spread on pieni, vain hyvin usein viitattuihin sivuihin ehtii tulla viitebitti päälle F Jos gap = 359, niin sama kuin 1-viisarinen clock (Fig. 8.16) u sopii paremmin suurille muisteille, nopeampi kuin tavallinen clock Ylläpidä: minfree < vapaiden sivutilojen lkm < maxfree Jos lkm < minfree, käynnistä swapper heittovaihtamaan prosesseja, jolloin sivutiloja vapautuu äkkiä paljon u pisimmän aikaa vähintään 20 sek. idle nä ollut prosessi? (UNIX 4BSD) u 4 suurimmasta prosessista kauiten muistissa ollut prosessi? Jos lkm lähellä minfree-arvoa u kasvata scanrate-arvoa (vapauta herkemmin, käynnistä algoritmi useammin) Jos lkm lähellä maxfree-arvoa, u pienennä scanrate-arvoa (viitebitin asetukselle aikaa lisää) Fig 8.23 [Stal05] 9 10 UNIX/Solaris: ytimen (kernel) muisti Perusvaraus sivutusta käyttäen Sivuja voi lukita muistiin Ydin varaa ja vapauttaa paljon pieniä alueita ja puskureita u tiedoston polkunimen selvitys u zombie-prosessista jälkeenjäävät tiedot u dynaaminen varaus: proc, vnode, tiedostokuvaaja Ydin varaa ja vapauttaa myös sivun osia u sivun sisällä tehtäviä varauksia hallitaan dynaamista tilanvarausta käyttäen (Ch 7 [Stal05]) u varaus ja vapautus oltava tehokkaita => Laiska Buddy System (Lazy Buddy) u lohkojen yhdistelyä viivästetään, kunnes vapaita lohkoja on liikaa 11 time Buddy System (& lazy buddy system) lazy buddy ei tee heti! (Fig 7.6 [Stal05]) 12 KJ-II K2006 / Teemu Kerola (lu 6) 2

Muistiinkuvatut tiedostot Muistiinkuvattu tiedosto Memory-mapped files Tiedostovälimuisti on muistissa Mapataan virtuaalimuistialue tiedostovälimuistin päälle Tiedoston luku/kirjoitus muistin luku/kirjoitusoperaatioilla u nopea! Monta prosessia voi mapata helposti saman alueen u yhteiskäyttöiset tiedostot (koodi ja/tai data) u ks. kuva seuraavalla sivulla [Tane01] 13 14 Käyttöjärjestelmät II Linux MUISTINHALLINTA Ch 8.4 [Stal 05] Linux: muistinhallinta 32-bittisissä arkkitehtuureissa u 3 GB:n virtuaaliavaruus prosesseille u 1 GB ytimelle (mm. sivutaulut) F fyysisesti todellisen muistin alussa u etuoikeutetussa tilassa viitattavissa 4 GB F prosessin oma 3 GB F ytimen 1 GB Virtuaalinen osoiteavaruus jaettu yhtenäisiin alueisiin, joilla joka sivulla samat suojaukset ja ominaisuudet u vrt. segmentti Ytimen pienin allokoinnin yksikkö: slab (<< sivu) u ei ole tehokasta varata aina kokonaisia sivuja u vain ytimen käyttöön, joka tarvitsee paljon pieniä muistialueita 15 16 Linux: sivutus Laitteistoriippumaton toteutus u Alpha: 64b osoitteet, tuki 3:lle tasolle, sivu 8KB F offset 13 bittiä u x86: 32b osoitteet, käyttää 2-tasoa, sivu 4KB F offset 12 bittiä 3-tasoinen sivutaulu u page directory (PD), 1 sivu u page middle directory (PMD), monta sivua u page table (PT), monta sivua Ylin taso aina muistissa puuttuu x86 sta arvo 0 u säikeen vaihdossa fyysinen osoite MMU:hun (PD) u muut voivat olla tukimuistissa! monta sivua yksi sivu (Fig 8.25 [Stal05]) Linux: osoitemuunnos Jaa osoite 4:ään osaan u indeksi ylimmän tason hakemistoon (PD-offset) u indeksi välitason hakemistoon (PMD-offset) u indeksi sivutauluun (PT-offset) u siirtymä sivun sisällä (offset) PMD_base = PD_base + PD[PD_offset] PT_base = PMD_base + PMD[PMD_offset] Page_base = PT_base + PT[PT_offset] fyys.os = Page-base + offset X86-jippo u välitason hakemiston (PMD) koko vain yksi alkio! u laitteisto tulkitsee ylimmän tason (PD) alkion osoittavan suoraan alimman tason sivutauluun (PT) u sopii muillekin laitteistoille, joissa vain 2 tasoa 17 18 KJ-II K2006 / Teemu Kerola (lu 6) 3

Linux: varausalgoritmi Varaa yhtenäinen lohko (area, region) peräkkäisille sivuille u tehostaa levyltä noutoa ja takaisin kirjoitusta u optimoi siis levyn käyttöaikaa (tilan kustannuksella) Buddy System: 1, 2, 4, 8, 16 tai 32 sivutilaa u toteutus: taulukko, jossa osoittimet koon mukaisiin vapaiden listoihin u paljon sisäistä pirstoutumista F tarvitset 18 sivua, mutta varaat 32 sivua! Linux: noutoalgoritmi Tarvenouto u ei ennaltanoutoa, ei käyttöjoukon algoritmeja Toisaalta, lohkon usea sivu voidaan ehkä hakea kerralla (buddy system) u ennakova nouto? F ei viitepaikallisuuden vaan levypaikallisuuden mukaan (alueellinen paikallisuus) F toivon mukaan lähellä toisiaan 19 20 Linux: korvausalgoritmi Linux memory manager Globaali Clock M-bitillä + eräänlainen LRU u prosessilla dynaaminen varattujen sivutilojen lkm 8 bitin ikälaskuri (age) vrt. U-bitti u MMU kasvattaa, kun sivuun viitataan u taustaprosessi (kswapd) tutkii sekunnin välein F vähentää 1 ikälaskurista jokaisella tutkintakerralla F jos vapaana liian vähän, vapauttaa sivutiloja Mitä suurempi ikälaskuri, sitä tiuhempaan sivuun viitattu Jos ikälaskuri = 0, sivuun ei ole viitattu Korvaa se, jonka laskuri pienin 260 * For choosing which pages to swap out, inode pages carry a 261 * PG_referenced bit, which is set any time the system accesses 262 * that page through the (mapping,index) hash table. This referenced 263 * bit, together with the referenced bit in the page tables, is used 264 * to manipulate page->age and move the page across the active, 265 * inactive_dirty and inactive_clean lists. 266 * 267 * Note that the referenced bit, the page->lru list_head and the 268 * active, inactive_dirty and inactive_clean lists are protected by 269 * the pagemap_lru_lock, and *NOT* by the usual PG_locked bit! (include/linux/mm.h) click! Käyttää sivujen puskurointia (pagebuffer) 21 22 Linux daemon kswapd [Stal 05] Linux daemon bdflush Suorittaa kerran sekunnissa. Jos tarvitaan lisää vapaita sivukehyksiä, niin käy kaikki käytössä olevat sivut läpi, max 6 kierrosta, kunnes tarpeeksi vapaita u etsi käyttämättömiä sivuja modifioidulla clock illa sivupuskurista (page buffer) ja tiedostovälimuistista u etsi yhteiskäytössä olevia käyttämättömiä sivuja u etsi tavallisista käytössä olevista sivuista F käy sivut läpi 1 prosessi kerrallaan F poista käyttämättömät puhtaat heti F pistä käyttämättömät likaiset levyjonoon F pistä käytössä olevat likaiset sivupuskuriin Herää henkiin aika ajoin, tai explisiittisesti Jos liikaa likaisia sivuja, rupea kirjoittamaan niitä levylle 23 24 KJ-II K2006 / Teemu Kerola (lu 6) 4

Linux page cache swap_out age up (+3) refill_inactive_scan age down (/2) page_launder kswapd http://home.earthlink.net/~jknapka/linux-mm/vmoutline.html demand paging, levy page cache read-ahead active_list (age > 0, in use) inactive_dirty_list (age = 0, not used clean or dirty) inactive_clean_list (age = 0, not used, clean) It does not seem possible to understand the VM system in a modular way. The interfaces between, say, the zone allocator and the swap policy are many and varied What a nightmare (Joe Knapka) swap cache kreclaimd alloc bdflush 25 Linux: tilanvaraus ytimessä Ydin lukittu pysyvästi muistiin Dynaaminen varaus sivuittain Dynaamisesti ladattavat moduulit kokonaisina ytimen muistialueelle u buddy system sivutilatasolla Ytimessä usein tarvetta kmalloc() myös pienille lyhytaikaisille varauksille, slab eille u yksittäinen sivu leikattavissa pienempiin osiin (slab) u buddy system sivun sisäisesti Fx86: 32, 64, 128, 252, 508, 2040, 4080 tavua (sivu 4KB) 26 Käyttöjärjestelmät II Windows 2000 MUISTINHALLINTA Ch 8.5 [Stal 05] Ch 11.5 [Tane 01] W2K 0x0000????: 32-bittiset osoitteet => 4 GB virt. os. Sivukoko 4K - 64K Pentium: 4KB Alpha: 8K -1 (Fig 8.26 [Stal05]) ks. Fig. 11.23 [Tane 01] 27 0xFFFF????: 28 W2K: Sivutus Ei segmentointia Vaihtuva määrä sivukehyksiä / prosessi u aluksi kiinteä määrä (muistin määrän mukaan) F minimi 20-50, maksimi 45-345 (muistin koosta riippuen) u jos vapaata paljon, prosessi voi saada lisää F ahneen pitää jättää viimeiset 512 kehystä muille prosesseille u jos vapaan muistin määrä vähenee, prosessikohtaista sivutilamäärää vähennetään Tarvenouto u ei ennaltanoutoa Levy I/O isompina paloina u 1-8 sivua kerrallaan u eli siis myös jonkin asteen ennaltanouto! 29 W2K: Sivutus Sivutaulun alkioissa eroja eri järjestelmissä Sivun tilat u Available u Reserved: not used F varaus, jota ei vielä laskettu prosessin osuuteen F nopea allokointi, kun tarvitaan (esim. pino) u Committed: käytössä, tila myös tukimuistissa (Fig 11.26 [Tane01]) Pentium Fig 11.24 [Tane01] (seur. kalvo) 30 KJ-II K2006 / Teemu Kerola (lu 6) 5

W2K osoite- avaruus copy on write? [Tane01] ei swap-alueella! W2K: Korvausalgoritmi Käyttöjoukkoalgoritmi, lokaali korvaus u käyttöjoukko per prosessi, ei per säie Balance set manager -daemon u tutkii 1 sek välein, onko riittävästi vapaita sivutiloja Working set manager u käynnistyy tarvittaessa u käyttöjoukon koko määräytyy dynaamisesti u vapauttaa prosessikohtaisia sivutiloja u aloittaa isoista idle-prosesseista Swapper-daemon u ajetaan 4 sek välein: etsi prosesseja, joiden kaikki säikeet olleet passiivisia kauan aikaa Osa KJ:sta ja puskuriallas lukittu muistiin Vapautettujen sivujen puskurointi 31 32 W2K Poistettavan sivun valinta Joka sivulla laskuri kauanko sivu käyttämättä Yksi suoritin vrt. Linux Age u jos ei viitettä, lisää laskuria u jos viite, nollaa laskuri u modifioitu Clock? Monta suoritinta u viitebitit eivät toimi, koska lokaaleja suorittimelle! u FIFO-järjestys (onko hyvä? nyt yleinen tapaus!) Neljä vapaiden sivujen listaa u dirty, clean, free, zeroed free (ja bad) Kukin fyysinen sivu u jossakin käyttöjoukossa u jossakin vapaiden sivujen joukossa F silti prosessin käytettävissä? Fig 11.27 [Tane01] (seur. kalvo) W2K: Vapaat sivutilat (Fig 11.27 [Tane01]) 33 34 W2K reference WS swapper thread 4 s. Modified Standby disk modified page writer dealloc mapped page writer Free normal use stack zero page thread (idle proc) Zeroed W2K: Sivutilataulu page fault The code is so complex that the designers loathe to touch parts of it for fear of breaking something somewhere Andrew Tanenbaum [Tane01, p. 823] Fig 11.27 [Tane01] (edell. kalvo) Fig 11.28 [Tane01] (seur. kalvo) 35 (Fig 11.28 [Tane01]) 36 KJ-II K2006 / Teemu Kerola (lu 6) 6

Kertauskysymyksiä Mitä eroa on sivutaululla ja sivutilataululla? Miksi paikallisuuden käsite on keskeinen muistinhallinnassa? Mitä tarkoitetaan käyttöjoukolla? Mitä tarkoitetaan käyttöjoukon ikkunakoolla? Mitkä kaksi noutopolitiikkaa? Mitä hyötyä sivupuskuroinnista? Miten globaali ja lokaali korvauspolitiikka eroavat toisistaan? Miten globaali Clock-algoritmi toimii? Suurimmat erot Linuxin ja W2K:n muistinhallinnalla? 37 KJ-II K2006 / Teemu Kerola (lu 6) 7