Werkset
De werkset van een proces is de set pagina's in de virtuele adresruimte van het proces dat zich momenteel in fysiek geheugen bevindt. De werkset bevat alleen pagina-geheugentoewijzingen; niet-pagina-geheugentoewijzingen zoals Address Windowing Extensions (AWE) of toewijzingen van grote pagina's zijn niet opgenomen in de werkset.
Wanneer een proces verwijst naar wisselbaar geheugen dat zich momenteel niet in de werkset bevindt, treedt er een paginafout op. De fouthandler van de systeempagina probeert de paginafout op te lossen en, als deze slaagt, wordt de pagina toegevoegd aan de werkset. (Toegang tot AWE of grote paginatoewijzingen veroorzaakt nooit een paginafout, omdat deze toewijzingen niet kunnen worden gepaginad.)
Een harde paginafout moet worden opgelost door de inhoud van de pagina te lezen uit het back-uparchief van de pagina. Dit is het wisselbestand van het systeem of een geheugentoewijzingsbestand dat door het proces is gemaakt. Een zachte paginafout kan worden opgelost zonder toegang te krijgen tot de achterliggende opslag. Er treedt een zachte paginafout op wanneer:
- De pagina bevindt zich in de werkset van een ander proces, dus deze bevindt zich al in het geheugen.
- De pagina is in overgang, hetzij omdat deze was verwijderd uit de werksets van alle processen die gebruikmaakten van de pagina en nog niet is hergebruikt, of het al aanwezig is als gevolg van een geheugenbeheer-prefetch-bewerking.
- Een proces verwijst voor het eerst naar een toegewezen virtuele pagina (ook wel een fout zonder vraaggenoemd).
Pagina's kunnen worden verwijderd uit een proceswerkset als gevolg van de volgende acties:
- Het proces vermindert of leegt de werkset door de functie SetProcessWorkingSetSize, SetProcessWorkingSetSizeEx of EmptyWorkingSet aan te roepen.
- Het proces roept de VirtualUnlock--functie aan op een geheugenbereik dat niet is vergrendeld.
- Het proces maakt een toegewezen weergave van een bestand ongedaan met behulp van de functie UnmapViewOfFile.
- De geheugenbeheerder verwijdert pagina's van de werkset om meer beschikbaar geheugen te maken.
- De geheugenbeheerder moet een pagina verwijderen uit de werkset om ruimte te maken voor een nieuwe pagina (bijvoorbeeld omdat de werkset de maximale grootte heeft).
Als meerdere processen een pagina delen, heeft het verwijderen van de pagina uit de werkset van het ene proces geen invloed op andere processen. Nadat een pagina is verwijderd uit de werksets van alle processen die deze gebruiken, wordt de pagina een overgangspagina. Overgangspagina's blijven in de cache opgeslagen in het RAM-geheugen totdat naar de pagina wordt verwezen door een bepaald proces of opnieuw wordt gebruikt (bijvoorbeeld gevuld met nullen en gegeven aan een ander proces). Als een overgangspagina is gewijzigd sinds deze voor het laatst naar de schijf is geschreven (dat wil gezegd, als de pagina 'vuil' is), moet de pagina naar de back-upopslag worden geschreven voordat deze kan worden hergebruikt. Het systeem kan beginnen met het schrijven van vuile overgangspagina's naar hun backingstore zodra dergelijke pagina's beschikbaar komen.
Elk proces heeft een minimale en maximale werksetgrootte die van invloed is op het pagina-verplaatsingsgedrag van het virtuele geheugen van het proces. Gebruik de functie GetProcessMemoryInfo om de huidige grootte van de werkset van een opgegeven proces te verkrijgen. Gebruik de functies GetProcessWorkingSetSizeEx en SetProcessWorkingSetSizeEx om de minimale en maximale grootte van de werkset te verkrijgen of te wijzigen.
De PSAPI (Process Status Application Programming Interface) biedt een aantal functies die gedetailleerde informatie retourneren over de werkset van een proces. Voor meer informatie, zie Werksetinformatie.