What are virtual memory spaces in NT-based operating system?

Virtuel Hukommelse: Hospitalet i Din Computer

27/07/2024

Rating: 4.72 (10669 votes)

Mange af os bruger vores computere hver dag til at jonglere med utallige opgaver samtidigt. Vi har en webbrowser åben med ti faner, et tekstdokument, et musikprogram og måske endda et spil kørende i baggrunden. Men har du nogensinde stoppet op og tænkt over, hvordan din computer, med sin begrænsede mængde fysisk hukommelse (RAM), kan håndtere alt dette uden at bryde sammen? Svaret ligger i et genialt koncept kendt som virtuel hukommelse. For at afmystificere dette komplekse emne, lad os forestille os din computer som et travlt hospital. Dette vil hjælpe os med at forstå, hvordan ressourcerne forvaltes effektivt for at behandle alle 'patienter' (programmer), der ankommer.

Is virtual address space set aside every time a process is started?
@Venky: Yes. It is not "set aside" each time a process is started. Virtual address space is not "stored" anywhere. Only pages of memory allocated for the process may be stored in memory/on disk. The allocation of memory depends of operating system.
Indholdsfortegnelse

Hvad er Virtuel Hukommelse? En Hospitalsanalogi

Forestil dig, at din computers fysiske hukommelse, eller RAM, er hospitalets skadestue og operationsstuer. Dette er et område med begrænset plads, men det er ekstremt hurtigt og designet til øjeblikkelig handling. Det er her, de mest kritiske patienter (aktive processer og data) behandles lige nu og her. Ligesom en skadestue ikke kan rumme alle patienter i hele byen på én gang, kan din RAM heller ikke indeholde alle de programmer og data, du nogensinde vil bruge.

Her kommer virtuel hukommelse ind i billedet. Tænk på virtuel hukommelse som hospitalets samlede journalsystem. For hver eneste borger (potentielt program) i byen findes der en teoretisk, standardiseret journalmappe. Denne mappe repræsenterer et enormt potentiale af information – alt fra fødselsoplysninger til komplekse operationsnotater. Denne mappe er den virtuelle hukommelsesplads. Det vigtige at forstå er, at denne mappe ikke er fyldt ud fra starten. Den er en skabelon, et adresserum, der definerer, hvor al information *kunne* placeres.

Processen: Når et Program (en Patient) Ankommer

Når du dobbeltklikker på et programikon for at starte det, svarer det til, at en ny patient ankommer til hospitalet. Systemet (hospitalets administration) gør med det samme en komplet, standardiseret journalmappe klar til denne patient. I tekniske termer tildeler operativsystemet processen et virtuelt adresserum. For et 32-bit Windows-system er denne 'journalmappe' typisk på 4 gigabytes (GB).

Dette er kilden til en almindelig misforståelse. Betyder det, at din computer øjeblikkeligt reserverer 4 GB plads på din harddisk? Absolut ikke. Ligesom hospitalet ikke printer 1000 tomme sider, hver gang en patient med en forstuvet ankel tjekker ind, reserverer din computer heller ikke pladsen på forhånd. Den opretter blot strukturen, adresserne, hvor information kan gemmes. Først når patienten rent faktisk har brug for en blodprøve (programmet anmoder om at gemme data), bliver den relevante side i journalen udfyldt og placeret et sted.

Brugerplads vs. Kernerum: Patientjournaler og Hospitalsdrift

Denne 4 GB store virtuelle 'journalmappe' er yderligere opdelt i to adskilte sektioner, ligesom et hospital har områder for patienter og områder kun for personale.

  • Brugerplads (User Space): Dette er den del af journalen, der er unik for den enkelte patient. Den indeholder patientens specifikke data, symptomer og behandlingsforløb. I computerverdenen er dette den del af den virtuelle hukommelse, hvor programmets egen kode og data ligger. Hvert program har sin egen private brugerplads, fuldstændig isoleret fra andre programmers. En patients journal kan ikke læses af en anden patient.
  • Kernerum (Kernel Space): Dette er hospitalets interne, administrative afdeling. Her findes de overordnede procedurer, vagtplaner for lægerne, adgang til centralt udstyr som scannere og operationsrobotter. Dette område er delt og tilgængeligt for alt autoriseret personale (operativsystemet), men er fuldstændig utilgængeligt for patienterne. I computeren er kernerum et delt hukommelsesområde, som operativsystemets kerne bruger til at styre systemressourcer, håndtere hardware og sikre, at alle programmer kører problemfrit sammen.

Sammenligningstabel: Hospital vs. Computer

HospitalsanalogiTeknisk TermBeskrivelse
Skadestue / OperationsstueFysisk Hukommelse (RAM)Hurtig, men begrænset hukommelse til aktive opgaver.
En patients komplette (men mestendels tomme) journalmappeVirtuelt AdresserumEt stort, teoretisk adresserum tildelt hver proces.
Hospitalets store journalarkiv i kælderenSidefil (Page File) på HarddiskenLangsommere, men stor lagerplads til data, der ikke er i aktiv brug.
Patientens private journaloplysningerBrugerplads (User Space)Hukommelsesområde unikt for et specifikt program.
Hospitalets centrale driftssystemer og procedurerKernerum (Kernel Space)Delt hukommelsesområde, som operativsystemet bruger til at styre alt.

Paging: Lægen Henter Information fra Arkivet

Hvad sker der så, når skadestuen (RAM) er fuld, men en ny, kritisk patient ankommer? Eller hvad hvis en læge har brug for en 10 år gammel røntgenundersøgelse, som ikke ligger i patientens aktive mappe på stuen? Her træder hospitalets arkiv i kraft. Arkivet er enormt, men det tager tid at hente ting derfra. Dette arkiv er din computers harddisk, specifikt en fil kaldet sidefil (page file).

Når RAM er ved at være fyldt op, vil hukommelsesstyringen (overlægen) kigge på de data, der ligger i RAM, og finde de dele, der ikke har været brugt i et stykke tid. Disse 'kolde' data bliver kopieret ned i sidefilen på harddisken for at frigøre plads i den hurtige RAM. Processen kaldes 'paging out'.

What are virtual memory spaces in NT-based operating system?
The following figure illustrates the NT-based operating system's virtual memory spaces and their relationship to system physical memory. As this figure shows, virtual memory is backed by paged physical memory, and a virtual address range can be backed by discontiguous physical memory pages.

Hvis programmet senere får brug for disse data igen, opstår en 'page fault'. Systemet opdager, at de nødvendige data ikke er i RAM. Det pauser programmet kortvarigt, finder dataene i sidefilen på harddisken og henter dem tilbage i RAM ('paging in'). Dette er grunden til, at din computer kan føles langsom, når du skifter til et program, du ikke har brugt i et stykke tid. Du hører måske harddisken arbejde – det er 'sygeplejersken', der løber ned i arkivet for at hente den gamle journal.

Ofte Stillede Spørgsmål (FAQ)

Hvorfor er virtuel hukommelse overhovedet nødvendig?

Virtuel hukommelse løser flere problemer. For det første lader det dig køre flere og større programmer, end du har fysisk RAM til. For det andet giver det hukommelsesbeskyttelse: Fordi hvert program har sit eget private adresserum, kan et fejlbehæftet program ikke ved et uheld overskrive data fra et andet program. Det er som at sikre, at en læge ikke ved en fejl skriver i den forkerte patients journal.

Gør virtuel hukommelse min computer langsommere?

Både ja og nej. Selve systemet er utroligt hurtigt. Men når systemet er tvunget til ofte at bytte data mellem den langsomme harddisk (sidefilen) og den hurtige RAM, vil du opleve en mærkbar nedgang i ydeevnen. Dette fænomen kaldes 'thrashing'. Det er et tegn på, at du ikke har nok RAM til de opgaver, du beder computeren om at udføre. Det svarer til en skadestue, der er så underbemandet, at personalet bruger al deres tid på at løbe til og fra arkivet i stedet for at behandle patienter.

Kan jeg se eller ændre størrelsen på min virtuelle hukommelse?

Ja, i Windows kan du administrere størrelsen på sidefilen via systemindstillingerne. I de fleste tilfælde er det dog bedst at lade Windows administrere dette automatisk. Systemet er designet til dynamisk at justere størrelsen efter behov. At tildele en meget stor, fast sidefil reserverer ikke hukommelse, men blot diskplads, som kunne have været brugt til andre filer.

Er konceptet det samme på andre operativsystemer som macOS eller Linux?

Ja, det grundlæggende koncept med virtuel hukommelse, adresserum, paging og en opdeling mellem bruger- og kernerum er en fundamental del af næsten alle moderne operativsystemer, herunder macOS og Linux. Implementeringsdetaljerne og terminologien kan variere en smule, men den overordnede arkitektur og formålet er det samme.

Ved at tænke på virtuel hukommelse som et velorganiseret hospital, bliver det klart, at det ikke handler om at spilde plads, men om smart og effektiv ressourcestyring. Det er et system, der giver hvert program illusionen om, at det har hele computerens hukommelse for sig selv, alt imens det i baggrunden konstant jonglerer med data mellem hurtig og langsom opbevaring for at få det hele til at fungere.

Hvis du vil læse andre artikler, der ligner Virtuel Hukommelse: Hospitalet i Din Computer, kan du besøge kategorien Teknologi.

Go up