Anda di halaman 1dari 10

Analisis Macam-Macam Algoritma Page ACAK ,OPTIMAL ,FIFO ,Modifikasi

FIFO ,LRU dll.

Algoritma Penggantian Page Acak

Mekanisme algoritma
Setiap terjadi page fault, page yang diganti dipilih secara acak.
Teknik ini tidak memakai informasi apapun dalam menentukan page yang diganti. Semua page
di memori utama mempunyai bobot sama untuk dipilih. Teknik ini dapat memilih sembarang
page, termasuk page yang sedang diacu (page yang seharusnya tidak diganti, pilihan terburuk).

Teknik ini sangat buruk, percobaan menunjukkan algoritma acak menimbulkan rate terjadinya
page fault yang sangat tinggi.

Algoritma FIFO (First In First Out)

Algoritma ini adalah algoritma yang paling sederhana. Prinsip dari algoritma ini adalah seperti
prinsip antrian (antrian tak berprioritas), halaman yang masuk lebih dulu maka akan keluar lebih
dulu juga. Algoritma ini menggunakan struktur data stack. Apabila tidak ada frame kosong saat
terjadi page fault, maka korban yang dipilih adalah frame yang berada di stack paling bawah,
yaitu halaman yang berada paling lama berada di memori. Dengan hanya informasi mengenai
lama berada di memori, maka algoritma ini dapat memindahkan page yang sering digunakan.
Boleh jadi page itu berada terus di memori karena selalu digunakan. Page itu karena mengikuti
pola antrian berdasar lamanya berada di memori menjadi elemen terdepan, diganti, dan segera
harus masuk kembali ke memori sehingga terjadi page fault kembali.

Gambar 9.16. Algoritma FIFO


Pada awalnya, algoritma ini dianggap cukup mengatasi masalah tentang pergantian halaman,
sampai pada tahun 70-an, Belady menemukan keanehan pada algoritma ini yang dikenal
kemudian dengan anomali Belady. Anomali Belady adalah keadaan di mana page fault rate
meningkat seiring dengan pertambahan jumlah frame , seperti yang bisa dilihat pada contoh di
bawah ini.

Gambar 9.17. Anomali Algoritma FIFO


Ketika jumlah frame ditambah dari 3 frame menjadi 4 frame, jumlah page fault yang terjadi
malah bertambah (dari 14 page fault menjadi 15 page fault ). Hal ini biasanya terjadi pada kasus
yang menginginkan halaman yang baru saja di-swap-out sebelumnya. Oleh karena itu, dicarilah
algoritma lain yang mampu lebih baik dalam penanganan pergantian halaman seperti algoritma
optimal.

Algoritma FIFO murni jarang digunakan, tetapi dikombinasikan (modifikasi).

Kelemahan FIFO yang jelas adalah algoritma dapat memilih memindahkan page yang sering
digunakan yang lama berada di memori. Kemungkinan ini dapat dihindari dengan hanya
memindahkan page tidak diacu Page ditambah bit R mencatat apakah page diacu atau tidak. Bit
R bernilai 1 bila diacu dan bernilai 0 bila tidak diacu.

Variasi dari FIFO antara lain:

 Algoritma penggantian page kesempatan kedua (second chance page replacement


algorithm)

 Algoritma penggantian clock page (clock page replacement algorithm)

Algoritma Penggantian Page Kesempatan Kedua

Mekanisme algoritma

 Saat terjadi page fault, algoritma memilih page elemen terdepan diganti bila bit R bernilai
0.

 Bila bit R bernilai 1, maka bit page terdepan senarai direset menjadi 0 dan diletakkan ke
ujung belakang senarai. Mekanisme ini kembali diterapkan ke elemen berikutnya.

Algoritma Penggantian Clock Page


Algoritma penggantian page kesempatan kedua merupakan algoritma yang memadai tapi tidak
efisien karena memindahkan page-page di senarainya. Algoritma penggantian clock page
merupakan perbaikan algoritma pertama.

Mekanisme algoritma

 Pada algoritma ini, semua page merupakan senarai melingkar membentuk pola jam.
Terdapat penunjuk (pointer) ke page tertua.

Ketika terjadi page fault, page yang ditunjuk diperiksa.

 Jika bit R bernilai 0, maka page diganti. Page baru ditempatkan di tempat page diganti,
dan penunjuk dimajukan satu posisi ke page berikutnya.

 Jika bit R bernilai 1, maka bit R direset menjadi 0, dan penunjuk dimajukan satu posisi.
Seterusnya sampai menemui page dengan bit R bernilai 0.

Kedua algoritma adalah sama, hanya berbeda dalam implementasi, yaitu:

 Algoritma penggantian page kesempatan kedua menggunakan senarai lurus tidak


sirkular.

 Algoritma penggantian clock page menggunakan senarai sirkular.

Algoritma Optimal

Algoritma ini adalah algoritma yang paling optimal sesuai namanya. Prinsip dari algoritma ini
adalah mengganti halaman yang tidak akan terpakai lagi dalam waktu lama, sehingga efisiensi
pergantian halaman meningkat (page fault yang terjadi berkurang) dan terbebas dari anomali
Belady. Strategi ini akan menghasilkan jumlah page-fault paling sedikit. Algoritma ini memiliki
page fault rate paling rendah di antara semua algoritma di semua kasus. Akan tetapi, optimal
belum berarti sempurna karena algoritma ini ternyata sangat sulit untuk diterapkan. Sistem tidak
dapat mengetahui halaman-halaman mana saja yang akan digunakan berikutnya. Pendekatan ini
dapat dilakukan dengan simulasi. Tapi simulasi hanya spesifik untuk suatu program. Bila yang
terbaik tak dimungkinkan, maka yang perlu dilakukan adalah berusaha mendekatinya. Algoritma
penggantian page diusahakan kinerjanya mendekati optimal. Tiap algoritma penggantian page
mengumpulkan dan memakai informasi untuk menentukan page yang diganti sehingga
mendekati optimal.
Gambar 9.18. Algoritma Optimal

Algoritma LRU (Least Recently Used)

Dikarenakan algoritma optimal sangat sulit dalam pengimplementasiannya, maka dibuatlah


algoritma lain yang performance-nya mendekati algoritma optimal dengan sedikit cost yang
lebih besar. Algoritma ini mengganti halaman yang paling lama tidak dibutuhkan. Asumsinya,
halaman yang sudah lama tidak digunakan sudah tidak dibutuhkan lagi dan kemungkinan besar,
halaman yang baru di-load akan digunakan kembali.

Sama seperti algoritma optimal, algoritma LRU tidak mengalami anomali Belady. Algoritma ini
memakai linked list untuk mendata halaman mana yang paling lama tidak terpakai. Linked list
inilah yang membuat cost membesar, karena harus meng-update linked list tiap saat ada halaman
yang di akses. Halaman yang berada di linked list paling depan adalah halaman yang baru saja
digunakan. Semakin lama tidak dipakai, halaman akan berada semakin belakang dan di posisi
terakhir adalah halaman yang paling lama tidak digunakan dan siap untuk di-swap.

Gambar 9.19. Algoritma LRU


Implementasi LRU

Ada beberapa cara untuk mengimplementasikan algoritma LRU. Tetapi, yang cukup terkenal ada
2, yaitu counter dan stack.
Contoh algoritma di atas menggunakan stack.

Counter . Cara ini dilakukan dengan menggunakan counter atau logical clock. Setiap halaman
memiliki nilai yang pada awalnya diinisialisasi dengan 0. Ketika mengakses ke suatu halaman
baru, nilai pada clock di halaman tersebut akan bertambah 1. Semakin sering halaman itu
diakses, semakin besar pula nilai counter-nya dan sebaliknya. Untuk melakukan hal itu
dibutuhkan extra write ke memori. Selain berisi halaman-halaman yang sedang di-load, memori
juga berisi tentang counter masing-masing halaman. Halaman yang diganti adalah halaman yang
memiliki nilai clock terkecil, yaitu halaman yang paling jarang diakses. Kekurangan dari cara ini
adalah memerlukan dukungan tambahan counter pada hardware.

Stack. Cara ini dilakukan dengan menggunakan stack yang menandakan halaman-halaman yang
berada di memori. Setiap kali suatu halaman diakses, akan diletakkan di bagian paling atas stack.
Apabila ada halaman yang perlu diganti, maka halaman yang berada di bagian paling bawah
stack akan diganti sehingga setiap kali halaman baru diakses tidak perlu mencari kembali
halaman yang akan diganti. Dibandingkan pengimplementasian dengan counter, cost untuk
mengimplementasikan algoritma LRU dengan menggunakan stack akan lebih mahal karena
seluruh isi stack harus di-update setiap kali mengakses halaman, sedangkan dengan counter,
yang dirubah hanya counter halaman yang sedang diakses, tidak perlu mengubah counter dari
semua halaman yang ada.

Gambar 9.20. Algoritma LRU dengan Stack

Algoritma Penggantian Page NRU (Not-Recenly Used)

Mekanisme algoritmanya
Pada algoritma ini, page diberi dua bit mencatat status page, bit R dan M, yaitu:
Bit R : referenced (menyatakan page sedang diacu)
Bit R = 1 berarti sedang diacu
Bit R = 0 berarti tidak sedang diacu
Bit M : modified (menyatakan page telah dimodifikasi)
Bit M = 1 berarti dimodifikasi
Bit M = 0 berarti tidak dimodifikasi
Dengan 2 bit, maka page-page dikelompokkan menjadi 4 kelas page, yaitu
Kelas 0 : Tidak sedang diacu, belum dimodifikasi (R=0, M=0)
Kelas 1 : Tidak sedang diacu, telah dimodifikasi (R=0, M=1)
Kelas 2 : Sedang diacu, belum dimodifikasi (R=1, M=0)
Kelas 3 : Sedang diacu, telah dimodifikasi (R=1, M=1)

Memilih mengganti page kelas bernomor terendah (bila terdapat page-page di kelas itu) secara
acak.
Bila kelas tersebut kosong maka dipilih page di kelas lebih tinggi, dan seterusnya.
Algoritma ini mengasumsikan kelas-kelas bernomor lebih rendah akan baru akan digunakan
kembali dalam waktu relatif lama.
Algoritma ini mudah dipahami dan diimplementasikan. Implementasi algoritma ini sangat efisien
karena tak banyak langkah dalam pemilihan page. Algoritma ini memang tidak optimal, tapi
dalam kondisi-kondisi normal telah memadai.

Algoritma Lainnya

Sebenarnya masih banyak algoritma ganti halaman yang lain selain 3 algoritma utama yang telah
dibahas sebelumnya (utama bukan berarti paling sering dipakai). Berikut ini adalah 2 contoh
algoritma lain yang juga cukup popular dan mudah diimplementasikan.

Algoritma yang pertama adalah algoritma second chance. Algoritma second chance berdasarkan
pada algoritma FIFO yang disempurnakan. Algoritma ini menggunakan tambahan berupa
reference bit yang nilainya 0 atau 1. Jika dalam FIFO menggunakan stack , maka second chance
menggunakan circular queue . Halaman yang baru di-load atau baru digunakan akan diberikan
nilai 1 pada reference bit-nya. Halaman yang reference bit-nya bernilai 1 tidak akan langsung
diganti walaupun dia berada di antrian paling bawah (berbeda dengan FIFO).

Urutan langkah kerja algoritma second chance adalah sebagai berikut:

 Apabila terjadi page fault dan tidak ada frame yang kosong, maka akan dilakukan razia
(pencarian korban) halaman yang reference bit-nya bernilai 0 dimulai dari bawah antrian
(seperti FIFO).

 Setiap halaman yang tidak di- swap (karena reference bit-nya bernilai 1), setiap dilewati
saat razia reference bit-nya akan diset menjadi 0.

 Apabila ditemukan halaman yang reference bit-nya bernilai 0, maka halaman itu yang di-
swap.

 Apabila sampai di ujung antrian tidak ditemukan halaman yang reference bit-nya bernilai
0, maka razia dilakukan lagi dari awal.

Pada gambar di bawah ini, akan diilustrasikan algoritma second chance dan algoritma FIFO
sebagai pembanding.
Gambar 9.21. Algoritma Second Chance

Gambar 9.22. Algoritma FIFO

Algoritma kedua adalah algoritma random. Algoritma random adalah algoritma yang cukup
sederhana juga selain algoritma FIFO. Dalam algoritma ini, halaman yang dipilih menjadi
korban dipilih secara acak.

Meskipun terdengar asal, tetapi algoritma ini relatif low cost, karena tidak memerlukan stack,
queue atau counter. Dibandingkan dengan FIFO, rata-rata kasus menunjukkan page fault rate
algoritma random lebih rendah daripada algoritma FIFO. Sedangkan dibandingkan dengan LRU,
algorima random ini lebih unggul dalam hal memory looping reference , karena algoritma
random sama sekali tidak memerlukan looping.
Gambar 9.23. Algoritma Random

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

Anda mungkin juga menyukai