Merupakan implementasi yang paling umum dari memori virtual.
Page ada tetapi belum ditaruh di memori (harus menunggu sampai dimasukkan).
Page tidak ada, baik di memori mau pun di disk (invalid reference --> abort).
Saat terjadi kasus kedua dan ketiga, maka proses dinyatakan mengalami page fault.
Bit 1 --> page berada di memori Bit 0 --> page tidak berada di memori. (Dengan inisialisasi: semua bit di-set 0). |
Apabila ternyata hasil dari translasi, bit page = 0, berarti page fault terjadi.
Cek tabel internal yang dilengkapi dengan PCB untuk menentukan valid atau tidaknya bit.
Apabila tidak valid, program akan di-terminate (interupsi oleh illegal address trap).
Menjadualkan operasi disk untuk membaca page yang diinginkan ke frame yang baru dialokasikan.
Ketika pembacaan komplit, tabel internal akan dimodifikasi dan page diidentifikasi ada di memori.
Masalah yang terjadi, antara lain mencakup:
Bagaimana mengulang instruksi yang memiliki beberapa lokasi yang berbeda?
Bagaimana jika instruksi yang dieksekusi panjang (contoh: block move)?
Masalah pertama dapat diatasi dengan dua cara yang berbeda.
komputasi microcode dan berusaha untuk mengakses kedua ujung dari blok, agar tidak ada modifikasi page yang sempat terjadi.
memanfaatkan register sementara (temporary register ) untuk menyimpan nilai yang sempat tertimpa/ termodifikasi oleh nilai lain.
Masalah kedua diatasi dengan menciptakan suatu special-status register baru yang berfungsi menyimpan nomor register dan banyak perubahan yang terjadi sepanjang eksekusi instruksi.
Sedangkan masalah ketiga diatasi dengan mengeset bit FPD (first phase done) sehingga restart instruction tidak akan dimulai dari awal program, melainkan dari tempat program terakhir dieksekusi.