UNIX / Solaris (SVR4)

Samankaltaiset tiedostot
UNIX / Solaris (SVR4)

Muistinhallinnan esimerkit UNIX, Solaris, Linux, W2000

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

UNIX / Solaris MUISTINHALLINTA

MUISTINHALLINNAN OHJELMISTO

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

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

VIRTUAALIMUISTI. Stallings, Luku 8.1

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

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

VIRTUAALIMUISTI. Stallings, Luku 8.1

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

Luento 6: VIRTUAALIMUISTI

Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS

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

MUISTINHALLINNAN OHJELMISTO: Sivutuksen algoritmit. Stallings, Luku 8.2

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

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

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

Osio 2: Luennot 4-7 Muistinhallinta

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

MUISTINHALLINTA. Stallings, Luku 7

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

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

Muistihierarkia Kiintolevyt I/O:n toteutus

Luento 9 Järjestelmän ulkoinen muisti

Käyttöjärjestelmät II

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

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

Järjestelmän ulkoinen muisti I/O

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

Luento 9 Järjestelmän ulkoinen muisti

Osio 2: Luennot 5-8 Muistinhallinta

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

Käyttöjärjestelmät II

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

Tietorakenteet ja algoritmit

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

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

Tietokoneen toiminta, K Tavoitteet (4)

D B. Tiedostojen käsittely

Muistihierarkia Kiintolevyt I/O:n toteutus

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

Luento 9 Järjestelmän ulkoinen muisti

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

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

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

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

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

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

Käyttöjärjestelmät: Virtuaalimuisti

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

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

Muistinhallinta. Teemu s Cheesecake. Tietokoneen rakenne

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

PROSESSIT JA NIIDEN HALLINTA

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

Stallings, Luku

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

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

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

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

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

Käyttöjärjestelmän rakenne

Käyttöjärjestelmät: prosessit

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

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

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

Algoritmit 1. Luento 4 Ke Timo Männikkö

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

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

Jakso 4 Aliohjelmien toteutus

Dynaaminen muisti Rakenteiset tietotyypit

Kernel (Fig 4.10 [Stal 05]) Operating Systems Examples and Process Management

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

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

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

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

Windows ja Linux. Lappeenrannan teknillinen yliopisto Teknistaloudellinen tiedekunta Tietotekniikan koulutusohjelma

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

NYKYAIKAISET KÄYTTÖ- JÄRJESTELMÄT

Sisältö. Levy I/O Linux ja W2000 levy I/O. Ch [Stal 05] Ch 20.8 [DDC 04] RAID Lohkopuskurit (disk cache) Esimerkit: Linux, W2K

Jakso 5 Suoritin ja väylä

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

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

Luento 3: PROSESSIT JA NIIDEN HALLINTA

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

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

Luento 4 Aliohjelmien toteutus

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Prosessi perinteisesti

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

Jakso 5 Suoritin ja väylä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Transkriptio:

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

UNIX/4BSD: Sivukehystaulu (core map) UNIX SVR4: Korvausalgoritmi 1 KB sijainti levyllä? kenen? segmentti? Kaksiviisarinen globaali Clock poistoalgoritmi tutki sivukehystaulua prosessille annettujen sivukehysten (sivutilojen) lkm vaihtelee etummainen viisari asettaa Reference count = 0 perässä tuleva viisari siirtää vapautettavaksi ne, globaali poistoalg. 16 B 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? 9 Unix SVR4: korvausalgoritmi Kaksiviisarinen clock viisarien nopeus (scanrate) välillä [slowscan, fastscan] molemmat viisarit etenevät samaa tahtia kehys kerrallaan, kunnes tarpeeksi vapaata tilaa reset (fronthand); jos U(backhand)==0, vapauta se ; etene gap (handspread) viisarien välissä Fig 8.23 [Stal05] jos spread on pieni, vain hyvin usein viitattuihin sivuihin ehtii tulla viitebitti päälle Jos gap = 359, niin sama kuin 1-viisarinen clock (Fig. 8.16) sopii paremmin suurille muisteille, nopeampi kuin tavallinen clock (UNIX 4BSD) 10 Unix SVR4: korvausalgoritmi UNIX/Solaris: ytimen (kernel) muisti Ylläpidä: minfree < vapaiden sivutilojen lkm < maxfree Jos lkm < minfree, käynnistä swapper heittovaihtamaan prosesseja, jolloin sivutiloja vapautuu äkkiä paljon pisimmän aikaa vähintään 20 sek. idle nä ollut prosessi? 4 suurimmasta prosessista kauiten muistissa ollut prosessi? Jos lkm lähellä minfree-arvoa kasvata scanrate-arvoa (vapauta herkemmin, käynnistä algoritmi useammin) Jos lkm lähellä maxfree-arvoa, pienennä scanrate-arvoa (viitebitin asetukselle aikaa lisää) 11 Perusvaraus sivutusta käyttäen Sivuja voi lukita muistiin Ydin varaa ja vapauttaa paljon pieniä alueita ja puskureita tiedoston polkunimen selvitys zombie-prosessista jälkeenjäävät tiedot dynaaminen varaus: proc, vnode, tiedostokuvaaja Ydin varaa ja vapauttaa myös sivun osia sivun sisällä tehtäviä varauksia hallitaan dynaamista tilanvarausta käyttäen (Ch 7 [Stal05]) varaus ja vapautus oltava tehokkaita => Laiska Buddy System (Lazy Buddy) lohkojen yhdistelyä viivästetään, kunnes vapaita lohkoja on liikaa 12 Syksy 2007, Tiina Niklander 10-2

time Buddy System (& lazy buddy system) Muistiinkuvatut tiedostot Memory-mapped files Tiedostovälimuisti on muistissa Mapataan (kuvataan) virtuaalimuistialue tiedostovälimuistin päälle Tiedoston luku/kirjoitus muistin luku/kirjoitus-operaatioilla nopea! Monta prosessia voi mapata helposti saman alueen yhteiskäyttöiset tiedostot (koodi ja/tai data) ks. kuva seuraavalla sivulla VM hallinnoi tiedostoja, ei File System! VM voi siirtää sivun levylle, kun FS pitäisi sen muistissa FS suunniteltu tiedostojen käyttöä varten, VM ei (Fig 7.6 [Stal05]) lazy buddy ei tee heti! 13 14 Muistiinkuvattu tiedosto Linux MUISTINHALLINTA Ch 8.4 [Stal 05] [Tane01] 15 16 Linux: muistinhallinta 32-bittisissä arkkitehtuureissa 3 GB:n virtuaaliavaruus prosesseille 1 GB ytimelle (mm. sivutaulut) fyysisesti todellisen muistin alussa etuoikeutetussa tilassa viitattavissa 4 GB prosessin oma 3 GB ytimen 1 GB Virtuaalinen osoiteavaruus jaettu yhtenäisiin alueisiin, joilla joka sivulla samat suojaukset ja ominaisuudet vrt. segmentti Ytimen pienin allokoinnin yksikkö: slab (<< sivu) ei ole tehokasta varata aina kokonaisia sivuja Linux: sivutus Laitteistoriippumaton toteutus Alpha: 64b osoitteet, tuki 3:lle tasolle, sivu 8KB offset 13 bittiä x86: 32b osoitteet, käyttää 2-tasoa, sivu 4KB offset 12 bittiä 3-tasoinen sivutaulu page directory (PD), 1 sivu page middle directory (PMD), monta sivua page table (PT), monta sivua Ylin taso aina muistissa puuttuu x86 sta arvo 0 monta sivua yksi sivu (Fig 8.25 [Stal05]) säikeen vaihdossa fyysinen osoite MMU:hun (PD) vain ytimen käyttöön, joka tarvitsee paljon pieniä muistialueita 17 muut voivat olla tukimuistissa! 18 Syksy 2007, Tiina Niklander 10-3

Linux: osoitemuunnos Jaa osoite 4:ään osaan indeksi ylimmän tason hakemistoon (PD-offset) indeksi välitason hakemistoon (PMD-offset) indeksi sivutauluun (PT-offset) 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 välitason hakemiston (PMD) koko vain yksi alkio! laitteisto tulkitsee ylimmän tason (PD) alkion osoittavan suoraan alimman tason sivutauluun (PT) sopii muillekin laitteistoille, joissa vain 2 tasoa 19 Linux: varausalgoritmi Varaa yhtenäinen lohko (area, region) peräkkäisille sivuille tehostaa levyltä noutoa ja takaisin kirjoitusta optimoi siis levyn käyttöaikaa (tilan kustannuksella) Buddy System: 1, 2, 4, 8, 16 tai 32 sivutilaa toteutus: taulukko, jossa osoittimet koon mukaisiin vapaiden listoihin paljon sisäistä pirstoutumista tarvitset 18 sivua, mutta varaat 32 sivua! 20 Linux: noutoalgoritmi Linux: korvausalgoritmi Tarvenouto ei ennaltanoutoa, ei käyttöjoukon algoritmeja Toisaalta, lohkon usea sivu voidaan ehkä hakea kerralla (buddy system) ennakoiva nouto? ei viitepaikallisuuden vaan levypaikallisuuden mukaan (alueellinen paikallisuus) toivon mukaan lähellä toisiaan 21 Globaali Clock M-bitillä + eräänlainen LRU prosessilla dynaaminen varattujen sivutilojen lkm 8 bitin ikälaskuri (age) vrt. U-bitti MMU kasvattaa, kun sivuun viitataan taustaprosessi (kswapd) tutkii ja vähentää sekunnin välein vähentää 1 ikälaskurista jokaisella tutkintakerralla 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 Käyttää sivujen puskurointia (pagebuffer) 22 Linux memory manager Linux daemon kswapd [Stal 05] 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) 23 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 etsi käyttämättömiä sivuja modifioidulla clock illa sivupuskurista (page buffer) ja tiedostovälimuistista etsi yhteiskäytössä olevia käyttämättömiä sivuja etsi tavallisista käytössä olevista sivuista käy sivut läpi 1 prosessi kerrallaan poista käyttämättömät puhtaat heti pistä käyttämättömät likaiset levyjonoon pistä käytössä olevat likaiset sivupuskuriin 24 Syksy 2007, Tiina Niklander 10-4

Linux daemon bdflush Herää henkiin aika ajoin, tai explisiittisesti Jos liikaa likaisia sivuja, rupea kirjoittamaan niitä levylle 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) swap cache kreclaimd alloc 25 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) bdflush 26 Linux: tilanvaraus ytimessä Slap allocation Ydin lukittu pysyvästi muistiin Dynaaminen varaus sivuittain Dynaamisesti ladattavat moduulit kokonaisina ytimen muistialueelle buddy system sivutilatasolla kmalloc() Ytimessä usein tarvetta myös pienille lyhytaikaisille varauksille, slab eille yksittäinen sivu leikattavissa pienempiin osiin (slab) buddy system sivun sisäisesti x86: 32, 64, 128, 252, 508, 2040, 4080 tavua (sivu 4KB) Slab: laatta, leikata laatoiksi, kattaa laatoilla 27 Fig 9.27 Silberschatz, Galvin & Gagne: Operating system concepts with Java 28 Windows 2000 MUISTINHALLINTA 0x0000????: W2K 32-bittiset osoitteet => 4 GB virt. os. Sivukoko 4K - 64K Pentium: 4KB Alpha: 8K -1 Ch 8.5 [Stal 05] Ch 11.5 [Tane 01] (Fig 8.26 [Stal05]) ks. Fig. 11.23 [Tane 01] 29 0xFFFF????: 30 Syksy 2007, Tiina Niklander 10-5

W2K: Sivutus W2K: Sivutus Sivutaulun alkioissa eroja eri järjestelmissä (Fig 11.26 [Tane01]) Ei segmentointia Vaihtuva määrä sivukehyksiä / prosessi aluksi kiinteä määrä (muistin määrän mukaan) minimi 20-50, maksimi 45-345 (muistin koosta riippuen) jos vapaata paljon, prosessi voi saada lisää ahneen pitää jättää viimeiset 512 kehystä muille prosesseille jos vapaan muistin määrä vähenee, prosessikohtaista sivutilamäärää vähennetään Tarvenouto ei ennaltanoutoa Levy I/O isompina paloina 1-8 sivua kerrallaan Sivun tilat Available Reserved: varaus, jota ei vielä laskettu prosessin osuuteen nopea allokointi, kun tarvitaan (esim. pino) Committed: käytössä, tila myös tukimuistissa eli siis myös jonkin asteen ennaltanouto! 31 32 not used Pentium Fig 11.24 [Tane01] (seur. kalvo) W2K osoiteavaruus copy on write? [Tane01] ei swap-alueella! 33 W2K: Korvausalgoritmi Käyttöjoukkoalgoritmi, lokaali korvaus käyttöjoukko per prosessi, ei per säie Balance set manager -daemon tutkii 1 sek välein, onko riittävästi vapaita sivutiloja Working set manager käynnistyy tarvittaessa käyttöjoukon koko määräytyy dynaamisesti vapauttaa prosessikohtaisia sivutiloja aloittaa isoista idle-prosesseista Swapper-daemon 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 34 W2K Poistettavan sivun valinta Joka sivulla laskuri kauanko sivu käyttämättä Yksi suoritin jos ei viitettä, lisää laskuria jos viite, nollaa laskuri modifioitu Clock? Monta suoritinta viitebitit eivät toimi, koska lokaaleja suorittimelle! FIFO-järjestys (onko hyvä? nyt yleinen tapaus!) Neljä vapaiden sivujen listaa dirty, clean, free, zeroed free (ja bad) Kukin fyysinen sivu jossakin käyttöjoukossa jossakin vapaiden sivujen joukossa silti prosessin käytettävissä? vrt. Linux Age Fig 11.27 [Tane01] (seur. kalvo) 35 W2K: Vapaat sivutilat (Fig 11.27 [Tane01]) 36 Syksy 2007, Tiina Niklander 10-6

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) 37 (Fig 11.28 [Tane01]) 38 Syksy 2007, Tiina Niklander 10-7