Set Aktif

Set proses yang berfungsi adalah sekumpulan halaman di ruang alamat virtual proses yang saat ini tinggal dalam memori fisik. Set kerja hanya berisi alokasi memori yang dapat di-halaman; alokasi memori yang tidak dapat dimanfaatkan seperti Address Windowing Extensions (AWE) atau alokasi halaman besar tidak disertakan dalam set kerja.

Ketika proses mereferensikan memori yang dapat di-pageable yang saat ini tidak berada dalam set kerjanya, kesalahan halaman terjadi. Penangan kesalahan halaman sistem mencoba mengatasi kesalahan halaman dan, jika berhasil, halaman ditambahkan ke set kerja. (Mengakses AWE atau alokasi halaman besar tidak pernah menyebabkan kesalahan halaman, karena alokasi ini tidak dapat dipertanyakan.)

Kesalahan halaman keras harus diselesaikan dengan membaca konten halaman dari penyimpanan cadangan halaman, yang merupakan file halaman sistem atau file yang dipetakan memori yang dibuat oleh proses. Kesalahan halaman lunak dapat diselesaikan tanpa mengakses penyimpanan cadangan. Kesalahan halaman lunak terjadi ketika:

  • Halaman ini berada dalam set kerja dari beberapa proses lain, sehingga sudah berada dalam memori.
  • Halaman sedang dalam transisi, karena telah dihapus dari set kerja dari semua proses yang menggunakan halaman dan belum digunakan kembali, atau sudah residen sebagai akibat dari operasi prefetch manajer memori.
  • Proses mereferensikan halaman virtual yang dialokasikan untuk pertama kalinya (terkadang disebut kesalahan demand-zero).

Halaman dapat dihapus dari set kerja proses sebagai hasil dari tindakan berikut:

  • Proses ini mengurangi atau mengosongkan set kerja dengan memanggil fungsi SetProcessWorkingSetSize, SetProcessWorkingSetSizeEx atau EmptyWorkingSet .
  • Proses ini memanggil fungsi VirtualUnlock pada rentang memori yang tidak dikunci.
  • Proses ini membatalkan peta tampilan file yang dipetakan menggunakan fungsi UnmapViewOfFile .
  • Manajer memori memangkas halaman dari set kerja untuk membuat lebih banyak memori yang tersedia.
  • Manajer memori harus menghapus halaman dari set kerja untuk memberi ruang bagi halaman baru (misalnya, karena set kerja berada pada ukuran maksimumnya).

Jika beberapa proses berbagi halaman, menghapus halaman dari set kerja dari satu proses tidak memengaruhi proses lain. Setelah halaman dihapus dari kumpulan kerja semua proses yang menggunakannya, halaman menjadi halaman transisi. Halaman transisi tetap di-cache dalam RAM hingga halaman direferensikan lagi oleh beberapa proses atau digunakan kembali (misalnya, diisi dengan nol dan diberikan ke proses lain). Jika halaman transisi telah dimodifikasi sejak terakhir kali ditulis ke disk (yaitu, jika halaman "kotor"), maka halaman harus ditulis ke penyimpanan cadangannya sebelum dapat digunakan kembali. Sistem mungkin mulai menulis halaman transisi kotor ke penyimpanan dukungan mereka segera setelah halaman tersebut tersedia.

Setiap proses memiliki ukuran set kerja minimum dan maksimum yang memengaruhi perilaku halaman memori virtual proses. Untuk mendapatkan ukuran set kerja proses yang ditentukan saat ini, gunakan fungsi GetProcessMemoryInfo . Untuk mendapatkan atau mengubah ukuran set kerja minimum dan maksimum, gunakan fungsi GetProcessWorkingSetSizeEx dan SetProcessWorkingSetSizeEx .

Antarmuka pemrograman aplikasi status proses (PSAPI) menyediakan sejumlah fungsi yang mengembalikan informasi terperinci tentang serangkaian proses yang berfungsi. Untuk detailnya, lihat Informasi Set Kerja.