Minne Flashcards
Hva handler memory managment om?
Håndtere systemets minne ressurser, som inkluderer:
- Allokere plass til prosesser.
- Beskytte minne regioner.
- Gi en virtuelt visning av minnet, slik at det fremstår som om systemet har mer minne en de faktiske tilgjenglige bytene.
- Kontrollere forskjellige nivåer av minnet i et hierarki.
Hvordan ser et typisk minne hierarki ut?
tertiary storage (tape) | sekundærminnet (disk) | hovedminnet (ram) | Cache(s)
De lavere nivåene har kopier av data fra høyere nivå.
Hva er ‘absolute addressing’?
Lesing av data ved referanse til den ‘absolutte’ byte nummeret i minnet.
- read absolute byte 0x000000ff
Brukes ofte av hardware, og er raskt.
Hva er ‘relative addressing’?
Lesing av data ved referanse til relative byte nummer i minnet, som er uavhengi av prosessens lokasjon i minnet, relativ til en base lokasjon som typisk vil bli gitt prosessen.
Trenger en dynamisk address translation, får å finne absolute addresser under kjøretid ved å legge til relative og base addressene.
Hvordan ser en prosess sitt minne layout ut?
- System data segment (PCB)
- Text (code) segment
- Data segment
- Stack Segment
Hva inneholder en prosess sitt system data segment (PCB)?
Blandt annet segment pekere, pid, program og stack pekere.
Hva inneholder en prosess sitt text/code segment?
Code segment er et text segment, som er lest fra program filen (for eksempel av exec).
Er vanligvis read-only, og kan være delt.
Hva inneholder en prosess sitt data segment?
Inneholder globale og statiske variabler som har en predefinert verdi og kan bli modifisert.
Initialiserte globale/statiske variabler (data)
Unitialiserte globale/statisk variabler (BSS)
Heap
- Dynamisk minne (vokser mot høyere adresser, mot stacken)
Hva inneholder en prosess sitt stack segment?
Lagrer parametere/variabler i funksjoner.
Lagrer register tilstander (f.eks. kall på funksjons EIP)
Vokser mot lavere addresser (mot heapen).
Hva er swapping ifht. minne administrering?
Fjerne en prosess fra minnet med all dens tilstand og data - og lagre det på et sekundær medium (disk, flash RAM, tape).
Hva er overlays ifht. minne administrering?
Det å manuelt bytte ut deler av kode/data. Blir utført av programmerern, og brukes kun for gamle og memory-scarce systemer.
Hva er segmentation/paging ifht. minne administrering?
Fjerne deler av en prosess fra minnet og lagre det på et sekundær medium - størrelsen på delene som blir byttet er gjerne en fast størrelse.
Hva er fixed partitioning ifht. minne administrering?
Ved fixed partitioning så deles minne inn i statiske partisjoner ved initialisering av systemet (boot eller tidligere).
Hva er fordeler/ulemper med fixed partisjoner med equal-size?
En ulempe er et store programmer ikke kan bli eksekvert (at de ikke får plass i den fast satte partisjon størrelsen).
Små programmer bruker ikke hele partisjonen, og vi får intern fragmentering.
Hva er fordeler/ulemper med fixed partisjoner med uequal-size?
Store programmer kan bli lastet med en gang.
Mindre intern fragmentering.
Krever håndtering av hvilken prosess som passer til hvilken partisjon.
Hva er dynamisk partitioning ifht. minne administrering?
Ved dynamisk partisjonering så blir minnet oppdelt ved kjøretid.
Partisjonene blir opprettet dynamisk og fjernet etter prosesser er ferdig.
Gir økt ekstern fragmentering under kjøring.
Hva er compaction ifht. dynamisk partisjonering?
Campaction er å fjerne ekstern fragmentering ved å flytte på data i minnet.
Hvilken algoritmer har vi for compaction?
First fit (enklest, raskest og typisk det beste valget).
Next fit (nesten som first fit).
Best fit (tregest, mye små fragmenter, og derfor ofte værst).
Hva er ‘The Buddy System’ ifht. partisjonering?
En miks av fixed og dynamisk partisjonering. Hver partisjon har en størrelse 2^k
Holder en liste av hull i minne layoutet og deres størrelse.
Kalkulerer det minste hull-størrelsen 2^k en prosess vil passe inn i, finner så et hull av den størrelsen.
- Om det ikke er tilgjenglig, del det minste hullet som er større enn 2^k rekursivt i halvdeler.
Hva er segmentering ifht. partisjonering?
Samme prinsipp som i dynamisk partisjonering, programmene kan ha forskjellige størrelser.
Deler programmet opp i memory frames av forskjellige størrelser, bestemt av programmeren eller OS’et.
Programmet kan dermed ligge i minnet på forskjellige plasser, istedenfor å måtte ligge som et stort segment.
Gir ingen intern fragmentering, men noe ekstern fragmentering (siden programmet kan ha segmenter av forskjellige størrelser)
Hva er paging?
Paging er samme prinsippet som segmentering, men programmet blir delt opp i segmenter av faste/like størrelser definert av maskinen.
Gir ingen ekstern fragmentering, men noe intern fragmentering avhengig av frame size.
Hvordan fungerer virtuelt minne?
Minnet er delt opp i frames av like størrelser, kalt page frames.
Programmet blir delt inn i frames av like størrelser, ofte kalt pages.
Noen pages vil ligge i det fysiske minnet, mens andre blir liggende på disk og bli hentet ved behov.
Maskinen vil ha et virtuelt adresserom som er større enn det fysiske minnet.
Virtuelle adresser blir oversatt til fysiske adresser ved å bruke en page table.
Hva er oppgaven til MMU ifht. page table?
Sørge for at pagen vi ønsker å aksessere er tilgjenglig i primærminnet, og om den ikke er det, så swapper den pagen fra disk med en page i primærminnet (avgjort av algoritmen brukt) slik at den blir tilgjenglig.
Vi har 4KB pages, plass til 8 pages i fysiske minnet, og et 16bit virtuelt adresserom.
Hvordan oversettes det virtuelle til det fysiske?
Pagen er 4KB, så det trengs 12bit for å kunne lagre hele pagen - dette blir offsetet.
Det er da 16-12 = 4 bits til indeksering, som gir oss 4^2 = 16 virtuelle pages.
Indekseringen brukes inn i en page tabell som inneholder de 3 første bitene til den fysiske adressen og en present bit.
Gitt at pagen er present i minnet:
- Spleises de tre bitene fra page tabellen med offsetet til den virtuelle adressen for å gi den nøyaktige adressen til data elementet i den gitte pagen som ble forrespurt.