Bellek Koruması
Bir işleme ait bellek, özel sanal adres alanı tarafından örtük olarak korunur. Buna ek olarak, Windows sanal bellek donanımını kullanarak bellek koruması sağlar. Bu korumanın uygulanması işlemciye göre değişiklik gösterir; örneğin, bir işlemin adres alanında bulunan kod sayfaları salt okunur olarak işaretlenebilir ve kullanıcı modu iş parçacıkları tarafından yapılan değişikliklere karşı korunabilir.
Özniteliklerin tam listesi için bkz. Bellek Koruma Sabitleri.
Yazma Üzerine Kopyalama Koruması
Yazma üzerine kopyalama koruması, işlemlerden biri sayfayı değiştirene kadar birden çok işlemin sanal adres alanlarını fiziksel bir sayfayı paylaşacak şekilde eşlemesine olanak tanıyan bir iyileştirmedir. Bu, sistemin kesinlikle gerekli olana kadar bir işlem gerçekleştirmeyerek fiziksel belleği ve zamanı korumasını sağlayan gecikmeli değerlendirmeadlı bir tekniğin parçasıdır.
Örneğin, iki işlemin aynı DLL'den sayfaları kendi sanal bellek alanlarına yüklemiş olduğunu varsayalım. Bu sanal bellek sayfaları her iki işlem için de aynı fiziksel bellek sayfalarına eşlenir. Her iki işlem de bu sayfalara yazmadıkları sürece, aşağıdaki diyagramda gösterildiği gibi aynı fiziksel sayfalarla eşlenebilir ve bunları paylaşabilir.
eşlenmiş 1 ve 2 sayfalık işlem okları
İşlem 1 bu sayfalardan birine yazarsa, fiziksel sayfanın içeriği başka bir fiziksel sayfaya kopyalanır ve sanal bellek eşlemesi İşlem 1 için güncelleştirilir. Her iki işlem de artık fiziksel bellekte sayfanın kendi örneğine sahip. Bu nedenle, bir işlemin paylaşılan bir fiziksel sayfaya yazması ve diğer işlemin değişiklikleri görmesi mümkün değildir.
Uygulamaları ve DLL'leri Yükleme
Aynı Windows tabanlı uygulamanın birden çok örneği yüklendiğinde, her örnek kendi korumalı sanal adres alanında çalıştırılır. Ancak, örnek tanıtıcıları (hInstance) genellikle aynı değere sahiptir. Bu değer, uygulamanın sanal adres alanında temel adresini temsil eder. Her örnek varsayılan temel adresine yüklenebiliyorsa, kopyalama üzerine yazma korumasını kullanarak aynı fiziksel sayfalara eşlenebilir ve diğer örneklerle paylaşabilir. Sistem, biri bir sayfayı değiştirene kadar bu örneklerin aynı fiziksel sayfaları paylaşmasına izin verir. Bazı nedenlerden dolayı bu örneklerden biri istenen temel adrese yüklenemiyorsa, kendi fiziksel sayfalarını alır.
DLL'ler varsayılan bir temel adresle oluşturulur. DLL kullanan her işlem DLL'yi dll için varsayılan sanal adreste kendi adres alanı içinde yüklemeyi dener. Birden çok uygulama dll'yi varsayılan sanal adresine yükleyebilirse, DLL için aynı fiziksel sayfaları paylaşabilir. Bazı nedenlerden dolayı bir işlem DLL'yi varsayılan adreste yükleyemiyorsa, DLL'yi başka bir yere yükler. Üzerine yazma koruması, atlama yönergelerine yönelik düzeltmeler DLL'nin sayfalarına yazıldığı ve bu işlem için farklı olacağı için, dll'nin bazı sayfalarının bu işlem için farklı fiziksel sayfalara kopyalanmasını zorlar. Kod bölümünde veri bölümüne yönelik birçok başvuru varsa, bu durum kod bölümünün tamamının yeni fiziksel sayfalara kopyalanmasına neden olabilir.