Bagi kita yang sering berkutat dengan dunia progamming, tentunya kita sudah tidak asing lagi dengan yang namanya “Page Fault”. Nah, bagi yang belum tahu sama sekali dengan yang namanya page fault, tepat sekali berkunjung ke sini, karena kini kita akan membahas tentang penegrtian dan segala hal yang berhubungan dengan si page fault ini. Yuk langsung saja baca penjelasan lengkapnya di artikel yang sudah tersedia di bawah ini!
Pengertian Page Fault
Page fault merupakan pesan dari sebuah program yang sedang digunakan yang terjadi ketika program tersebut mencoba mengakses suatu blok memori yang tidak disimpan di memori fisik atau RAM.
Walaupun istilah page fault atau yang dalam bahasa Indonesia ini berarti kesalahan halaman, yang terdengar seperti suatu pesan yang isinya peringatan error, page fault adalah hal yang biasa, umum dan merupakan bagian dari mekanisme normal sistem komputer ketika berinteraksi dengan memori virtual. Baca Juga: Pengertian Software Defined Networking
Di dalam dunia programming, page fault atau kesalahan halaman ini akan menciptakan suatu pengecualian (exception) yang melaporkan pada sistem operasi bahwa sistem operasi harus mengambil blok memori tertentu dari memori virtual agar program yang sedang berjalan dapat tetap dilanjutkan.
Begitu data dimasukkan ke dalam memori fisik, program akan berlanjut secara normal. Keseluruhan proses ini akan berlangsung di background komputer kita tanpa kita sadari.
Beberapa program di komputer sebenarnya dapat mengatasi invalid page fault ini secara otomatis dengan mencari alamat memori baru dan memindahkan data yang ada ke sana.
Walau page fault ini adalah hal yang biasa ditemui ketika berurusan dengan memori virtual, setiap page fault memerlukan transfer data dari memori sekunder ke memori primer. Proses ini mungkin hanya butuh beberapa detik saja, waktu tersebut masih beribu-ribu kali lebih lambat daripada akses data secara langsung dari memori fisik.
Sehingga, menambahkan memori sistem (RAM) dapat meningkatkan performa sistem komputer yang kita miliki, sebab sistem komputer tidak perlu mengakses memori virtual terlalu sering.
Penanganan Page Fault
Berikut ini merupakan urutan langkah-langkah penanganan saat terjadi page fault:
- Hardware dari perangkat akan melakukan trap ke kernel, program counter akan di-save ke stack. Pada banyak mesin, beberapa informasi tentang status instruksi saat itu di-save di register-register khusus CPU. CPU akan mengambil (load) instruksi dari memori untuk dijalankan.Pengambilan instruksi dilakukan dari halaman pada memori dengan mengakses tabel halaman.
Interupsi page fault terjadi sehingga interupsi tersebut menyebabkan perangkat keras melakukan trap yaitu menjebak proses tersebut ke dalam sistem operasi.
Jika referensi alamat yang diberikan ke sistem operasi ilegal atau dengan kata lain halaman yang ingin diakses tidak ada (tidak berada di disk), maka proses akan dihentikan. Namun jika referensi alamatnya adalah legal maka halaman yang diinginkan akan diambil dari disk.
- Kode assembly dimulai untuk men-save register-register umum dan informasi lain yang bisa berubah, agar sistem operasi tidak merusaknya. Rutin ini memanggil sistem operasi sebagai suatu prosedur.
- Sistem operasi menemukan bahwa terjadi page fault, dan mencoba menemukan page virtual mana yang diperlukan. Seringkali salah satu register hardware berisi informasi ini. Jika tidak, sistem operasi harus menarik program counter, mengambil instruksi, dan melakukan parsing pada software untuk mengetahui apa yang dilakukan sebelum terjadi fault.
- Begitu alamat virtual yang menyebabkan fault diketahui, sistem operasi memeriksa apakah alamat ini valid dan proteksinya konsisten dengan akses. Jika tidak, proses dikirimi sinyal atau ditutup. Jika alamat valid dan tidak ada pelanggaran proteksi, sistem berusaha untuk mendapatkan frame page dari daftar frame bebas. Jika tidak ada frame yang bebas, dijalankan algoritma penggantian page untuk mencari yang bisa ditukar.
- Jika frame page yang dipilih telah dimodifikasi, page dijadwalkan untuk ditransfer ke disk, dan terjadi pertukaran proses, menghentikan sementara proses yang fault dan membiarkan yang lainnya berjalan hingga transfer disk selesai. Frame ditandai terpakai untuk mencegah dipakai untuk tujuan lain.
- Begitu frame page bersih (apakah langsung atau setelah disave ke disk), sistem operasi menelusuri alamat disk di mana page diperlukan, dan menjadwalkan operasi disk untuk memasukkannya. Sementara page dimasukkan, proses yang mengalami fault dihentikan sejenak dan yang lainnya dijalankan, jika ada.
- Ketika disk interrupt menandai bahwa page telah ada, tabel page di-update untuk menunjukkan posisinya, dan frame ditandai berada dalam status normal.
- Instruksi yang menyebabkan fault di-back-up ke status mulainya dan program counter di-reset untuk menunjuk ke instruksi tersebut.
- Proses yang fault tersebut dijadwalkan, dan sistem operasi kembali ke rutin bahasa assembly yang memanggilnya.
- Rutin ini mengembalikan register dan informasi lainnya ke keadaan semula , dan kembali ke user untuk melanjutkan eksekusi, seakan-akan tidak ada fault yang terjadi.
Perlu diingat bahwa status yang ada–misalnya register, condition code, counter insruksi–dari proses yang diinterupsi ketika terjadi page fault akan disimpan sehingga proses dapat diulang kembali di tempat dan status yang sama, kecuali jika halaman yang kita inginkan sekarang telah berada di memori dan bisa kita akses.
Pada berbagai kasus page fault yang terjadi, umumnya ada tiga komponen yang akan dihadapi pada saat melayani page fault:
- Melayani interupsi page fault, seperti yang sudah dijelaskan di tahap penanganan page fault, yaitu pengambilan instruksi dilakukan dari halaman pada memori dengan mengakses tabel halaman.
- Membaca halaman, seperti yang sudah dijelaskan juga pada tahap penanganan page fault di atas pada tahap ke empat.
- Mengulang kembali semua proses dari awal hingga akhir.
Kesimpulan
Setelah kita membaca artikel di atas, kita tentunya sudah mengetahui apa yang dimaksud dengan page fault, alasan mengapa page fault dapat terjadi dan hal lain yang bersangkutan dengan page fault. Semoga apa yang sudah kita baca pada artikel yang ada di atas dapat menambah wawasan kita dan bermanfaat dalam kehidupan sehari-hari kita, ya, sobat!