April 20, 2013


IV. Penanganan Page Fault

Prosedur untuk menangani page fault adalah sebagai berikut: 
  1. CPU mengambil instruksi dari memori untuk dijalankan. Pengambilan instruksi dilakukan dari halaman pada memori dengan mengakses tabel halaman. Ternyata pada tabel halaman bit ter-set tidak valid atau invalid.
  1. Interupsi page fault terjadi sehingga interupsi tersebut menyebabkan perangkat keras melakukan trap yaitu menjebak proses tersebut ke dalam sistem operasi.
  1. 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.
  1. Halaman yang diinginkan akan dibawa dari disk ke memori utama.
  1. Tabel halaman akan diatur ulang lagi sesuai dengan kondisi yang baru. Jika tidak terdapat ruang kosong (free frame) di memori utama untuk menaruh halaman yang baru maka dilakukan penggantian halaman dengan memilih salah satu halaman pada memori utama untuk digantikan dengan halaman yang baru tersebut. Penggantian halaman dilakukan dengan menggunakan algoritma tertentu. Jika halaman yang digantikan tersebut sudah dimodifikasi oleh proses maka halaman tersebut harus ditulis kembali ke disk.
  1. Setelah halaman yang diinginkan sudah dibawa ke memori utama maka proses dapat diulang kembali. Dengan demikian proses sudah bisa mengakses halaman karena halaman telah diletakan ke memori utama.
Perlu diingat bahwa status (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 diinginkan sekarang telah berada di memori dan dapat diakses.

V. 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.
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.

Contoh penggunaan effective address 

Diketahui :
-          Waktu pengaksesan memori (ma) sebesar 100 ns.
-          Waktu page fault sebesar 20 ms.
Jawab :
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. 

VI. Page Replacement.

Jika terdapat sebuah proses yang memiliki sepuluh halaman dan hanya menggunakan setengah di antaranya, yaitu lima halaman maka demand paging menyimpan kelima proses yang tidak dibutuhkan tersebut agar tidak diakses oleh M/K. Dengan begitu kita dapat meningkatkan degree of multiprogramming, yaitu dengan menjalankan proses dua kali lebih banyak. Jika kita memiliki empat puluh bingkai kita dapat menjalankan delapan proses. Bandingkan dengan jika kesepuluh halaman tersebut dipanggil maka hanya dapat dijalankan maksimum empat proses.
Jika kita meningkatkan degree of multiprogramming, yaitu dengan menjalankan proses lebih banyak maka dapat terjadi over-allocating memory. Over-allocating memory juga dapat terjadi jika terdapat page fault, yaitu pada saat sistem operasi mendapatkan halaman yang dicari pada disk kemudian membawanya ke memori fisik tetapi tidak terdapat bingkai yang kosong pada memori fisik tersebut.
Sistem Operasi memiliki dua cara untuk menangani masalah ini, yaitu:
  1. Menterminasi proses yang sedang mengakses halaman tersebut tetapi cara ini tidak dapat dilakukan karena demand paging merupakan usaha sistem operasi untuk meningkatkan utilisasi komputer dan throughputnya.
  2. Penggantian halaman (page replacement). Sistem operasi dapat memindahkan suatu proses dari memori fisik lalu menghapus semua bingkai yang semula digunakannya dan mengurangi.
Suatu bingkai dapat dikosongkan dengan memindahkan isinya ke dalam ruang pemindahan kemudian mengubah semua tabel halaman hingga mengindikasikan bahwa halaman yang dipindah tersebut sudah tidak berada di memori fisik. Lalu bingkai yang telah kosong tersebut dapat digunakan oleh halaman yang akan ditempatkan di memori fisik.
Dengan memodifikasi urutan penanganan page fault maka dapat dijabarkan urutan proses page replacement sebagai berikut.
  1. Mencari lokasi dari halaman yang dicari di disk.
  2. Mencari bingkai yang kosong di memori fisik.
  3. Masukkan halaman yang berasal dari disk tersebut ke dalam bingkai yang baru dikosongkan tersebut.
  4. Lanjutkan proses yang telah diinterupsi.
Dari penjelasan di atas maka dapat disimpulkan bahwa jika tidak terdapat bingkai yang kosong maka terdapat dua transfer halaman. Hal ini tentu saja menambah waktu dalam penanganan page fault dan sceara otomatis menambah effective access time.
Hal tersebut dapat diselesaikan dengan menggunakan bit modifikasi (modify bit/dirty bit ). Setiap halaman atau bingkai memiliki bit modifikasi yang sesuai pada perangkat keras. Bit modifikasi untuk sebuah halaman diatur oleh perangkat keras pada saat suatu byte atau word dituliskan ke halaman tersebut yang menunjukan bahwa halaman tersebut telah dimodifikasi. Waktu suatu halaman dipilih untuk dipindahkan dari memori fisik ke disk diperiksa terlebih dahulu bit modifikasinya di disk. Jika bit modifikasinya ada maka halaman tersebut harus ditulis ke disk. Namun, apabila bit modifikasinya belum ada di disk maka halaman tersebut belum dimodifikasi karena halaman tersebut masih berada di memori utama. Oleh karena itu, jika salinan dari halaman tersebut masih terdapat di disk (belum ditimpa oleh halaman lain) maka penulisan halaman dari memori utama ke disk tidak diperlukan. Hal ini juga berlaku pada halaman read-only, yaitu halaman yang tidak dapat dimodifikasi. Sehingga waktu yang diperlukan untuk penanganan page fault dapat berkurang dengan cukup signifikan karena berkurangnya waktu M/K dari dan ke disk.

Tidak ada komentar:

Posting Komentar