Bagikan melalui


Perlindungan Memori

Memori yang termasuk dalam 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 Copy-on-Write

Perlindungan copy-on-write adalah pengoptimalan yang memungkinkan beberapa proses untuk memetakan ruang alamat virtual mereka sehingga mereka berbagi halaman fisik sampai 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, 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 dalam diagram berikut.

kotak dan panah proses 1 dan 2 halaman dipetakan ke memori fisik yang sama

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.

kotak dan panah proses dan pemindahan ulang memori fisik

Memuat Aplikasi dan DLL

Ketika beberapa instans aplikasi berbasis Windows yang sama dimuat, setiap instans dijalankan di ruang alamat virtual yang dilindungi sendiri. Namun, handel instans mereka (hInstance) biasanya memiliki nilai yang sama. Nilai ini mewakili alamat dasar aplikasi di ruang alamat virtualnya. Jika setiap instans dapat dimuat ke dalam alamat dasar defaultnya, instans dapat memetakan dan berbagi halaman fisik yang sama dengan instans lain, menggunakan perlindungan salin-saat-tulis. Sistem 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.