Principper for Samtidighed og Styresystemer Memory management Ren´e Rydhof Hansen Apr 2011 PSS’2011 (Forelæsning 07) Memory management Apr 2011 1 / 24 Memory Management: Opsummering Lagerhierarki Virtuelt lager Virtuelle adresser vs. fysiske adresser Lagerallokering i primær lager: fast inddeling, dynamisk inddeling Sidedelt lager (paging) Segmentering PSS’2011 (Forelæsning 07) Memory management Apr 2011 2 / 24 M˚ al At kunne definere og redegøre for paging At kunne redegøre for brug og implementation af delt hukommelse i en sidedelt hukommelse At kunne redegøre for organisering af sidetabeller (direkte, to-niveau samt inverterede) At kunne foretage adresseoversættelse fra virtuelle adreser til fysiske adresser v.hj.a. sideetabeller At kunne redegøre for styresystemets brug af hukommelse At kunne redegøre for implementation og brug af demand paging og swapping PSS’2011 (Forelæsning 07) Memory management Apr 2011 3 / 24 Paging return Det virtuelle lager opdeles i et antal sider (pages) af fast størrelse Det fysiske lager opdeles i et antal rammer (page frames) Sider placeres i rammer Rammer har samme faste størrelse som sider Styresystemet indplacerer sider i rammer og vedligeholder informationer om dette i en sidetabel Styresystemet vedligeholder en sidetabel pr. proces Example P˚ a en Pentium er sider typisk 4KB og p˚ a en Sparc typisk 8KB store. PSS’2011 (Forelæsning 07) Memory management Apr 2011 4 / 24 Delt hukommelse (ved paging) Hukommelse kan deles mellem processer ved at forskellige sidetabeller henviser til samme ramme Samme fysiske lager i to forskellige (processers) adresserum Delte rammer medfører ikke nødvendigvis samme (lokale) sidenumre Delt hukommelse bruges til Interproceskommunikation Deling af programtekst og biblioteker (DLL, .so) Ogs˚ a muligt med segmentering To processers segmenttabeller henviser til samme segment PSS’2011 (Forelæsning 07) Memory management Apr 2011 5 / 24 Delt hukommelse Program1 PSS’2011 (Forelæsning 07) Primær huk. Memory management Program2 Apr 2011 6 / 24 Delt hukommelse: Deling af biblioteker System library table entry Typisk bruges memory mapping Ofte mere effektivt end eksplicit allokering, ˚ abning og læsning Name = X.DLL Ref. count = 2 Fysisk adr. Kræver at bibliotekerne er relokerbare X.DLL Styresystemet bruger en reference counter til at holde styr p˚ a antallet af processer der deler en given DLL PSS’2011 (Forelæsning 07) Memory management X.DLL Shared copy of X.DLL Proc. 1 Phys. mem. Proc. 2 Apr 2011 7 / 24 Delt hukommelse: Styresystemet Styresystemet deles af alle processer Styresystemets hukommelse afbildes typisk i procesernes adresserum Windows bruger en 2GB/2GB opdeling Linux bruger en 3GB/1GB opdeling Styresystemet afbildes i øverste del af adresserummet Kerne Bruger “Blokeret” (64KB) Sys.inf. (4KB) Proc./thread blokke “Blokeret” (64KB) PSS’2011 (Forelæsning 07) Memory management Apr 2011 8 / 24 Memory Management: Oversigt Intro Simpel lagerallokering i primær lager Paging og segmentering Organisation af sidetabel Demand paging og sideerstatningsalgoritmer Rammeallokering PSS’2011 (Forelæsning 07) Memory management Apr 2011 9 / 24 Direkte sidetabel (et-niveau sidetabel) Sidetabellen bruges af MMU’en til adresseoversættelse ved paging Vedligeholdes af styresystemet Een sidetabel per process med en indgang per side n’te indgang i sidetabellen giver placering af den n’te side i fysisk hukommelse Logisk adr. Sidenummer Offset Sidetabel Rammenummer PSS’2011 (Forelæsning 07) Memory management Offset Apr 2011 10 / 24 To-niveau sidetabeller Problem: 20-bit sidenumre giver 220 indgange i sidetabellen Med 32 bit per indgang giver dette 4MB — per process! Løsning: Del sidetabellen op i flere niveauer Sidenummeret deles i 2 gange 10 bit Første 10 bit er indgang til første niveau Næste 10 bit er indgang til andet niveau 210 indgange per tabel = 4KB = 1 side per tabel Mulighed for at ikke hele sidetabellen skal allokeres Mulighed for at swappe sidetabellen (memory management af sidetabellen!) Example Anvendes p˚ a de fleste(?) moderne 32bit arkitekturer PSS’2011 (Forelæsning 07) Memory management Apr 2011 11 / 24 To-niveau sidetabel Logisk adr. L1 side L2 side Offset L1 Sidetabel L2 Sidetabel PSS’2011 (Forelæsning 07) Memory management Rammenummer Offset Apr 2011 12 / 24 Inverterede sidetabeller Problem: to niveauer ikke nok til 64-bit arkitektur Alpha bruger 43-bit adresser, 3 niveauer med 10 bit til hvert niveau og de resterende 13 bit som offset (8KB sidestørrelse) Ved 64 bit adresser kræves endnu flere niveauer Løsning: Inverterede sidetabeller Kun een tabel for hele systemet En indgang per ramme med informationer om hvilken side der gemmes i rammen Besværlig adresseoversættelse: hash tabel over sidetabellen skal gennemsøges først Cache af adresseoversættelser kan øge effektiviteten PSS’2011 (Forelæsning 07) Memory management Apr 2011 13 / 24 Implementering af sidetabeller Faktisk format for sidetabellen er fastlagt af hardwarearkitekturen Indgange i sidetabel Pentium bruger 32 bits pr. indgang i sidetabel En indgang i sidetabellen kræver kun 20 bits Resterende 12 bits bruges til administration Om siden er placeret i en ramme Adresse (i hukommelse eller p˚ a disk) Rettigheder (read, write, execute; user eller system) Bemærk: OS kan altid tilg˚ a (read/write) alle sider Brugsinformationer (tilg˚ aet eller modificeret) Ekstra bits til styresystembrug Stort overhead med 12 “ekstra” bits? PSS’2011 (Forelæsning 07) Memory management Apr 2011 14 / 24 Implementering af sidetabeller Faktisk format for sidetabellen er fastlagt af hardwarearkitekturen Indgange i sidetabel Pentium bruger 32 bits pr. indgang i sidetabel En indgang i sidetabellen kræver kun 20 bits Resterende 12 bits bruges til administration Om siden er placeret i en ramme Adresse (i hukommelse eller p˚ a disk) Rettigheder (read, write, execute; user eller system) Bemærk: OS kan altid tilg˚ a (read/write) alle sider Brugsinformationer (tilg˚ aet eller modificeret) Ekstra bits til styresystembrug Stort overhead med 12 “ekstra” bits? Nej, passer med sidestørrelse! PSS’2011 (Forelæsning 07) Memory management Apr 2011 14 / 24 Eksempel: Pentium Example (Pentum sidetabelindgange) Page frame number (20 bits) Spare (3 bits); kan evt. benyttes af OS Global page (1 bit); optimering af side-deling (ikke-flush TLB) Page size (1 bit) Dirty (1 bit); skrevet til siden? Accessed (1 bit); tilg˚ aet? Cache disabled (1 bit); kan siden caches? Write-through (1 bit) User/supervisor (1 bit) Read/write (1 bit); skrivebeskyttelse Present (1 bit); i hukommelse? PSS’2011 (Forelæsning 07) Memory management Apr 2011 15 / 24 Memory Management: Oversigt Intro Simpel lagerallokering i primær lager Paging og segmentering Organisation af sidetabel Demand paging og sideerstatningsalgoritmer Rammeallokering PSS’2011 (Forelæsning 07) Memory management Apr 2011 16 / 24 Demand paging Demand paging: sider indlæses ved første tilgang Sider kan i sidetabellen markeres som: Ubrugte: fejl ved tilgang Reserverede Allokeres ved næste tilgang Sidetabellen indeholder informationer om hvor indholdet skal hentes fra (fx en fil); nyttigt ved programopstart Committed: siden er placeret i en ramme Sider (rammer) der ikke bruges bliver aldrig allokeret Processer kan være større end fysisk lager Intet behov for at kende faktisk lagerbehov Gør det nemt at indlæse et program: Sidetabellen initialiseres med ubrugte og reserverede sider N˚ ar første instruktion udføres udløses en page fault og styresystemet indlæser siden (med programtekst) fra disk Andre sider indlæses efter behov PSS’2011 (Forelæsning 07) Memory management Apr 2011 17 / 24 Swapping Id´e: Flyt sider, der ikke bruges s˚ a ofte, til sekundært lager Sideerstatningsalgoritmer (page replacement policies) Hvilke sider flyttes til sekundært lager? Hvorn˚ ar flyttes sider til sekundært lager? N˚ ar der er behov for plads Tidligere (page buffering) Hvorn˚ ar hentes sider fra sekundært lager? N˚ ar der er behov for dem (demand paging) Tidligere (prepaging) Lokalitetsprincippet Definition (Lokalitetsprincippet) Sider der er tilg˚ aet for nylig vil snart blive tilg˚ aet igen... duh! PSS’2011 (Forelæsning 07) Memory management Apr 2011 18 / 24 Swapping Algoritme vs. policy: policy understreger, at der er tale om et valg; kan evt. ændres efter behov Optimering Sider der ikke er “dirty” behøver ikke at blive skrevet tilbage til disk Page buffering: en metode til optimering af “swap out” Pre-paging: en metode til optimering af “swap in” Rammeallokering Hvor mange rammer skal der allokeres per process? For f˚ a rammer medfører øget swapping For mange rammer medfører spildt plads (en slags “intern fragmentering”) PSS’2011 (Forelæsning 07) Memory management Apr 2011 19 / 24 Sidefejl Page fault Hvis processen tilg˚ ar en ubrugt eller reserveret side udløser MMU’en en sidefejl (page fault) Kontrollen overdrages til en page fault handler i styresystemet Ubrugte sider Terminerer processen (segfault/bus error) B˚ ade segfault og bus error er adresseringsfejl Tommelfingerregel: segfault er en fejl opdaget af kernen, bus error af hardware Reserverede sider Kan være blanke datasider Kan være programtekst (eller andet filindhold) Kan være sider, der er blevet swappet ud PSS’2011 (Forelæsning 07) Memory management Apr 2011 20 / 24 Prepaging Demand paging indlæser sider efter behov Prepaging: sider indlæses før de tilg˚ as I sin reneste form: en proces f˚ ar først lov at køre n˚ ar dens working set er indlæst i hukommelsen Mens siden indlæses kan styresystemet skifte til en anden tr˚ ad og/eller process Kan resultere i markant bedre ydelse Working set ændres dynamisk; vanskeligt at forudse PSS’2011 (Forelæsning 07) Memory management Apr 2011 21 / 24 Copy-on-write Teknik (bl.a.) til simplificering af kloning af processer Nemt at implementere Marker side som read-only og copy-on-write MMU’en udløser sidefejl ved forsøg p˚ a at skrive til siden (read-only) Page fault handler’en laver en kopi af siden (da den er markeret som copy-on-write) Skrivetilgang gennemføres derefter p˚ a kopien Hele sidetabellen skal kopieres (medmindre den kan deles) Gør det nemt at implementere fork Kopier sidetabellen Marker alle processens sider (i kopien) som copy-on-write og lad de to processser dele siderne Siderne kopieres efter behov n˚ ar/hvis de modificeres Sikrer effektiv hukommelsesh˚ andtering for b˚ ade forælder og barn (selvom de divergerer kraftigt i udførsel) PSS’2011 (Forelæsning 07) Memory management Apr 2011 22 / 24 Sidestørrelse og demand paging Sm˚ a sider Bedre lokalitet og dermed f˚ a sidefejl Store sidetabeller Store sider Mindre god lokalitet og dermed flere sidefejl Mindre sidetabeller Meget store sider F˚ a sidefejl, men langvarig I/O Meget intern fragmentering PSS’2011 (Forelæsning 07) Memory management Apr 2011 23 / 24 Opsummering og næste gang Memory management Paging (segmentering) Sidetabel Demand paging Næste gang Memory management (fortsat) Sideerstatingsalgoritmer Rammeallokering PSS’2011 (Forelæsning 07) Memory management Apr 2011 24 / 24
© Copyright 2024