Solusi 1:
Jelas, memtest86+ tidak dapat menguji wilayah memori yang saat ini berisi kode memtest86+ yang dapat dieksekusi (tetapi jika ada kesalahan memori di wilayah itu, kemungkinan besar pengujian itu sendiri akan macet). Namun, memtest86+ dapat memindahkan kodenya sendiri ke alamat yang berbeda saat runtime, dan dengan menggunakan trik ini ia dapat menguji semua memori yang diizinkan untuk digunakan oleh firmware (BIOS) — tidak sekaligus.
Relokasi kode ini dijelaskan dalam README.background di dalam arsip kode sumber memtest86+ (file sedikit kedaluwarsa — misalnya, menyatakan bahwa alamat yang digunakan untuk kode memtest86+ adalah 0x2000 dan 0x200000, tetapi alamat rendah seperti yang didefinisikan dalam sumber adalah sebenarnya 0x10000, dan alamat tingginya adalah 0x2000000 atau 0x300000 bergantung pada jumlah memori di mesin).
Tetapi bahkan dengan trik relokasi ini, memtest86+ tidak dapat menguji semua memori karena alasan berikut:
-
Biasanya firmware (BIOS) mencadangkan beberapa wilayah RAM untuk digunakan sendiri (misalnya, tabel ACPI). Meskipun wilayah RAM ini dapat diakses oleh CPU, menulis apa pun ke dalamnya dapat mengakibatkan perilaku yang tidak dapat diprediksi.
-
Beberapa bagian dari RAM digunakan untuk Mode Manajemen Sistem dan bahkan tidak dapat diakses dari CPU di luar kode SMM yang diistimewakan.
-
Kisaran alamat RAM antara 640K dan 1M tidak dapat diakses karena kebiasaan tata letak memori PC lama (beberapa RAM ini dapat digunakan sebagai bayangan untuk ROM BIOS dan untuk SMM, bagian lain mungkin sama sekali tidak dapat diakses).
Solusi 2:
Tidak, memtest tidak dapat menguji memorinya sendiri. Namun, ukurannya sangat kecil (hanya beberapa KB) sehingga tidak terlalu penting. EDIT: pernyataan ini salah karena, sebagaimana dinyatakan dalam jawaban yang dipilih, memtest dapat secara dinamis memindahkan dirinya untuk menguji all memori yang dapat dialamatkan pengguna.
--
Secara teori, prosesor modern dapat, pada saat boot, mengonfigurasi bagian dari cache mereka sebagai memori yang dapat diprogram, dari dalam program yang sangat kecil (sebagai memtest) dapat dijalankan tanpa menyentuh DRAM sama sekali.
Namun, ini adalah fitur khusus model (yang memerlukan dukungan BIOS) dan menurut saya memtest tidak menggunakannya.