Minnesskydd
Minne som tillhör en process skyddas implicit av dess privata virtuella adressutrymme. Dessutom ger Windows minnesskydd med hjälp av den virtuella minnesmaskinvaran. Implementeringen av det här skyddet varierar med processorn, till exempel kan kodsidor i adressutrymmet för en process markeras som skrivskyddade och skyddas från ändringar av användarlägestrådar.
En fullständig lista över attribut finns i Minnesskyddskonstanter.
Copy-on-Write Protection
Copy-on-write-skydd är en optimering som gör att flera processer kan mappa sina virtuella adressutrymmen så att de delar en fysisk sida tills någon av processerna ändrar sidan. Detta är en del av en teknik som kallas lat utvärdering, som gör att systemet kan spara fysiskt minne och tid genom att inte utföra en åtgärd förrän det är absolut nödvändigt.
Anta till exempel att två processer läser in sidor från samma DLL till sina virtuella minnesutrymmen. Dessa virtuella minnessidor mappas till samma fysiska minnessidor för båda processerna. Så länge ingen av processerna skriver till dessa sidor kan de mappa till och dela samma fysiska sidor, som visas i följande diagram.
Om Process 1 skriver till en av dessa sidor kopieras innehållet på den fysiska sidan till en annan fysisk sida och den virtuella minneskartan uppdateras för process 1. Båda processerna har nu en egen instans av sidan i fysiskt minne. Därför är det inte möjligt för en process att skriva till en delad fysisk sida och för den andra processen att se ändringarna.
Läser in program och DLL:er
När flera instanser av samma Windows-baserade program läses in körs varje instans i sitt eget skyddade virtuella adressutrymme. Deras instansreferenser (hInstance) har dock vanligtvis samma värde. Det här värdet representerar basadressen för programmet i dess virtuella adressutrymme. Om varje instans kan läsas in i standardbasadressen kan den mappas till och dela samma fysiska sidor med de andra instanserna med hjälp av kopieringsskydd. Systemet gör att dessa instanser kan dela samma fysiska sidor tills någon av dem ändrar en sida. Om någon av dessa instanser av någon anledning inte kan läsas in i den önskade basadressen tar den emot sina egna fysiska sidor.
DLL:er skapas med en standardbasadress. Varje process som använder en DLL försöker läsa in DLL:en inom sitt eget adressutrymme på den virtuella standardadressen för DLL:en. Om flera program kan läsa in en DLL på sin virtuella standardadress kan de dela samma fysiska sidor för DLL:en. Om en process av någon anledning inte kan läsa in DLL-filen på standardadressen läser den in DLL:en någon annanstans. Kopierings-på-skrivskydd tvingar vissa av DLL-sidorna att kopieras till olika fysiska sidor för den här processen, eftersom korrigeringarna för snabbinstruktioner skrivs på DLL-sidorna, och de kommer att vara annorlunda för den här processen. Om kodavsnittet innehåller många referenser till dataavsnittet kan det leda till att hela kodavsnittet kopieras till nya fysiska sidor.