Selasa, 01 Januari 2013

0 PENANGANAN DEADLOCK


Untuk manangani deadlock ada yang dinamakan:
- Algoritma Banker !
- Algoritma Safety !
- Alagoritma Ostrich !

1.      Algoritma Banker
Algoritma resource allocation graph tidak dapat
diaplikasikan pada sistem yang mempunyai beberapa
anggota pada setiap tipe sumber daya. Setiap proses
sebelum dieksekusi harus menentukan jumlah sumber
daya maksimum yang dibutuhkan. Jika suatu proses
meminta sumber daya kemungkinan proses harus
menunggu. Jika suatu proses mendapatkan semua sumber
daya maka proses harus mengembalikan semua sumber
daya dalam jangka waktu tertentu.
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 : matriks n x m. Jika Allocation[i, j] = k
maka Pi sedang dialokasikan k anggota tipe resource
Rj.
Need : matriks n x m. Jika Need[i, j] = k, maka Pi
membutuhkan k anggota tipe resource Rj untuk
menyelesaikan tugas bagiannya. 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] untuk semua i = 1, 2, .., n. Sebagai
contoh jika X = (1, 7, 3, 2) dan Y = (0, 3, 2, 1) maka Y _
X.

2.      Algoritma Safety
Algoritma ini untuk menentukan apakah sistem berada
dalam state selamat atau tidak.
1. Work dan Finish adalah vektor 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) Need [i] _ Work
Jika tidak terdapat i ke langkah 4.
3. Work = Work + Allocation [i]
Finish[i] = true
Kembali ke langkah 2.
4. Jika Finish [i] = true untuk semua i, maka sistem
dalam state selamat.
3.      Algoritma Ostrich
Dalam ilmu komputer, algoritma ostrich adalah strategi mengabaikan masalah yang mungkin terjadi atas dasar bahwa masalah itu mungkin sangat jarang terjadi - "menempel kepala di pasir dan berpura-pura bahwa tidak ada masalah". Dengan mengasumsikan bahwa lebih efektif untuk memungkinkan masalah itu terjadi dibandingkan upaya pencegahannya.
Pendekatan ini dapat digunakan dalam menangani deadlock pada pemrograman concurrent jika deadlock diyakini sangat jarang terjadi, dan jika biaya untuk mendeteksi atau pencegahan lebih tinggi.

0 Comments

Bagaimana Pendapat Anda ?