Minneshantering - grunderna. Föreläsning 2

Relevanta dokument
Minneshantering segmentering och virtuellminne. Föreläsning 3

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

4 grundregler. Minneshantering. Problemet. Windows minkrav

Några gamla tentamensuppgifter: Minneshantering

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel

Tentamen i ID2206, ID2200 samt IS1350 Operativsystem

Minnet från processorns sida Datorteknik

Operativsystem - Minneshantering I

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Digitala System: Datorteknik ERIK LARSSON

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Datorteknik ERIK LARSSON

Filsystem användarvy och implementering. Föreläsning 4

Tentamen den 18 mars svar Datorteknik, EIT070

Filsystem - Inode. Datorteknik. Minnets komponenter. Programexekvering. Enhet för indata. Enhet för utdata CPU. Primärminne.

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

F5: Högnivåprogrammering

Operativsystem (IS1350) :00-12:00

Datorteknik ERIK LARSSON

F5: Högnivåprogrammering

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Mer datorarkitektur. En titt I datorn Minnen

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Närliggande allokering Datorteknik

Datorarkitekturer med operativsystem ERIK LARSSON

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

Systemanropp kontrollen övergår från userspace till kernelspace ca 100 i UNIX, många fler i NT

Operativsystem (ID2200/06) XX XX:00-XX:00

Cacheminne i en AMD Opteron Processor

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

Grundläggande datavetenskap, 4p

Digitala System: Datorteknik ERIK LARSSON

Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00

Filsystem. Varför? Hur? För att kunna lagra data mer permanent än i RAM. Vettig organisation Vettiga namn

Tentamen den 17 mars 2016 Datorteknik, EIT070

Föreläsningsanteckningar 5. Cacheminnen

Datorsystemteknik DAVA14 Föreläsning 10

Exempeltentamen Datorteknik, EIT070,

HF0010. Introduktionskurs i datateknik 1,5 hp

Snapdragon 810: Cacheminnet

Design och trender. Föreläsning 12

Innehåll. Minneshantering. Systemet hivlls... Föreläsning 1. Problemformuleringar. Problem a[ lösa idag (...)

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Föreläsning 1: Intro till kursen och programmering

Datorarkitekturer med operativsystem ERIK LARSSON

Dugga 1 status 41 godkända 39 ej godkända ERIK LARSSON

Cacheminne i en Intel Core 2 Duo-processor

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Datorsystemteknik för E/D

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

Digital- och datorteknik

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

Digital- och datorteknik

Operativsystem - Filsystem

Digital- och datorteknik

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

CE_O5. Cacheminne. Hemlaboration 2.

Datorarkitekturer med operativsystem ERIK LARSSON

Lösningsförslag till tentamen i IS1350 Operativsystem

32 Bitar Blir 64 Sammanfattning

Jämförelse av skrivtekniker till cacheminne

Digitalteknik och Datorarkitektur 5hp

Pipelining i Intel Pentium II

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Datorarkitekturer med Operativsystem

Operativsystem ID1200/06 Tentamen :00-18:00

MESI i Intel Core 2 Duo

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

CE_O8. Cacheminne. Hemlaboration 2.

TDDC76 - Programmering och Datastrukturer

Datakom II (MNP) ht 1998 Bengt Ahlgren 1. Vad är speciellt med implementering av kommunikationsprotokoll?

Att använda pekare i. C-kod

Digital- och datorteknik

Stack och subrutiner Programmeringskonventionen

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Digital- och datorteknik

Föreläsning 3.1: Datastrukturer, en översikt

Minnesisolering för virtuella maskiner

Föreläsning 2. Operativsystem och programmering

Transkript:

Minneshantering - grunderna Föreläsning 2

Minneshantering Hur hantera grundfallet med endast en process? Hur kan flera processer vara aktiva, dvs vara i minnet, samtidigt? Adressrymden Kontinuerlig allokering Siduppdelat minne (paging) Kap: 3.1-3.3 Minneshantering 2

Adressrymden Vad är det vi pratar om?

Minneshierarki snabbare* mindre dyrare register cache primärminne elektronisk disk magnetisk disk långsammare* större billigare optisk disk magnetband *http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html 4

Från program till process källkod kompilator assemblator objekt modul länknings editor ladd modul system bibliotek andra objekt moduler laddare Dynamisk laddning: en kopia av binärkoden för funktionen laddas vid behov = första anropet Dynamisk länkning: om någon process har en kopia av binärkoden i minnet, hitta den och länka in den, annars länka in en egen kopia. Görs via stubkod. (urspr. MULTICS) dynamiskt laddade in-memory system binary bibliotek memory image dynamisk länkning Minneshantering 5

Minnesutrymmet som en process behöver varierar oftast över tiden STACK HEAP Stacken växer/krymper med funktionsanrop. Heapen växer när vi allokerar mer minne på den för objekt/datastrukturer som inte är lokala variabler eller parametrar till funktioner. Vad händer då minnet är slut? TEXT Minneshantering 6

Fysisk vs. logisk/(virtuell) adressrymd Fysisk adressrymd adresser för minnespositioner i datorns fysiska minne (~primärminnet) Logisk/(virtuell) adressrymd abstrakt adressrymd som programmet använder ex: som programmerare behöver jag inte fundera på vilken fysiskadress som används för att lagra en variabel som t.ex int a = 4; När ett program laddas i minnet för exekvering måste en adressöversättning/adressbindning ske från logiska adresser till fysiska adresser Minneshantering 7

Allokeringsproblematiken Hur allokerar vi fysiskt minne för att ladda in ett program för exekvering i? Hur håller vi ordning på ledigt resp. upptaget minne? Hur sker adressöversättning? Minneshantering 8

Adresser och adressbindning Relokerbar (flyttbar) kod: adresser anges som relativa gentemot t.ex. programstart Ex. första instruktionen = lägsta adressen 0 en relativ adress är icke-negativ (> 0) När binds en relativ adress till en fysisk (absolut) adress? När vi vet var programmet laddas! Compile-time: kan generera absolut-adresserad kod Load-time: kompilatorn genererar relokerbar kod, översätt alla relativa adresser till absoluta vid laddningen Execution-time: Om processen kan flyttas i minnet under exekvering måste man skjuta upp adressbindningen till exekveringstillfället. Kräver hårdvarustöd. Minneshantering 9

Kontinuerlig allokering Har använts historiskt. Används fortfarande i små system med begränsade resurser.

En enkel minnesmodell ex. MS-DOS ROM Bootkod Drivrutiner etc = BIOS 1024 K 960 K Endast ett användarprogram i taget RAM Användar Program 512 K Användarprogrammet kan swappas ut på disk; långsam multitasking Vad händer om OS växer? OS User base Användarprogrammet kan skriva över OS! 0 Minneshantering 11

Ett första steg mot flera processer - fixa minnespartitioner Idé: dela upp minnet i flera, fixa, partitioner som var och en kan hålla en process (OS/360) 0xFFFF Kö av väntande processer Strategier när en partition blir ledig: Välj den process som: Hur vet man på vilken adress en variabel eller funktion kommer att ligga i minnet? Kan ett program skriva sönder ett annat? OS 0 i) Är den första som får rum i partitionen ii) Är den som passar bäst, ger minst spill, i partitionen Minneshantering 12

Skydd och adressbindning en första ansats Hur undviker vi att ett program skriver sönder andra program eller OS:et? Låt adressöversättning/bindning skötas av en enkel MMU! Gränsregister: anger högsta relativa adress som processen tillåts accessa. Skyddar andra processer. Basregister eller relokeringsregister innehåller värde som adderas till relativa adresser (Kontrollera att ingen absolutadress otillåtet addresserar in i OS:et, endast tillåtet om processen exekverar i kernelmode ) Minneshantering 13

Exempel med basregister och gränsregister LOAD r2 <- (700) ladda r2 med innehållet på adress 700 MMU Minne CPU Logisk/(virtuell) adress 700 Gränsregister 1500 < ja Basregister 500 + 1200 2000 nej 500 TRAP: adresseringsfel OS Minneshantering 14 0

Flera partitioner så långt Partition 1 Partition 2 Partition 3 OS P1 limit P2 limit, P1 base P3 limit, P2 base P3 base Varje partition har sina egna Base och Limit värden Måste partitionerna ha fix storlek? Hur mycket extra utrymme måste finnas i en partition för att processens stack och heap skall kunna växa? Minneshantering 15

Variabla partitioner Processer kan ha vilken storlek som helst (som ej är större än minnet) Oallokerade partitioner (hål) bildas när en liten process läggs i ett stort utrymme Krångligare relokeringsproblem Hur hålla ordning på ledigt minne? Minneshantering 16

Ready-kö Minne Variabel storlek på partitioner - ett exempel P3 P2 P3 P2 Process P4 får inte plats pga. fragmentering P1 P1 P1 P4 P4 P2 P3 P4 Minneshantering 17

Fragmentering Extern fragmentering Ledigt utrymme finns, men är uppdelat i för små block Löses med kompaktering (kostsamt) eller med att ha en enda blockstorlek (leder till intern fragmentering) Intern fragmentering Dåligt utnyttjande av minne inom allokerade block Löses med variabel blockstorlek (tillbaka till extern fragmentering) Block som kunde växa och krympa vore allra bäst Minneshantering 18

Hålla ordning på ledigt minne -länkade listor Länkad lista med hål (ledigt utrymme) med Startadress Storlek Hur ska listan sorteras? Det beror på allokeringsmetoden! 1300 1000 800 700 400 P3 P1 Start:700 Size:100 Start:1000 Size:300 Allokeringsmetoder: First-fit Next-fit Best-fit Worst-fit Quick-fit Minneshantering 19

Hålla ordning på ledigt minne -bitmap Dela upp minnet i lika stora allokeringsenheter Ha en bitmap där 0 representerar ledig och 1 upptagen allokeringsenhet Val av storlek på allokeringsenhet viktigt För liten bitmappen blir för stor För stor onödig intern fragmentering P3 1 1 1 0 1 1 0 0 0 P1 Minneshantering 20

Måste en process ligga i minnet ända till dess den är klar? Vad händer t.ex om vi har en interaktiv process där användaren går på lång-lunch? Ska den processen ligga och ta upp plats i minnet trots att den inget gör?

Swappning Flytta processer mellan huvudminne och disk för att: inte alla processer får plats samtidigt då någon process blockerats, t.ex interaktiv process där användaren gått på lunch Kan ta lång tid för stora processer Swap-in flyttar från disk till minne och swap-out flyttar åt andra hållet Minneshantering 22

Swappning Swapping för med sig att: Vi måste ha utrymme på hårddisken för processer som swappas ut Vi måste organisera diskutrymmet på något sätt, antagligen på liknande sätt som primärminnet Hårddisken är långsam relativt primärminnet... Vad händer om vi får fragmentering och kanske måste kompaktera? Måste en utswappad process laddas på samma minnespositioner som den låg i innan den swappades ut? Minneshantering 23

Enkel sidindelad minneshantering Grunderna för paging

Sidindelad minneshantering Paging Låna idéer från kontinuerlig allokering med bitmap! Dela in: Logiska/(virtuella) minnesrymden i sidor (pages) Fysiska minnesrymden i ramar (frames) Sidor och ramar är av samma storlek Gör (dynamisk) adressöversättning vid execution-time Gör en smartare MMU som tillåter att vi mappar (konsekutiva) sidor på icke-konsekutiva ramar! Minneshantering 25

Minneshantering 26 Sidhantering ett första exempel Sid- tabeller 2 1 0 5 4 P1 sid nummer 2 1 0 P3 1 0 Logisk adressrymd P4 3 2 1 0 Fysiskt minne Ready-kö P1 P4 ram nummer P3 8 7 6 5 4 3 2 1 0 P4 P4 8 7 6 3 ledig ledig ledig upptagen upptagen ledig upptagen upptagen upptagen Ramtabell upptagen upptagen upptagen upptagen

Sidindelning Löser problemet med extern fragmentering Tydlig uppdelning av: Logisk adressrymd programmeraren uppfattar att den logiska adressrymden är kontinuerlig Fysisk adressrymd uppdelad i ramar programmets fysiska minne kan ligga utspritt Kan ge intern fragmentering I snitt kan man förvänta sig att den sista sidan/ramen bara blir halvfull Minneshantering 27

Sidindelning -adressuppdelning Logisk adressrymd 2 m en adress är m bitar lång m-1 Antag att sidstorleken är 2 n (bytes) - då krävs n bitar för att adressera i sidan Resterande m-n bitar utgör sidnummer sidnummer p m-n sidoffset d n 0 Minneshantering 28

ramnr 0 Siduppdelning - adressöversättning Logisk adress Fysisk adress CPU sidnr offset ramnr offset sidnr ramnr offset Sidtabell (ligger i det fysiska minnet) Fysiskt minne Minneshantering 29

En observation! I ett fleranvändarsystem kör många samma program t.ex. Webbläsare Programkod, i.e text-segmentet, är normalt sett re-entrant (re-entrant = koden modifieras inte under exekveringen) Text-segmentet kan vara read-only och skulle kunna delas av flera processer! Logisk adressrymd P1 P3 sidnummer 2 1 0 1 0 Sidtabeller 2 1 0 Fysiskt minne ram nummer 5 P1 OS Föreläsning 0 2, Minneshantering P1&P2 text 0 30 P3 8 7 6 5 4 3 2 1

Delat minne shared memory Processer kan dela inte bara read-only sidor utan även read-write segment/data Kallas delat-minne (shared-memory) Kan användas för effektiv kommunikation mellan processer Kräver någon form av synkronisering mellan processerna! Minneshantering 31

Skydd från att adressera utanför det allokerade minnet - protection Hur skyddar vi oss från att en process adresserar en ram som inte ligger i dess adressrymd? 1. Valid/invalid bit i varje entry i sidtabellen 2. Register som talar om längden av sidtabellen Minneshantering 32

Exempel Processen P1 får adressera upp till adress 3500 1KB stora sidor Sidnr 0 1 2 3 4 5 6 36 38 33 34 0 0 0 v v v v i i i Sidtabell Ramnr 33 34 35 36 37 38 Vad händer om P1 försöker adressera: Adressen 5422? Adressen 3742? 39 Minneshantering 33 Del av fysiska minnet

Hur väljer man sidstorlek? Liten sidstorlek liten intern fragmentering Men Liten sidstorlek ger stor sidtabell med ökande overhead I/O till/från disk är effektivare för större datablock (relativa overheaden minskar) Ex: sidstorlek = 1MB (2 20 ) adressrymd = 2 64 max sidtabellstorlek = 2 44 * storlek på en position Varje process har en egen sidtabell är storleken ett problem? Minneshantering 34

En enkel räkneövning Genomsnittslig processtorlek = s bytes Sidstorlek = p bytes Antal bytes per entry i sidtabellen = e Antal sidor per process i genomsnitt = s/p Overhead = e*(s/p) + p/2 Minimera map p: -e(s/p 2 ) + ½ = 0 Optimal sidstorlek map min overhead: p = 2es Ex: s = 1MB, e = 8 bytes -> p = 4KB Minneshantering 35

Typiska sidstorlekar 512B 64KB har använts Trend mot större sidstorlekar Idag vanliga sidstorlekar: 4KB 8KB Vissa system tillåter flera olika sidstorlekar Solaris : 8KB och 4MB beroende på vilken typ av data som lagras i sidorna - 8KB vanliga användarprocesser - 4MB OS-kärnan och tillgängligt för användarprocesser som t.ex. databasapplikationer Minneshantering 36

Hur implementerar man sidtabellen? En massa mer eller mindre viktiga detaljer och några datastrukturer

Vad har vi att ta hänsyn till? Möjliga problem: Sidtabellen kan potentiellt bli väldigt stor Varje instruktion ger normalt sett upphov till 1-4 minnesreferenser För varje minnesreferens får vi overhead när vi går via sidtabellen... Krav: Minneseffektiv! Snabb! hårdvarustöd vore bra Minneshantering 38

Några första försök Använd register för att hålla sidtabellen + snabb access - inte möjligt för stora sidtabeller (> 256 sidor) Hur gör man när man byter process måste man ladda om alla register? Lägg hela sidtabellen i vanligt minne + kan ha stor sidtabell + enkelt att byta sidtabell man behöver bara sätta om en pekare - dubbelt så lång minnesaccesstid eftersom man för varje minnesreferens först måste hämta sidtabellsentry från minnet Minneshantering 39

En observation Lokalitet Minnesreferenserna som en process gör uppvisar lokalitet ex. När man exekverar i en subrutin accessas dess kod och dess parametrar/variabler Det utnyttjas vid cachening och vi kan göra likadant för sidtabellen! stack heap text Minneshantering tid 40

Translation Lookaside Buffer - TLB TLB fungerar som ett litet cacheminne för sidtabellen inne i MMU:n Implementeras med associativt minne (jfr CAM) dvs. man kan söka i hela minnet parallelt Typiskt 8-64 (4196) entryn, dvs täcker ofta bara en del av primärminnet Kan förbättra prestanda dramatiskt Minneshantering 41

TLB innehåll Valid/invalid bit Sidnr Modifieradbit Protection (RWX) Ramnr Ev. Adressrymds identifierare ASID, motsv. PID Valid Sidnr Modifierad Protection Ramnr 1 44 0 R X 21 1 370 0 R X 12 1 135 1 RW 37 1 22 1 RW 14 0 34 0 R X 0 0 0 1 R W 0 ASID P2 P1 P1 P2 P3 P3 Minneshantering 42

Adressöversättning med TLB Logisk adress Fysisk adress CPU sidnr offset ramnr offset TLB hit TLB ramnr TLB miss Sidtabell ramnr Fysiskt minne Minneshantering 43

Miss i TLBn 1. Accessa sidtabellen i primärminnet 2. Uppdatera TLB:n genom att slänga ut ett ogiltigt eller gammalt entry Vem sköter om detta? Ofta MMU:n men den blir komplex TRAP till OS som får uppdatera (dvs mjukvarustyrd uppdatering) Vanligt i nyare processorer: SPARC, MIPS, ALPHA Minneshantering 44

Räkneexempel på TLB Minnesaccesstid M = 100 nsec TLB söktid s = 20 nsec Träffsannolikhet i TLB (hit ratio) h = 90% Effektiv minnesaccesstid = h(s + M) + (1-h)(s + M +M) = 0.9(20 + 100) + 0.1(20 + 100 + 100) = 130 Minneshantering 45

Hur hantera storleken på sidtabellen - val av datastruktur 1. En-nivås sidtabell (det vi diskuterat hittills) Om vi inte vill allokera kontinuerligt utrymme i minnet för hela sidtabellen 2. Fler-nivåers sidtabell sidindelad sidtabell (hierarchical or multi-level paging) 3. Hashad sidtabell Kan vi minska storleken ytterligare? 4. Inverterad sidtabell Minneshantering 46

Flernivåers sidtabell (Pentium II) sidnummer p sidoffset d yttre sidnummer p1 inre sidnummer p2 sidoffset d Adressöversättning logisk till fysisk adress p1 p2 d ramnr d p1 p2 ramnr Yttre sidtabell Sida i den inre sidtabellen Minneshantering 47 Inre sidtabell

Hur delar man upp den logiska adressen i flernivåers sidtabell? Antag: logisk adressrymd = 2 n sidstorlek = 2 m storlek på ett entry i sidtabellen 2 e Börja med en tvånivåers sidtabell: Vi vill att en sida i den innersta sidtabellen ska mappa enkelt till sidstorleken! Då kan man ha 2 m-e entryn per sida. Den yttre sidtabellen kommer då att ha 2 n-2m+e positioner Minneshantering 48

Uppdelning av den logiska adressen forts. Exempel: logisk adressrymd = 2 64, sidstorlek = 4KB (2 12 ) storlek på ett entry 4 byte #bitar yttre sida inre sida offset p2 p1 d 42 10 12 Den yttre sidtabellen blir för stor med 2 42 positioner! Sidindela den också!? #bitar yttre yttre sida p3 yttre sida inre sida offset p2 p1 d 32 10 10 12 Den yttersta sidtabellen blir fortfarande för stor. För att nå rimlig storlek krävs minst 5-7 nivåers sidindelning! Men det blir för många nivåer för att vara effektivt! Hitta på något annat för stora adressrymder! Minneshantering 49

Hashad sidtabell Logisk adress Fysisk adress CPU sidnr a offset ramnr offset hash funktion sidnr x ramnr sidnr a ramnr Hashad sidtabell sidnr z ramnr Fysiskt minne Minneshantering 50

Inverterad sidtabell Om varje process har en egen sidtabell kan det gå åt mycket minne! Inverterad sidtabell En sidtabell för alla processer Ett entry för varje fysisk ram I varje entry har man sidnr + PID för processen som allokerat ramen Minneshantering 51

Inverterad sidtabell naivt exempel Logisk adress Fysisk adress CPU PID sidnr offset ramnr i offset sök ramnr 0 PID sidnr ramnr i Inverterad sidtabell max ramnr Fysiskt minne Minneshantering 52

Effektivare inverterad sidtabell Den naiva implementationen har nackdelen att man måste söka i sidtabellen Åtgärder Använd associativt minne som t.ex. CAM dyrt Hasha den inverterade sidtabellen används i 64-bitars UltraSPARC, PowerPC Ett potentiellt problem med inverterade sidtabeller är att det är svårare att implementera delat minne Minneshantering 53

Summering vad vi pratat om idag Adressrymden logiska/(virtuella) och fysiska adresser Minneshantering där hela processen måste få plats i primärminnet Kontinuerlig allokering Fragmentering Sidindelat minne -paging Minneshantering 54

Kommande föreläsningar Torsdag kl 13-15 sal E Minneshantering del 2 Måndag 8-10 sal E (Robert Rönngren) C-programmering del 1 Tisdag 13-15 sal E (Robert Rönngren) C-programmering del 2 Torsdag 8-10 sal E Filsystem Minneshantering 55