Konsepter:Virtuelt Minne

Fra CodeWiki

Gå til: navigasjon, søk
Programmet tror den har mer minne enn det som er realiteten. Minnet programmet aktivt bruker ligger i RAM'en og det inaktive blir lagret på disken
Programmet tror den har mer minne enn det som er realiteten. Minnet programmet aktivt bruker ligger i RAM'en og det inaktive blir lagret på disken

Virtuelt Minne er en datamaskinsystemteknikk som gir en applikasjon inntrykket av at det har mye mer minne enn det vi egentlig fysisk har i maskinen. Systemer som bruker denne teknikken gjør programmering av større applikasjoner enklere, ettersom du ikke trenger å tenke på minnebegrensninger, og bruker reelt fysisk minne mer effektivt enn de uten virtuelt minne.

Vi reserverer altså områder på disk til å fungere som et slags ekspandert internminne. Dette lar oss ha et mye større virtuelt minne enn det som fysisk er tilstede i maskinen.

Virtuelt Minne er dog ikke bare det å bruke lagerplasser på disken for å utvide den fysiske minnestørrelsen. Utvidelse av minnet er en konsekvens av bruken av virtuelt minne, men kan bli gjort på andre måter også. Definisjonen "Virtuelt Minne" er basert på det å "lure" programmer til å tro at de bruker store minneblokkadresser. Alle moderne operativ systemer til datamaskiner bruker virtuelt minne-teknikker for ordinære programmer; eksempelvis Word og Excel, Photoshop, osv.

Det oppstår her altså overføring av data mellom harddisken og det fysiske minnet. Dette kalles swapping og kan skje på to måter:

  • Fragmentene som flyttes mellom RAM og hardisken har varierende størrelse. Dette er kjent som segmentering, og ble benyttet av Multics og OS/2 1.x
  • Fragmentene som flyttes er like store, som regel 4 Kb. Dette kalles sideveksling eller paging og er den mest brukte teknikken i dag. UNIX og alle andre moderne operativsystemer benytter dette.


Implementering

Nesten alle implementeringer av virtuelt minne deler det virtuelle adrsserommet til et program inn i "pages". En page er en blokk med virtuelt minne. En page er normalt sett på minst 4Kb. Systemer med svært mye fysisk minne, eks: RAM, bruker ofte større page-størrelser.

Page Table

Nesten alle implementasjoner benytter seg av "page tables" til å oversette de virtuelle minneadressene som programmet ser til fysiske adresser som brukes av maskinvaren til å utføre instruksjoner. Hver oppføring i en page table inneholder den startadressen av page'n, enten den reelle hvor page'n faktisk er lagret, eller en indikator på hvorvidt page'en er holdt i en disk. Systemer kan ha en page table for et hele systemet, eller en page table for hver applikasjon.

Paging

Paging er prossen som lagrer inaktive virtulle minnesider (memory pages) til disken og gjennoppretter dem til det reelle minnet når det kreves.

Personlige verktøy
dataprogrammering
generelt