Demand Paging Memori Virtual

5.4. Kinerja

Dalam proses demand paging, jika terjadi page fault maka diperlukan waktu yang lebih lambat untuk mengakses memori daripada jika tidak terjadi page fault. Hal ini dikarenakan perlu adanya penanganan page fault itu sendiri. Kinerja demand paging ini dapat dihitung dengan menggunakan effective access time yang dirumuskan sebagai berikut: effective access time = 1 - p x ma + p x page fault time ma adalah memory access time, yang pada umumnya berkisar antara 10 hingga 200 nanosecond. p adalah probabilitas terjadinya page fault, yang berkisar antara 0 hingga 1. Jika p sama dengan 0 yang berarti bahwa tidak pernah terjadi page fault, maka effective access time akan sama dengan memory access time, dan itulah yang diharapkan. Sedangkan jika p sama dengan 1, yang berarti bahwa semua halaman mengalami page fault, maka effective access time-nya akan semaikin meningkat. Untuk mendapatkan effective access time, kita harus mengetahui waktu yang diperlukan untuk menangani page fault. Komponen-komponen dalam penanganan page fault terdiri dari tiga kelompok besar, yaitu melayani interupsi dari page fault, membaca halaman, dan mengulang kembali proses. Penggunaan effective access time dapat ditunjukkan dalam contoh berikut. Contoh 5.1. Contoh penggunaan effective address Diketahui waktu pengaksesan memori ma sebesar 100 ns. Waktu page fault sebesar 20 ms. Maka effective access time = 1 - p x ma + p x page fault time = 1 - p x 100 + p x 20000000 = 100 - 100p + 20000000p = 100 + 19.999.900p nanosecond Pada demand paging, diusahakan agar kemungkinan terjadinya page fault rendah, karena bila effective access time-nya meningkat, maka proses akan berjalan lebih lambat. 33

5.5. Copy-on-Write

Pada pembahasan sebelumnya dijelaskan bahwa memori virtual memungkinkan proses untuk saling berbagi pakai memori. Proses ini adalah proses untuk berbagi pakai halaman page sharing memori virtual. Karena setiap proses membutuhkan halaman tersendiri, maka dibutuhkan teknik untuk mengaturnya. Teknik yang digunakan untuk mengoptimasi pembuatan dan penggunaan halaman adalah teknik copy-on-write, atau yang biasa disingkat dengan COW. Pembuatan proses baru dengan menggunakan sistem call fork menciptakan proses anak sebagai duplikat dari proses induknya. Setelah berhasil menciptakan proses anak, kemudian proses anak tersebut langsung memanggil sistem call exec, yang berarti bahwa proses anak juga menduplikasi ruang alamat yang dimiliki proses induknya, beserta halaman yang diaksesnya. Padahal, hasil kopian dari halaman tersebut belum tentu berguna, yaitu jika tidak ada proses modifikasi pada halaman tersebut. Akan tetapi, dengan menggunakan teknik copy-on-write maka proses anak dan induk dapat bersama-sama menggunakan mengakses halaman yang sama. Suatu halaman yang diakses secara bersama-sama shared oleh beberapa proses ditandai dengan COW copy-on-write jika suatu proses ingin memodifikasi menulis suatu halaman. Dan apabila hal tersebut terjadi, maka akan dibuat salinan dari halaman yang di-shared tersebut. Sebagai contoh, sebuah proses anak akan memodifikasi suatu halaman yang terdiri dari sebagian dari stack. Sistem operasi akan mengenali halaman ini sebagai halaman copy-on-write. Sistem operasi kemudian akan membuat salinan dari halaman ini dan memetakannya kepada ruang alamat yang dimiliki proses anak. Proses anak kemudian memodifikasi halaman salinan yang telah berada di ruang alamat proses anak tersebut. Pada saat teknik copy-on-write ini digunakan, hanya halaman yang bisa dimodifikasi oleh proses anak atau proses induk saja yang disalin, sedangkan halaman yang tidak dimodifikasi dapat dibagi di-share untuk proses induk dan proses anak. Sebagai catatan, bahwa hanya halaman yang dapat dimodifikasi saja yang ditandai sebagai copy-on-write, sedangkan halaman yang tidak dapat dimodifikasi misalnya halaman yang terdiri dari kode-kode yang bisa dieksekusi tidak perlu ditandai karena tidak akan terjadi modifikasi pada halaman tersebut. Pada banyak sistem operasi, disediakan sebuah pool yang terdiri dari halaman-halaman yang kosong untuk meletakkan halaman hasil duplikasi dengan teknik copy-on-write. Selain untuk meletakkan halaman hasil duplikasi tersebut, pool ini juga digunakan pada saat sebuah proses mengalami penambahan stack atau heap. Teknik yang digunakan sistem operasi untuk menyediakan halaman kosong tersebut dikenal dengan zero-fill-on-demand. Teknik ini dilakukan dengan mengosongkan halaman-halaman sebelum digunakan oleh proses yang baru. Copy-on-write dapat diilustrasikan pada gambar 4 dan 5. Gambar 5.4. Sebelum modifikasi pada page C 34