Demand paging
En metode, der benyttes i forbindelse med virtuelt lager. Ved paging er program eller data delt op i sider (pages) med fast længde, og arbejdslageret er opdelt i sidepladser af samme længde. Et større program og dets data vil derfor være fordelt, således at nogle sider er inde i arbejdslageret, hvor CPU'en kan anvende dem, og resten befinder sig på baggrundslageret. Er der på et givet tidspunkt brug for en side, som ikke befinder sig i arbejdslageret, må den hentes ind fra baggrundslageret.
Ved demand paging (dvs. paging "når behovet opstår") indlæses en side først, når CPU'en har behov for den, enten fordi den indeholder instruktioner, som skal udføres, eller data, der skal behandles. Metoden bevirker derfor, at det kun er de dele af et program eller dets data, som der rent faktisk er behov for, som optager plads i arbejdslageret. Dette reducerer behovet for arbejdslagerplads væsentligt, idet der i et program ofte vil være en betydelig del, som behandler undtagelsestilfælde og fejlsituationer og derfor kun sjældent kommer til udførelse.
Metoden er endnu mere effektiv, hvis sider, som ikke har været brugt i et stykke tid, automatisk skrives tilbage på baggrundslageret, så pladsen i arbejdslageret kan bruges til andet formål. Der findes forskellige algoritmer til at finde den bedste side at frigive (f.eks. "first-in-first-out", "least-recently-used"). Det er vigtigt, at der ved designet af basisprogrammel vælges en velegnet sideudskiftningsalgoritme, idet computeren ellers kan bruge al sin CPU-kraft på sideudskiftninger, et fænomen, der kaldes "thrashing".
Demand paging er velegnet for programmer, der på et givet tidspunkt fortrinsvis udfører instruktioner (eller bruger data), der ligger i velafgrænsede områder, dvs. at programmet er velstruktureret. Spaghetti-kode er således dårligt egnet.
Metoden kræver normalt, at der i maskinellet er funktioner, der støtter den. Eksempler er memory management unit og virtuelt lager. Maskinellet opdager, når der refereres til en side, der ikke er i arbejdslageret, og forårsager et interrupt af typen "page fault". Det er nu basisprogrammellets (styresystemets) opgave at lokalisere den ønskede side og indlæse den, eventuelt efter at have frigjort en side, der var i brug. Computerens CPU skal derefter være i stand til at genstarte den instruktion, som havde brug for den pågældende side.
Se også cache, cache lager, disk cache og TLB.

