Virtuelt lager
(eller: virtual memory, virtual storage).
Funktion, der gør det muligt at skrive programmer til en computer uden at skulle tage hensyn til arbejdslagerets faktiske størrelse.
Normalt skal et program kunne rummes inden for en computers arbejdslager, for at det kan udføres. Dette forhold er en begrænsning for større, mere komplekse programmer, der ofte viser sig ikke at kunne være i arbejdslageret. Programmøren vil derfor være nødt til at opdele programmet i mindre dele, der udføres efter hinanden, eller som hentes ind som overlays under udførelsen af et hovedprogram.
Dette komplicerer programudviklingen, idet programmøren nu ikke blot skal koncentrere sig om at løse det egentlige problem, men også må indrette sig efter computerens begrænsninger. Specielt ved programmer, der skal kunne køre på flere typer af processorer med forskellige adresserum, kan dette skabe problemer (og ekstra omkostninger).
Funktionen virtuelt lager giver mulighed for at skrive programmer uden at tage hensyn til arbejdslagerets størrelse, dvs. som om de skulle køre på en computer med et ekstremt stort arbejdslager. Det store lager er imidlertid blot en illusion, deraf ordet virtuel. I virkeligheden sker der under udførelsen det, at programmet vil være placeret på pladelageret, og kun en mindre del vil være indlæst i arbejdslageret. Når den programdel, der ligger i arbejdslageret, under udførelsen får brug for data eller programkode, som for øjeblikket ikke ligger inde, vil styresystem blive underrettet om dette og hente de nødvendige data og programdele fra pladelageret.
Indholdet af arbejdslageret skrives kun ud på pladelageret, hvis det er ændret i forhold til diskkopien. Under udførelsen af et program vil disse kopier af arbejdslagerets indhold måske mange gange blive skiftet frem og tilbage mellem arbejdslager og pladelager (swapping). Computeren opbevarer på denne måde en afbildning af det virtuelle lager på pladelageret, ofte opdelt i pages.
Fordelen ved anvendelse af virtuelt lager er som nævnt, at programmøren ikke skal bekymre sig om programmets størrelse. Det kører uanset arbejdslagerets faktiske størrelse. Ulempen er, at afviklingstiden for programmet forlænges, afhængig af hvor tit det er nødvendigt at hente nye områder ind fra pladelageret. I ekstreme tilfælde kan denne udskiftning af lagerområder ske så hyppigt, at computeren ikke får tid til at afvikle det egentlige program. Dette fænomen kaldes for trashing, eller på dansk, at computeren tærsker langhalm.
Virtuelt lager kan udformes efter forskellige principper netop for at undgå sådanne problemer, og der findes forskellige metoder til at optimere udnyttelsen (se demand paging). Virtuelt lager blev først indført som funktion i store computere, men anvendes nu helt generelt.
