Apakah mungkin untuk mengisyaratkan Windows virtual-memory-manager untuk membawa proses tertentu dari swap?
Situasi yang sering saya alami biasanya menggunakan sekitar 50% dari RAM saya untuk semua program normal, satu khususnya menjadi IDE untuk target tertanam, bersama dengan debugger yang terkait.
Lalu saya membiarkan proses yang haus akan memori berjalan - misalnya wireshark atau sesuatu yang mengumpulkan data selama akhir pekan, semuanya terhapus - sebagaimana mestinya. Setelah proses besar selesai, sebagian besar proses dibiarkan dalam swap.
Kemudian sporadis berhenti untuk menukar proses kembali menyebabkan masalah dengan debugger, mungkin karena masalah waktu dalam komunikasi antara IDE dan hardware-debugger. Jadi kontrol perangkat target bisa sporadis sampai upaya yang cukup telah membawa data debug di IDE keluar dari swap.
Jawaban:
KerrekSB mengembangkan alat khusus untuk tujuan ini:
/programming//a/2940209/684229
Ini tersedia di GiTHUB dengan binari: https://github.com/louisdx/unpage
Selama menjalankan, Anda mendapatkan banyak kesalahan "Gagal membaca satu byte dari 0x .... 000, error 299 (0 byte baca)", tetapi itu bukan masalah, alat ini bekerja dengan baik.
sumber
After the big process is finished, most processes are left in swap.
. Jadi agaknya dia sudah mengakhiri "proses ingatan yang lapar".if (meminfo.Protect > 50) { std::cerr << meminfo.Protect << " - " << PAGE_GUARD << std::endl; }
tepat sebelum-ReadProcessMemory
line. PAGE_GUARD 256 dan saya mendapat 260 dengan halaman gagal. Jadi dimungkinkan untuk menyingkirkan kesalahan. Seseorang dengan pengetahuan c ++ dan Paging perlu membaca di bit PAGE_GUARD.Anda dapat menggunakan Process Lasso untuk memberikan proses prioritas halaman Memori :
Process Lasso memiliki dua versi: gratis dan komersial ($ 18,95 dengan uji coba).
sumber