Perlindungan Memori
Memori milik proses dilindungi secara implisit oleh ruang alamat virtual privatnya. Selain itu, Windows memberikan perlindungan memori dengan menggunakan perangkat keras memori virtual. Implementasi perlindungan ini bervariasi menurut prosesor, misalnya, halaman kode di ruang alamat proses dapat ditandai baca-saja dan dilindungi dari modifikasi oleh utas mode pengguna.
Untuk daftar lengkap atribut, lihat Konstanta Perlindungan Memori.
Perlindungan Salin-saat-Tulis
Perlindungan copy-on-write adalah pengoptimalan yang memungkinkan beberapa proses untuk memetakan ruang alamat virtual mereka sehingga mereka berbagi halaman fisik hingga salah satu proses memodifikasi halaman. Ini adalah bagian dari teknik yang disebut evaluasi malas, yang memungkinkan sistem untuk menghemat memori fisik dan waktu dengan tidak melakukan operasi sampai benar-benar diperlukan.
Misalnya, misalkan dua proses memuat halaman dari DLL yang sama ke ruang memori virtual mereka. Halaman memori virtual ini dipetakan ke halaman memori fisik yang sama untuk kedua proses. Selama tidak ada proses yang menulis ke halaman ini, mereka dapat memetakan dan berbagi, halaman fisik yang sama, seperti yang ditunjukkan pada diagram berikut.
Jika Proses 1 menulis ke salah satu halaman ini, konten halaman fisik disalin ke halaman fisik lain dan peta memori virtual diperbarui untuk Proses 1. Kedua proses sekarang memiliki instans halaman mereka sendiri dalam memori fisik. Oleh karena itu, tidak mungkin bagi satu proses untuk menulis ke halaman fisik bersama dan untuk proses lain untuk melihat perubahan.
Memuat Aplikasi dan DLL
Ketika beberapa instans aplikasi berbasis Windows yang sama dimuat, setiap instans dijalankan di ruang alamat virtual yang dilindungi sendiri. Namun, handle instans mereka (hInstance) biasanya memiliki nilai yang sama. Nilai ini mewakili alamat dasar aplikasi di ruang alamat virtualnya. Jika setiap instans dapat dimuat ke alamat dasar defaultnya, instans dapat memetakan dan berbagi halaman fisik yang sama dengan instans lain, menggunakan perlindungan salin saat menulis. Sistem ini memungkinkan instans ini berbagi halaman fisik yang sama sampai salah satunya memodifikasi halaman. Jika karena alasan tertentu salah satu instans ini tidak dapat dimuat di alamat dasar yang diinginkan, instans menerima halaman fisiknya sendiri.
DLL dibuat dengan alamat dasar default. Setiap proses yang menggunakan DLL akan mencoba memuat DLL dalam ruang alamatnya sendiri di alamat virtual default untuk DLL. Jika beberapa aplikasi dapat memuat DLL di alamat virtual defaultnya, mereka dapat berbagi halaman fisik yang sama untuk DLL. Jika karena alasan tertentu proses tidak dapat memuat DLL di alamat default, proses memuat DLL di tempat lain. Perlindungan copy-on-write memaksa beberapa halaman DLL untuk disalin ke halaman fisik yang berbeda untuk proses ini, karena perbaikan untuk instruksi lompat ditulis dalam halaman DLL, dan halaman tersebut akan berbeda untuk proses ini. Jika bagian kode berisi banyak referensi ke bagian data, ini dapat menyebabkan seluruh bagian kode disalin ke halaman fisik baru.