320 likes | 461 Views
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
E N D
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)
Base- och Limit-registren baseregister ochlimitregister definierar det logiska adressutrymmet
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
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
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
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)
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)
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
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
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
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
Exempel 2 sidtabell 32-byte memory and 4-byte pages
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
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
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
Sidtabellens struktur • Logiska adressutrymmet ofta stort (232 till 264) – stora sidtabeller Lösningar: • Hierarchical Paging • Hashed Page Tables • Inverted Page Tables
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
1 4 2 3 Logisk vy av segmentering 1 2 3 4 user space physical memory space
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