1 / 55

Les 5: Geheugenbeheer

Les 5: Geheugenbeheer. “If we wish to count lines of code, we should not regard them as ‘lines produced’ but as ‘lines spent.’” – Edsger Dijkstra. Overzicht. Logische vs. fysieke adressen Contigue allocatie van geheugen Niet-contigue allocatie van geheugen Paginering Segmentering

Download Presentation

Les 5: Geheugenbeheer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Les 5: Geheugenbeheer “If we wish to count lines of code, we should not regard them as ‘lines produced’ but as ‘lines spent.’”– Edsger Dijkstra

  2. Overzicht • Logische vs. fysieke adressen • Contigue allocatie van geheugen • Niet-contigue allocatie van geheugen • Paginering • Segmentering • Segmentering + paginering

  3. Geheugenbeheerprobleem Fysiek geheugen ? 0 0 Proces 1 Proces 1 • Allocatie • Relocatie N1 Proces 2 0 Proces 2 • Protectie • Delen N2 Geheugenbeheer: allocatie & Geheugenbeheer: relocatie & Geheugenbeheer: protectie & Geheugenbeheer: delen N

  4. Een adres heeft veel gedaanten symbolisch broncode Compiler/assember/linker reloceerbaar Objectbestand/laadmodule steeds minder vrijheidsgraden Lader logisch Programmabeeld MMU fysiek Geheugen Adres: symbolisch

  5. Binding in de compiler/linker symbolisch broncode Compiler/assember/linker reloceerbaar = fysiek Objectbestand/laadmodule Lader logisch = fysiek Programmabeeld MMU fysiek Geheugen Adres: reloceerbaar

  6. Binding in de lader symbolisch broncode Compiler/assember/linker reloceerbaar Objectbestand/laadmodule Lader logisch = fysiek Programmabeeld Adres: logisch MMU fysiek Geheugen Roll-out/Roll-in

  7. Binding tijdens de uitvoering symbolisch broncode Compiler/assember/linker reloceerbaar Objectbestand/laadmodule Lader logisch Programmabeeld : fysiek: fys MMU fysiek Geheugen

  8. Adresbinding tijdens de uitvoering Adresvertaling (a) = a+14000 relocatieregister context

  9. Protectie Geheugenbeheer: protectie {limietregister, relocatieregister}  context

  10. Overzicht • Logische vs. fysieke adressen • Contigue allocatie van geheugen • Niet-contigue allocatie van geheugen • Paginering • Segmentering • Segmentering + paginering

  11. Contigue allocatie van partities met vaste grootte Partitie 4 Partitie 4 IBM OS 360 MFT Partitie 3 Partitie 3 Partitie 2 Partitie 2 Partitie 1 Partitie 1 OS OS Met gescheiden wachtrij Met gedeelde wachtrij

  12. Contigue allocatie van partities met veranderlijke grootte Proces 4 Proces 3 • First Fit • Best Fit • Worst Fit • Next Fit Proces 2 Proces 1 OS Geheugenallocatie: contigu IBM OS 360 MVT

  13. Fragmentatie Interne fragmentatie Externe fragmentatie OS Fragmentatie: intern & Fragmentatie: extern

  14. Compactie & Defragmentatie 50%-regel = 33% verlies door fragmentatie

  15. Boekhouding geheugen: vrijgeven geheugen Geheugenbeheer: vrije ruimte

  16. Boekhouding geheugen: bitmaps Geheugen opgedeeld in eenheden vaste grootte A B C D 11111000 11111111 10011111 • vrijgeven geheugen eenvoudig • k opeenvolgende vrije blokken zoeken is trage operatie

  17. Boekhouding geheugen: gelinkte lijsten A 0 50 V 50 30 A 80 60 V 140 30 A 170 20 A 190 50 A = gealloceerd V = vrij • k opeenvolgende blokken zoeken gaat snel • boekhouding ingewikkelder bij vrijgeven geheugen

  18. Buddy Algoritme 256 MiB 64 MiB 16MiB 8 MiB 4 MiB 2 MiB 2 MiB 32 MiB 64 MiB 64 MiB 25 % interne fragmentatie ? % externe fragmentatie

  19. Slaballocator geheugen Cache T1 A A A A V A A V v v A v v v v Cache T2 slabs v v A A v v A v A A A v v v A v v A = gealloceerd V = vrij A v v A

  20. Het automatisch beheer van dynamisch gealloceerd geheugen Meer specifiek het automatisch vrijgeven van objecten die niet langer door een proces gebruikt worden Voordeel: minder werk dan manueel, foutloos Nadeel: trager dan manueel Geheugensanering(garbage collection)

  21. Situatie vertrekpunten registers ← onbereikbaar grabbelgeheugen ← bereikbaar stapel → datageheugen

  22. Directe geheugensanering vertrekpunten registers grabbelgeheugen 0 1 stapel 1 → 1 1 1 datageheugen 2 0 Geheugensanering: direct

  23. Probleem: lussen vertrekpunten registers grabbelgeheugen 0 1 stapel 2 1 → 1 1 1 datageheugen 2 0

  24. Mark-and-sweep vertrekpunten registers grabbelgeheugen √ x √ stapel √ → √ √ √ √ √ datageheugen √ x √ √ Geheugensanering: mark-and-sweep

  25. Mark-and-sweep vertrekpunten registers grabbelgeheugen √ √ stapel √ → √ √ √ √ √ datageheugen √ √ √

  26. Mark-and-compact vertrekpunten registers grabbelgeheugen √ √ √ stapel → √ √ √ √ √ datageheugen √ √ √ Geheugensanering: mark-and-compact

  27. Kopiërend algoritme vertrekpunten registers grabbelgeheugen stapel → datageheugen Geheugensanering: kopiërende

  28. Kopiërend algoritme vertrekpunten registers grabbelgeheugen stapel → datageheugen …

  29. Generationele geheugensanering vertrekpunten registers grabbelgeheugen stapel → datageheugen nursery mature space Geheugensanering: generationeel

  30. Generationele geheugensanering vertrekpunten registers grabbelgeheugen stapel → … datageheugen Kleine sanering nursery mature space

  31. Generationele geheugensanering vertrekpunten registers grabbelgeheugen … stapel → promotie datageheugen nursery mature space

  32. Overzicht • Logische vs. fysieke adressen • Contigue allocatie van geheugen • Niet-contigue allocatie van geheugen • Paginering • Segmentering • Segmentering + paginering

  33. Geheugenallocatie: gepagineerd Allocatie per pagina Fysiek geheugen Pagina-tabel 0 0 Proces 1 2 7 5 2 0 6 Proces 2 4 1 3 3 8 Pagina’s (512B-16 MiB) Frames

  34. Basisprincipe paginering fysiek geheugen Paginering offset f CVE p o f o PTBR logisch adres fysiek adres p f framenummer paginanummer Pagina = 4 KiB Offset = 12 bit Paginanummer = 20 bit paginatabel frames

  35. Frametabel fysiek geheugen frametabel 0 1 proces 2 2 1 proces 1 0 1 proces 2 3 1 proces 2 1 1 proces 1 2 1 proces 2 0 1 proces 1 1 0 0 frames Frame: tabel

  36. Additionele informatie Paginatabel (4 KiB) • Valid • Read-only • Dirty • Reference • Lock • Cached • … 21221000 54F54000 545E5000 5751A000 25487000 • Paginatabel: valid bit • Paginatabel: present bit • Paginatabel: read-only bit • Paginatabel: dirty bit • Paginatabel: modified bit • Paginatabel: reference bit • Paginatabel: lock bit • Paginatabel: cached bit 12 ongebruikte bits

  37. Translation lookaside buffer logisch adres offset CVE fysiek geheugen p o f p1 f1 p2 f2 TLB treffer p3 f3 p4 f4 p5 f5 p6 f6 f o p7 f7 p8 f8 TLB fysiek adres p f TLB misser Pagina = 4 KiB Offset = 12 bit Paginanummer = 20 bit frames paginatabel

  38. Hiërarchische adresvertaling Pagina = 4 KiB = 212 bytes Adresruimte: 4 GiB = 232 bytes 220 pagina’s 32 bits per element 4 MiB per paginatabel 4 MiB per proces Adresvertaling: hiërarchisch Page table length register Hiërarchische adresvertaling

  39. Typische geheugenlayout 0 code data grabbel- geheugen stapel 2N

  40. Meerniveautabellen 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1

  41. Hiërarchische paginering logisch adres offset CVE fysiek geheugen o f p1 f1 p2 f2 TLB treffer p3 f3 p4 f4 p5 f5 p6 f6 f o p7 f7 p8 f8 TLB fysiek adres directory-tabel TLB misser f SPARC: 8+6+6+12 IA32: 10+10+12 paginatabel frames Paginering: hiërarchisch

  42. Hiërarchische paginering logisch adres offset CVE fysiek geheugen o f p1 f1 p2 f2 TLB treffer p3 f3 p4 f4 p5 f5 p6 f6 f o p7 f7 p8 f8 TLB fysiek adres directory-tabel TLB misser f SPARC: 8+6+6+12 IA32: 10+10+12 paginatabel frames Paginering: hiërarchisch

  43. X86-64 vertaling Geheugen 12 52 CVE 9 16 9 9 9 12 TLB p1 f1 p2 f2 p3 f3 ... … pn pn CR3 PML4 (page map level 4) Paginapointers directory Paginadirectory Paginatabel

  44. Verhakselde paginatabel logisch adres offset CVE fysiek geheugen p o f p1 f1 p2 f2 TLB treffer p3 f3 p4 f4 p5 f5 p6 f6 f o p7 f7 p8 f8 TLB fysiek adres hakselfunctie p1 f1 p2 f2 p3 f3 TLB misser Adresvertaling: hakselfunctie frames hakseltabel

  45. Geïnverteerde paginatabellen logisch adres offset CVE fysiek geheugen pid p o f p1 f1 p2 f2 TLB treffer p3 f3 p4 f4 p5 f5 p6 f6 f o p7 f7 p8 f8 TLB fysiek adres f Zoeken pid p Adresvertaling: inverse paginatabel 64-bit UltraSPARC PowerPC frames frametabel

  46. Geheugenbeheer: delen Delen van pagina’s Fysiek geheugen 0 Code 1 Code 2 2 Code 2 7 0 Data 1 5 Code herbetreedbaar! 2 Code 1 0 Code 1 Code 2 2 Code 2 7 Data 3 Data 2 6 2 Data 1 Data 2 0 Code 1 Code 2 2 Code 2 Code 2 7 8 Data 3 4 2 Frames

  47. Gemeenschappelijk geheugen Fysiek geheugen Proces 1 0 0 Code 2 Code 1 2 Data 1 Code 2 7 Code 1 Data 1 1 Code A Data 2 4 3 Data 2 Proces 2 0 Code 2 Code A 3 Code B Code B 6 Code 2 Data 2 4 2 Pagina’s 8 Frames

  48. Adresverwarring proces 1 proces 2 2000h 2000h 3B00h 3000h 3B00h Adres: verwarring

  49. Overzicht • Logische vs. fysieke adressen • Contigue allocatie van geheugen • Niet-contigue allocatie van geheugen • Paginering • Segmentering • Segmentering + paginering

  50. Geheugenallocatie: gesegmenteerd code bib stapel data Segmentering code stapel data bib programma fysiek geheugen

More Related