Sabtu, 03 Desember 2011

algoritma penanganan deadlock


 3 algoritma yang bisa digunakan dalam menanggulanginya yaitu :

1. Algoritma Ostritch
algoritma ini merupakan algoritma paling sederhana, dengan mengabaikan deadlock sama sekali.
kenapa di abaikan?karna mungkin masalah yang muncul jarang terjadi, algoritma ini digunakan karna mungkin masalah deadlock sangat jarang terjadi. Jadi apa yang dilakukan menurut algoritma ini jika terjadi deadlock? adalah restart komputer .

2. Algoritma banker
dalam algoritma ini dijelaskan bahwa: 
- setiap harus mengklaim berapa jumlah resourse yang akan digunakan
-  dan jika resourse tidak tersedia maka permintaan ditunda, dan setiap proses yang sudah selesai maka  resoursenya harus dikembalikan

Struktur data yang digunakan untuk mengimplementasikan algoritma Banker
akan menentukan state dari sumber daya yang dialokasikan oleh sistem. Misalnya n =jumlah proses dan 
m =jumlah tipe resource. Struktur data yang diperlukan :
• Available : Vektor panjang m. Jika Available[j] = k, terdapat k anggota tipe sumber
daya Rj yang tersedia.
• Max : matrik n x m. Jika Max[i, j] = k, maka proses Pi meminta paling banyak k
anggota tipe resource Rj.
• Allocation : matrik n x m. Jika Allocation[i, j] = k maka Pi sedang dialokasikan k
anggota tipe resource Rj.
• Need : matrik n x m. Jika Need[i, j] = k, maka Pi membutuhkan k anggota tipe
resource Rj untuk menyelesaikan task. Need[i, j] = Max[i, j] – Allocation[i, j].
Beberapa notasi yang perlu diketahui adalah misalnya X dan Y adalah vektor
dengan panjang n. X ≤ Y jika dan hanya jika X[i] ≤ Y[i] untuksemua i = 1, 2, .., n.
Sebagai contoh jika X = (1, 7, 3, 2) dan Y = (0, 3, 2, 1) maka Y ≤ X.



namun terdapat beberapa kekurangan dalam algoritma banker yaitu:
- proses masih belum mengetahui seberapa banyak resourse yang digunakan
- jumlah proses yang berjalan itu tidak tetap, lalu
- beberapa resourse dapat di ambilsistem sewaktu waktu
- algoritma membuat sistem untuk memenuhi permintaan hingga waktu yang tidak terbatas..hmmm


3. Algoritma safety
Algoritma ini untuk menentukan apakah sistem berada dalam state safety atau tidak.
1. Work dan Finish adalah vector dengan panjang m dan n. Inisialisasi : Work = Available dan Finish[i] = false untuk i = 1,3, …, n.
2. Cari i yang memenuhi kondisi berikut :
(a) Finish [i] = false
(b) Needi ≤ Work
Jika tidak terdapat i ke langkah 4.
3. Work = Work + Allocationi
Finish[i] = true
Kembali ke langkah 2.
4. Jika Finish [i] == true untuk semua i, maka sistem dalam state selamat.

Tidak ada komentar:

Posting Komentar