Implementatie

Om paging mogelijk te maken, worden het programma en de data (op de schijf) die in het geheugen moet worden geladen verdeeld in pagina's. Het geheugen wordt ook verdeeld in pagina's van dezelfde grootte (meestal enkele KiB's) en de pagina's die het eerst nodig zijn worden in het geheugen geladen. Het geheugen wordt helemaal vol gestopt. Wordt er op een gegeven moment verwezen naar een pagina die niet in het geheugen zit, dan wordt er een pagina weggegooid en de goede pagina er voor in de plaats gezet.

Er is bij paging een afweging wanneer je een pagina op de harde schijf schrijft en weg gooit uit het geheugen. Het is efficient om alle pagina's op de harde schijf te hebben, zodat je een pagina niet nog eens hoeft weg te schrijven voordat hij weggegooid moet worden. Dit bespaart tijd, maar als de swap-space (de harde-schijfruimte toegewezen aan het paging-proces) groot is, willen sommige besturingssystemen nogal eens het hele geheugen naar de schijf schrijven en vervolgens alle pagina's uit het geheugen verwijderen. De computer is daarna alleen maar bezig met pagina's laden en weer verwijderen, wat resulteert in trashing. Trashing is het proces waarbij de computer meer bezig is met paging dan met andere dingen doen. Er blijft geen tijd meer over voor de gewone programma's.

Vervanging van pagina's

Least Recently Used

Als er een page-fault is en het geheugen is vol, moet er een pagina uit het geheugen gehaald worden, eventueel na weggeschreven te zijn naar de harde schijf. LRU gooit de pagina eruit die het langst geleden gebruikt is. Het is niet waarschijnlijk dat deze pagina tot de verzameling pagina's van het huidige programma behoort. Passen niet alle pagina's van een programma in het geheugen, dan kan dit systeem echter tot trashing leiden, waar steeds pagina's moeten worden geladen die er nog maar pas zijn uit gegooid.

First-In First-Out

FIFO verwijdert de pagina die het langst geleden geladen is (in tegenstelling tot LRU, die de pagina weggooit die het langst geleden gebruikt is).

First non-dirty

Een hele simpele methode om de pagina te kiezen die er uit moet is de eerste pagina te pakken die niet dirty is. Pagina's met het dirty bit geset moeten eerst naar de harde schijf teruggeschreven worden alvorens te kunnen worden verwijderd. Dit kost veel tijd, waardoor dit systeem een tijdsbesparende oplossing is. Het moet echter in combinatie met een ander systeem gebruikt worden, anders is er op een gegeven moment maar één pagina niet-dirty en wordt deze de hele tijd vervangen.

Vervanging van pagina's in Linux

Linux maakt gebruik van Least Recently Used: de pagina die het langst niet is gebruikt wordt uit het geheugen gegooid. Verder wordt er eerder geswapt als de hoeveelheid vrij geheugen afneemt. Dit schema kan nog steeds tot trashing leiden, als er sneller pagina's nodig zijn dan dat ze weggeschreven kunnen worden.