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 ?