Rangkuman Algoritma Ganti Halaman

Bab 7. Strategi Alokasi Bingkai

7.1. Pendahuluan

Setiap proses perlu mendapat alokasi memori agar proses tersebut dapat dieksekusi dengan baik. Masalah selanjutnya adalah bagaimana caranya untuk mengalokasikan memori bagi setiap proses yang ada. Saat proses akan dieksekusi, terjadi page fault sehingga sistem akan menggantinya dengan halaman di memori. Untuk melakukan penggantian ini diperlukan bingkai yang terdapat di sistem. Proses dapat menggunakan setiap bingkai yang sedang bebas di sistem. Hal ini mengakibatkan perlu adanya pengaturan lebih lanjut agar tiap proses bisa mendapatkan bingkai yang cukup untuk melakukan penggantian ini.

7.2. Jumlah Bingkai

Hal yang perlu diperhatikan dalam strategi alokasi bingkai adalah berapa jumlah bingkai yang harus dialokasikan pada proses tersebut. Jumlah bingkai yang dialokasikan tidak boleh melebihi jumlah bingkai yang tersedia. Hal lain yang perlu diperhatikan adalah jumlah bingkai minimum yang harus dialokasikan agar instruksi dapat dijalankan, karena jika terjadi kesalahan halaman sebelum eksekusi selesai, maka instruksi tersebut harus diulang. Sehingga jumlah bingkai yang cukup harus tersedia untuk menampung semua halaman yang dibutuhkan oleh sebuah instruksi.

7.3. Strategi Alokasi Bingkai

Ada dua jenis algoritma yang biasa digunakan untuk pengalokasian bingkai, yaitu: 1. Algoritma Fixed Allocation . Algoritma fixed allocation dibedakan menjadi dua macam yaitu equal allocation dan proportional allocation. Pada algoritma equal allocation jumlah bingkai yang diberikan pada setiap proses jumlahnya sama mn bingkai, m = jumlah bingkai, n = jumlah proses, misalnya: ada 5 buah proses dan 100 bingkai tersisa, maka tiap proses akan mendapatkan 20 bingkai. Algoritma ini kurang baik digunakan jika proses-proses yang ada besarnya berbeda-beda proses yang besar diberikan bingkai yang sama dengan proses yang kecil, misalnya: ada 2 buah proses sebesar 10 K dan 127 K, ada 64 bingkai bebas. Jika kita memberikan bingkai yang sama yaitu sebesar 32 untuk tiap proses maka misalnya saja proses satu ternyata hanya memerlukan 10 bingkai, dan alhasil 22 bingkai pada proses pertama akan terbuang percuma. Untuk mengatasi masalah tersebut algoritma proportional allocation-lah yang cocok digunakan, yaitu pengalokasian bingkai disesuaikan dengan besarnya suatu proses, contoh: Si = besarnya proses Pi S = Si m = jumlah total bingkai ai = alokasi bingkai untuk Pi SiS x m m = 64 S1 = 10 S2 = 127 a1 = 10137 x 64 = 5 bingkai a2 = 127137 x 64 = 59 bingkai

2. Algoritma Priority Allocation . Algoritma priority allocation merupakan algoritma

pengalokasian dengan memberikan jumlah bingkai sesuai dengan prioritas proses tersebut. Pendekatannya mirip dengan proportional allocation, perbandingan frame-nya tidak tergantung ukuran relatif dari proses, melainkan lebih pada prioritas proses atau kombinasi ukuran dan 47 prioritas. Jika suatu proses mengalami page fault maka proses tersebut akan menggantinya dengan salah satu frame yang dimiliki proses tersebut atau menggantinya dengan frame dari proses yang prioritasnya lebih rendah. Dengan kedua algoritma di atas, tetap saja alokasi untuk tiap proses bisa bervariasi berdasarkan derajat multiprogrammingnya. Jika multiprogrammingnya meningkat maka setiap proses akan kehilangan beberapa frame yang akan digunakan untuk menyediakan memori untuk proses lain. Sedangkan jika derajat multiprogramming-nya menurun, frame yang sudah dialokasikan bisa disebar ke proses-proses lainnya.

7.4. Alokasi Global dan Lokal

Dalam pengalokasian bingkai, salah satu hal yang penting adalah penggantian halaman. Kita dapat mengklasifikasikan algoritma penggantian halaman ke dalam dua kategori:

1. Penggantian Global. Penggantian secara global memperbolehkan suatu proses mencari bingkai

pengganti dari semua bingkai yang ada, meskipun bingkai tersebut sedang dialokasikan untuk proses lain. Hal ini memang efisien, tetapi ada kemungkinan proses lain tidak mendapatkan bingkai karena bingkainya terambil oleh proses lain.

2. Penggantian Lokal. Penggantian lokal hanya mengijinkan proses untuk mencari bingkai

pengganti dari bingkai-bingkai yang memang dialokasikan untuk proses tersebut. Pada algoritma penggantian lokal, jumlah bingkai yang dialokasikan pada suatu proses tidak akan berubah. Sedangkan pada algoritma penggantian global jumlah bingkai pada proses tersebut mungkin akan bertambah dengan asumsi proses lain tidak mengambil bingkai proses ini sebagai pengganti dari bingkai proses tersebut. Masalah pada algoritma penggantian global adalah proses tidak dapat mengontrol page fault rate proses itu sendiri. Keunggulan algoritma ini adalah menghasilkan system throughput yang lebih bagus, oleh karena itu algoritma ini lebih sering dipakai.

7.5. Thrashing

Pada saat suatu proses tidak memiliki cukup bingkai untuk mendukung halaman yang akan digunakan maka akan sering terjadi page fault sehingga harus dilakukan penggantian halaman. Thrashing adalah keadaan dimana proses sibuk untuk mengganti halaman yang dibutuhkan secara terus menerus, seperti ilustrasi di bawah ini. Gambar 7.1. Thrashing Pada gambar terlihat CPU utilization meningkat seiring meningkatnya derajat multiprogramming, 48 sampai pada suatu titik CPU utilization menurun drastis, di titik ini thrashing dapat dihentikan dengan menurunkan derajat multiprograming. Pada saat CPU utilization terlalu rendah, maka sistem operasi akan meningkatkan derajat multiprogramming dengan cara menghasilkan proses-proses baru, dalam keadaan ini algoritma penggantian global akan digunakan. Ketika proses membutuhkan bingkai yang lebih, maka akan terjadi page fault yang menyebabkan CPU utilization semakin menurun. Ketika sistem operasi mendeteksi hal ini, derajat multiprogramming makin ditingkatkan, yang menyebabkan CPU utilization kembali menurun drastis, hal ini yang menyebabkan thrashing. Untuk membatasi efek thrashing dapat menggunakan algoritma penggantian lokal. Dengan algoritma penggantian lokal, jika terjadi thrashing, proses tersebut dapat menggambil bingkai dari proses lain dan menyebabkan proses tersebut tidak mengalami thrashing. Salah satu cara untuk menghindari thrashing adalah dengan cara menyediakan jumlah bingkai yang pas sesuai dengan kebutuhan proses tersebut. Salah satu cara untuk mengetahui jumlah bingkai yang diperlukan pada suatu proses adalah dengan strategi working set.

7.6. Working Set Model

Salah satu cara menghindari thrashing adalah dengan menyediakan sebanyak mungkin bingkai sesuai dengan kebutuhan proses. Untuk mengetahui berapa bingkai yang dibutuhkan adalah dengan strategi working set. Strategi ini dimulai dengan melihat berapa banyak bingkai yang digunakan oleh suatu proses. Working set model mengatakan bahwa sistem hanya akan berjalan secara efisien jika proses diberikan bingkai yang cukup, jika bingkai tidak cukup untuk menampung semua proses maka suatu proses akan ditunda, dan memberikan halamannya untuk proses yang lain. Working set model merupakan model lokalitas dari eksekusi proses. Model ini menggunakan parameter delta untuk definisi working set window. Kumpulan dari halaman dengan halaman yang dituju yang paling sering muncul disebut working set. Gambar 7.2. Working Set Model Pada contoh gambar, terlihat bahwa dengan = 10 memory references, maka working set pada t1 adalah {1,2,5,6,7} dan working set pada t2 adalah {3,4}. Keakuratan Working set tergantung pada pemilihan : 1. jika terlalu kecil tidak akan mewakilkan seluruh lokalitas. 2. jika terlalu besar menyebabkan overlap. 3. jika tidak terbatas working set adalah kumpulan halaman sepanjang eksekusi program. Jika total permintaan total bingkai, maka akan terjadi thrashing. Jika ini terjadi maka proses yang sedang berjalan akan diblok.

7.7. Page Fault

49