Apa yang terjadi ketika Anda mlock (2) memori yang sudah ditukar?

1

Pertanyaan sederhana, tetapi saya tidak dapat menemukan jawaban.

Jika ada halaman di memori yang telah ditukar ke disk oleh kernel, dan kemudian proses pemiliknya memanggil mlock (2) atau VirtualLock pada halaman itu di memori, apa yang terjadi?

Apakah itu segera ditukar kembali ke memori fisik? Apakah dihapus dari disk? Jika seseorang menunda penulisan informasi sensitif ke dalam halaman sampai setelah mlock (2) dipanggil, apakah itu menjamin bahwa itu tidak ditulis ke disk?

Sebagai pertanyaan tindak lanjut kecil, apa yang akan Anda lakukan untuk mengurangi kemungkinan seperti itu?

Awn
sumber

Jawaban:

1

Pada versi hulu kernel Linux saat ini, itu akan memaksa halaman-halamannya kembali bermasalah, tetapi tampaknya meninggalkan salinan dalam swap.

Saya percaya sebagian besar sistem BSD dan sistem UNIX lainnya berperilaku sama, tidak yakin tentang Windows.

Menunda menulis apa pun hingga setelah mlock () dipanggil akan mencegah data ditukar, tetapi tidak dapat menjamin data tidak akan ditulis ke disk kecuali ACPI S4 dan OS hibernasi yang dimediasi OS tidak dimungkinkan dan Anda tidak berada dalam VM (jika Anda menggunakan VM, Anda mungkin berada di bawah hypervisor tipe 1, dan karenanya tunduk pada batasan memori virtual sistem host, yang tidak dapat Anda kendalikan).

Akibatnya, mitigasi yang tepat melibatkan:

  • Menangani pada tingkat aplikasi untuk mencegah data sensitif berada dalam RAM lebih lama dari yang dibutuhkan, bahkan jika wilayah tersebut terkunci.
  • Penanganan pada level sistem untuk menonaktifkan ACPI S4 (biasanya hanya diperlukan pada sistem OEM), mencegah hibernasi yang dimediasi OS, dan memastikan kepercayaan pada sistem host jika dijalankan dalam VM.
Austin Hemmelgarn
sumber
Apakah Anda memiliki petunjuk tentang tempat saya bisa mengetahui tentang kebijakan Window?
Awn
1
Bukan dari atas kepalaku. Saya memeriksa di Linux menggunakan program tes bare tulang dan beberapa skrip kreatif dengan kelompok kontrol untuk memaksa data dalam program untuk ditukar. Pernyataan tentang * BSD sebagian besar didasarkan pada kenyataan bahwa Linux cenderung berperilaku sangat mirip dengan sistem BSD ketika berhadapan dengan hal-hal seperti ini, jadi Anda mungkin ingin mengeceknya juga.
Austin Hemmelgarn