Nahh untuk sekarang saya akan memposting mengenai Penanganan
DeadLock dengan algoritma Banker, Safety dan Ostrich !!
Langsung saja yah ke pembahasan...
Algoritma banker lebih dikenal dengan nama algoritma
penjadwalan. Algoritma banker dapat digambarkan sebagai seorang banker/bankir
yang berurusan dengan kelompok orang yang meminta pinjaman kepada banker
tersebut.
Jadi algoritma banker bekerja dengan cara mempertimbangkan
apakah permintaan para peminjam itu sesuai dengan jumlah dana yang ia miliki,
sekaligus memperkirakan jumlah dana yang mungkin diminta lagi. Sehingga
keadaanya tidak sampai pada kondisi dimana dananya habis dan tidak dapat
meminjamkan uang lagi.
Algoritma banker dikembangkan
oleh salah satu orang IT ternama dunia, Edsger Dijkstra. Algoritma ini adalah
penanganan deadlock dengan metode penghindaran (avoidance) dengan melakukan
alokasi resource.
Algoritma ini bekerja dengan cara algoritma mencari apakah
sistem dalam status aman atau tidak. Status ini terjadi jika sistem dapat
mengalokasikan sumber daya bagi tiap proses dalam keadaan tertentu dan masih
dapat terjadi deadlock. Status aman bukanlah status deadlock, jadi status
deadlock merupakan status tidak aman, tetapi tidak selamanya status tidak aman
mengakibatkan status deadlock melainkan ada kemungkinan dapat terjadi.
Algoritma ostrich merupakan strategi penanganan deadlock
dengan cara mengabaikan masalah yang mungkin terjadi atas dasar bahwa masalah
itu mungkin sangat jarang terjadi.dalam hal ini berarti diasumsikan bahwa tidak
ada masalah. Dengan begitu mengasumsikan bahwa tidak ada masalah lebih efektif
daripada untuk memungkinkan masalah itu terjadi dibandingkan upaya
pencegahannya.
.
Penyebab terjadinya deadlock adalah :
a. mutual exclusion, yaitu suatu keadaan dimana hanya ada
satu proses saja yang boleh memakai resource, proses yang lain harus menunggu
sampai proses tadi benar-benar selesai. contoh mutual exclusion adalah
“buffering” ketika kita menonton video.
b. Hold and Wait,yaitu keadaan dimana suatu proses
‘kelaparan’ sumberdaya. Suatu proses menunggu suatu sumberdaya dalam waktu yang
lama hingga sumberdaya tersebut tidak terpakai oleh proses lainnya.
c. No Pre-emption, yaitu keadaan dimana suatu sumberdaya
tidak boleh diambil(dipakai) begitu saja/secara paksa oleh proses yang lainnya sehingga
suatu proses harus menunggu hingga proses yang sedang memakai sumberdaya
benar-benar telah selesai.
d. circular wait, yaitu suatu keadaan dimana proses yang
lain membutuhkan sumberdaya yang sedang dipakai oleh suatu proses sehingga
timbul antrian melingkar (waiting chain) seperti halnya rantai.
Keempat penyebab timbulnya deadlock hampir sama yaitu
penggunaan sumber daya dan waktu tunggu oleh suatu proses atau lebih.
Berikut adalah beberapa cara untuk menangani deadlock :
1. Cara pencegahan (prevention), yaitu mencegah terjadinya
deadlock. Dalam hal ini, penyebab deadlock harus diketahui sebelumnya kemudian
memastikan bahwa slah satu keadaan yang penting tidak akan meninmbulkan
deadlock.
2. Cara penolakan/menghindari (avoidance), yaitu melakukan
pendataan terhadap proses-proses yang kira-kira akan menghabiskan sumberdaya.
3. Detection and Recovery, yaitu mendeteksi dan memperbaiki.
Mendeteksi sistem apasaja yang terlibat jika terjadi deadlock, setelah
mendeteksi, sistem diperbaiki.
4. Mengabaikan deadlock, yaitu membiarkan deadlock seolah
tidak terjadi apa-apa dan membiarkan deadlock tersebut mematikan program. Hal
ini merupakan algoritma Ostrich untuk menangani deadlock.