panda

Sabtu, 10 Desember 2011

Sering sekali kita mendengar kata Deadlock, teman – teman sendiri pasti tahu apa itu Deadlock, sekilas tentang deadlock yaitu suatu kondisi dimana dalam dua proses ataupun lebih saling menunggu proses yang lain dalam melepaskan resource yang sedang dipakai. Deadlock terjadi karena beberapa proses itu saling menunggu selain itu tidak terjadi kemajuan dalam stiap prosesnya proses berbenturan sehingga prosesnya tidak merata.
Dalam masalah deadlock dapat di bantu dengan Algoritma Banker, Algoritma Safty & Algoritma Ostrich. Akan saya jelaskan satu persatu sbb :


1. ALGORITMA BANKER

Algoritma ini dapat digambarkan sebagai seorang bankir dikota kecil yang berurusan dengan kelompok orang yang meminta pinjaman . Oleh karena itu kepada siapa orang tersebut memberikan atau menyerahkan pinjamannya, setiap pelanggan memberikan batas atau jatuh tempo pinjaman maksimum kepada setiap peminjam dana dll.
Algoritma banker dapat mempertimbangkan apakah permintaan mereka itu sesuai dengan jumlah dana yang dimiliki dan sekaligus memperkirakan jumlah dana yng akan diminta lagi.

2.ALGORITMA SEFETY


Algoritma Safety adalah suatu bentuk algoritma yang menginginkan kondisi system dalam keadaan aman dan pencegahan yang dilakuka oleh algoritma safety yaitu dengan menanyakan suatu proses apakah proses sudah dalam keadaan selesai atau belum dengan membandingkan waktu proses dan lamanya eksekusi proses dan melihat apakah kondisi system dalam keadaan aman atau deadlock. Dibawah ini adalah contoh dari Algoritma Safeti sbb :


Work := Work + Allocationi // proses dapat selesai
Finish[i] := true
go to step 2.

Find and i such that both: // penjadwalan alokasi resource
(a) Finish [i] = false // asume, proses belum complete
(b) Needi £ Work // proses dapat selesai, ke step 3
If no such i exists, go to step 4.
If Finish [i] = true for all i, then the system is in a safe state.
Terdapat 3 proses: n = 3, 1 resource: m = 1
Jumlah resource m = 12.
Let Work and Finish be vectors of length m and n,respectively. Initialize:
Work := Available // resource yang free
Finish [i] = false for i = 1,3, …, n.


3. ALGORITMA OSTRICH

Algoritma Ostrich merupakan strategi untuk mengabaikan atau mengacuhkan masalah yg mungkin dan terjadi atas dasar jika masalah tersebut mungkin jarang terjadi,dengan mengasumsikan bahwa akan lebih efektif untuk memungkinkan ( terjadinya ) masalah itu terjadi di bandingkan dalam upaya pencegahan. Algoritma ini dapat berfungsi dalam menangani deadlock pemograman concurrent jika deadlock kebenarannya sangat jarang terjdi.
Pendekatan hybird menggunakan algoritma ostrich maksudnya menentukan bahwa kasus sangat jarang tidak terjadi,kemudian beralih dari algoritma lain yang lebih kompleks ( lengkap ).Trade-off disini yaitu jika keadaan berubah atau belum ditemukan dan masalah langka dapat kembali terjadi.