1 / 32

Kapitel 8: Minneshantering

Kapitel 8: Minneshantering. Bakgrund. CPU:n kan delas av ett antal processer Dessa processer måste ligga i minnet, dvs de måste dela minne Vi måste skydda OS från användarprocesser och användarprocesser från varandra Varje process har ett separat minnesutrymme Bestämma legala adresser

thane-gray
Download Presentation

Kapitel 8: Minneshantering

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. Kapitel 8: Minneshantering

  2. Bakgrund • CPU:n kan delas av ett antal processer • Dessa processer måste ligga i minnet, dvs de måste dela minne • Vi måste skydda OS från användarprocesser och användarprocesser från varandra • Varje process har ett separat minnesutrymme • Bestämma legala adresser • Hindra access till andra adresser • Två register: • Base register – innehåller den lägsta legala adressen • Limit register – innehåller storleken på adressutrymmet • Varje adress jämförs med registren (i user mode)

  3. Base- och Limit-registren baseregister ochlimitregister definierar det logiska adressutrymmet

  4. Adressbindning • Adressbindning av instruktioner och data till minnesadresser kan ske vid tre olika tillfällen: • kompilering: om vi vet var i minnet processen ska ligga • laddning • exekvering: om processen kan flyttas under exekveringen. Används av de flesta moderna OS

  5. Logiskt och fysiskt adressutrymme • Logisk adress– genereras av CPU:n; kallas också virtuell adress • fysisk adress– den adress som minnesenheten ser • När adressen binds vid exekvering skiljer sig den logiska och den fysiska adressen åt • Logiskt adressutrymme • Mängden av alla logiska adresser som genereras av ett program • Fysiskt adressutrymme • De fysiska adresser som motsvaras av de logiska adresserna

  6. Memory-Management Unit (MMU) • Hårdvaruenhet som översätter logiska adresser till fysiska • Värdet i relocation register (base register) adderas till varje logisk adress som genereras av en användarprocess när denna skickas till minnet • Användarprogrammet hanterar logiska adresser; det ser aldrig riktiga fysiska adresser

  7. Dynamisk relokering

  8. Hardware Support for Relocation and Limit Registers

  9. Swapping • En process kan temporärt swappas (flyttas) från minnet till en backing store • Backing store– snabb disk där alla processer får plats • Roll out, roll in– en lågprioriterade process swappas ut så att en högprioriterad process kan köras • Lång tid för context switch – 2 sek om processen är 100MB och överföringshastigheten 50MB/s • Varianter av swapping finns i många OS (t ex UNIX, Linux, och Windows)

  10. Schematic View of Swapping

  11. Sammanhängande (Contiguous) minnesallokering • Varje process ligger i en sammanhängande del av minnet • Vi behöver ett relocation register och ett limit register • Enklaste metoden: partitioner med fast storlek • Används inte längre • Partitioner med variabel storlek • Hål – ledigt minnesblock • Generellt finns en mängd hål av olika storlek spridda över minnet • En ankommande process får minne från ett hål som är stort nog • OS håller reda på allokerade och fria partitioner (hål)

  12. Sammanhängande minnesallokering (forts) OS OS OS OS process 5 process 5 process 5 process 5 process 9 process 9 process 8 process 10 process 2 process 2 process 2 process 2

  13. Problemet med dynamisk minnesallokering • First-fit: allokera det första hålet som är stort nog • Best-fit: allokera det minsta hålet som är stort nog • Worst-fit: allokera det största hålet Vilket minneshål ska väljas för en process av storleken n First-fit och best-fit är bättre än worst-fit när det gäller snabbhet och minnesutnyttjande Både First-fit och best-fit lider av extern fragmentering

  14. Fragmentering • Extern Fragmentering– det lediga minnet består av ett stort antal små hål • Minska extern fragmentering • Flytta hålen så de bildar ett stort sammanhängande block • Internal Fragmentation– en process använder inte allt allokerat minne

  15. Paging • Paging tillåter att en process’ fysiska adressutrymme är icke-sammanhängande – ingen extern fragmentering • Det fysiska minnet delas upp i block av fast storlek (ramar eller frames) • Det logiska minnet delas upp i block av samma storlek (sidor eller pages) • Sidstorleken varierar mellan 512B och 16MB • En sidtabell översätter från logiska adresser till fysiska adresser • Intern fragmentering kan förekomma

  16. Paging-hårdvara

  17. Exempel sidtabell

  18. Exempel 2 sidtabell 32-byte memory and 4-byte pages

  19. Implementation av sidtabellen • De flesta OS allokerar en sidtabell för varje process • En pekare till sidtabellen finns i PCB:n - Page-table base register (PTBR) • Varje access till data kräver två minnesacceser, en till sidtabellen och en till datan • Detta kan lösas genom att använda ett snabbt cache-minne kallattranslation look-aside buffer (TLB) • Litet, mellan 64 och 1024 sidnummer får plats • Om sidnummer ej i TLB – TLB miss • Hit ratio – procent av sidnummer som hittas i TLB

  20. Paging-hårdvara med TLB

  21. Skydd av minnet • Skydd av minnet implementeras genom att associera skyddsbitar med varje ram (t ex read-only, read-write) • En valid-invalid-bit finns i varje rad i sidtabellen: • “valid” – sidan ligger i processens logiska adressutrymme • “invalid”- sidan ligger inte i processens logiska adressutrymme

  22. Valid (v) eller Invalid (i) Bit i en sidtabell

  23. Delade sidor • Delad kod • En kopia av ett programs kod kan delas av flera processer (t ex texteditorer, kompilatorer). • Delad kod måste ligga på samma ställe i det logiska adressutrymmet för alla processer

  24. Exempel delade sidor

  25. Sidtabellens struktur • Logiska adressutrymmet ofta stort (232 till 264) – stora sidtabeller Lösningar: • Hierarchical Paging • Hashed Page Tables • Inverted Page Tables

  26. Sidtabeller i två nivåer

  27. Segmentering • Minneshanterings-metod som ligger närmare hur användaren ser på minnet • Ett program är en samling segment • Ett segment är en logisk enhet såsom: main program function object local variables, global variables stack symbol table arrays • Varje segment har ett namn och en storlek

  28. Användarens syn på ett program

  29. 1 4 2 3 Logisk vy av segmentering 1 2 3 4 user space physical memory space

  30. Segmentation Architecture • Logisk adress består av tupeln: <segment-number, offset>, • Segment-tabell– översätter logiska adresser till fysiska adresser • Både paging och segmentering har fördelar och nackdelar

  31. Segmentation Hardware

  32. Example of Segmentation

More Related