• Tidak ada hasil yang ditemukan

Gambar 6.9. Algoritma Random

6.8. Rangkuman

Page fault terjadi apabila terdapat halaman yang ingin diakses tetapi halaman tersebut tidak terdapat

di dalam memori utama.

Jika terjadi page fault dan tidak ada frame yang kosong, maka dipilih frame tumbal yang akan di-swap.

Pemilihan halaman dilakukan dengan algoritma ganti halaman. Algoritma dipilih yang paling rendah page fault rate-nya dan tidak sulit untuk diimplementasikan.

Contoh algoritma ganti halaman: • Algoritma FIFO

• Algoritma Optimal • Algoritma LRU

• Algoritma Second Chance • Algoritma Random

Rujukan

[Silberschatz2002] Abraham Silberschatz, Peter Galvin, dan Greg Gagne. 2002. Applied Operating

Systems. Sixth Edition. John Wiley & Sons.

[Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems

Concepts. Seventh Edition. John Wiley & Sons.

[Tanenbaum1997] Andrew S Tanenbaum dan Albert S Woodhull. 1997. Operating Systems Design

and Implementation. Second Edition. Prentice-Hall.

[WEBAmirSch2000] YairTheo AmirSchlossnagle. 2000. Operating Systems 00.418: Memory

Management – http://www.cs.jhu.edu/ ~yairamir/ cs418/ os5/ . Diakses 29 Mei 2006.

[WEBEgui2006] Equi4 Software. 2006. Memory Mapped Files http://www.equi4.com/mkmmf.html . Diakses 3 Juli 2006.

[WEBFunkhouser2002] Thomas Funkhouser. 2002. Computer Science 217 Introduction to

Programming Systems: Memory Paging – http://www.cs.princeton.edu/ courses/ archive / spring02/ cs217/ lectures/ paging.pdf . Diakses 28 Juni 2006.

[WEBGottlieb2000] Allan Gottlieb. 2000. Operating Systems: Page tables http://allan.ultra.nyu.edu/ ~gottlieb/ courses/ 1999-00-spring/ os/ lecture-11.html . Diakses

28 Juni 2006.

[WEBSolomon2004] Marvin Solomon. 2004. CS 537 Introduction to Operating Systems: Lecture

Notes Part 7 – http://www.cs.wisc.edu/ ~solomon/ cs537/ paging.html . Diakses 28 Juni

2006.

[WEBWiki2006c] From Wikipedia, the free encyclopedia. 2006. Memory Management Unit –

http://en.wikipedia.org/ wiki/ Memory_management_unit . Diakses 30 Juni 2006.

[WEBWiki2006d] From Wikipedia, the free encyclopedia. 2006. Page Fault http://en.wikipedia.org/ wiki/ Page_fault . Diakses 30 Juni 2006.

[WEBWiki2006e] From Wikipedia, the free encyclopedia. 2006. Copy on Write http://en.wikipedia.org/ wiki/ Copy_on_Write . Diakses 03 Juli 2006.

[WEBWiki2007] Wikipedia. 2007. Page Replacement Algortihm http://en.wikipedia.org/wiki/Page_replacement_algorithm . Diakses 4 April 2007.

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 (m/n 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 ((Si/S ) x m) m = 64

S1 = 10 S2 = 127

a1 = (10/137) x 64 = 5 bingkai a2 = (127/137) 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

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.