Kamis, 27 Desember 2012

ALGORITMA BANKER



Sekilas akan menjelaskan tentang algoritma banker Nama Banker dari Banker’s algorithm diperoleh dari fakta bahwa algoritma ini dapat digunakan oleh bank untuk memastikan bank tidak akan mengalami kekurangan resource, dalam hal ini uang nasabah. Dengan algoritma ini, bank dapat memastikan bahwa ketika nasabah menarik uang, bank tetap pada kondis safe state. Jika penarikan uang oleh nasabah tidak membuat bank keluar dari safe state (masuk ke dalam unsafe state), maka penarikan dan akan diijinkan. Jika tidak, nasabah harus menunggu hingga ada tambahan uang (deposit dari nasabah lain) di dalam kas bank.
Banker’s algorithm adalah algoritma resource allocation dan deadlock avoidance yang dikembangkan oleh Edsger Dijkstra. Algoritma ini menguji tingkat keamanan dari kemungkinan deadlock dengan melakukan simulasi berdasarkan jumlah maksimum resources dan kemudian mengecek kondisi safe state terhadap semua kemungkinan kondisi deadlock dari semua aktifitas yang berada dalam posisi pending, sebelum memutuskan pengalokasian resource.
Algoritma Banker’s ini dijalankan oleh sistem operasi ketika proses melakukan request resource. Penghindaran terhadap deadlock dilakukan dengan menolak atau menunda suatu request jika sekiranya penerimaan terhadap request tersebut dapat membawa sistem dalam kondisi unsafe state. Berdasar algoritma ini, ketika suatu proses masuk ke dalam sistem, proses ini harus memberikan jumlah maksimum resource yang diperlukan dimana resource tersebut tidak boleh melebihi total resource yang dimiliki oleh sistem. Selain itu, ketika suatu proses mendapatkan resource yang diinginkan, proses tersebut harus mengembalikan resource yang digunakan dalam jangka waktu tertentu.
Agar algoritma Banker’s ini dapat berkerja, harus ada tiga hal yang dimiliki/diketahui, yaitu:
  1. Jumlah resource dari tiap proses yang mungkin di request.
  2. Jumlah resource dari tiap proses yang sedang di pegang atau di gunakan (hold).
  3. Jumlah sisa resource yang dimiliki oleh sistem.
Resource hanya dapat diberikan pada suatu proses jika:
  1. request*max**, jika tidak set error, karena request melebihi jumlah klaim sebelumnya.
  2. requestavailable***, jika tidak proses harus menunggu hingga resource yang diminta ada.
*request adalah jumlah resource yang di request oleh proses.
**max adalah jumlah resource yang sebelumnya sudah di klaim oleh proses. Seperti yang telah disebutkan di awal, ketika masuk ke dalah sistem, proses harus memberikan jumlah maksimum proses yang diperlukan.
***available adalah jumlah sisa resource system yang sedang tidak terpakai.
Berikut ini adalah contoh lagi mengenai safe state dalam kaitannya dengan Banker’s Algorithm untuk multiple resources. Anggap suatu sistem memiliki proses  dengan resource A, B, C, dan D. Mapping proses dan resource tampak seperti tabel dibawah.

P1
P2
P3
Free resources
Total Resources
current
max
current
max
current
max
A
1
3
1
1
2
1
3
7
B
2
3
0
2
2
3
1
5
C
2
2
3
3
1
5
1
7
D
1
2
3
4
0
0
2
6
State dalam tabel diatas dianggap safe state jika semua proses dengan resource yang diperlukan dapat tereksekusi. Sistem tidak dapat mengetahui kapan suatu proses selesai eksekusi dan jumlah proses yang diperlukan saat eksekusi, karena itu sistem akan mengasumsikan bahwa resources yang diperlukan adalah maksimum, dengan asumsi proses segera mengembalikan resource tersebut ketika eksekusinya telah selesai. Dengan asumsi maksimum ini, jika ternyata proses tidak memerlukan resource pada jumlah maksimum, maka justru akan memperingan kerja sistem

Tidak ada komentar:

Posting Komentar