Thursday, January 7, 2010

Deadlock

Pengertian
Suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses.
Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut

Kondisi yang Diperlukan
Deadlock terjadi bila terdapat empat kondisi berikut ini secara simultan.
a. Mutual Exclusion : hanya satu proses pada satu waktu yang dapat menggunakan
sumber daya.
b. Genggam dan Tunggu (Hold and Wait) : suatu proses membawa sedikitnya satu
sumber daya menunggu mendapatkan tambahan sumber daya baru yang dibawa
oleh proses

c. Non-Preemption : sebuah sumber daya dapat dibebaskan dengan sukarela oleh
proses yang memegangnya setelah proses menyelesaikan task.
d. Menunggu Secara Sirkuler (Circular Wait) : Terdapat sekumpulan proses {P0,
P1, …, P0} yang menunggu sumber daya dimana P0 menunggu sumber daya
yang dibawa P1, P1 menunggu sumber daya yang dibawa P2, dan seterusnya,
Pn–1 menunggu sumber daya yang dibawa oleh
Pn, dan Pn menunggu sumber daya yang dibawa P0.
Ketiga syarat pertama merupakan syarat perlu (necessary conditions) bagi
terjadinya deadlock. Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi
diatas, tak mungkin terjadi deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi
berarti terdapat ketiga kondisi itu, tetapi adanya ketiga kondisi itu belum berarti terjadi
deadlock.

Deadlock baru benar-benar terjadi bila syarat keempat terpenuhi. Kondisi
keempat merupakan keharusan bagi terjadinya peristiwa deadlock. Bila salah satu saja
dari kondisi tidak terpenuhi maka deadlock tidak terjadi.
Strategi mengatasi Deadlock
• Prevention : memastikan paling sedikit satu penyebab Deadlock tidak berlaku
• Avoidance : sistem menolak request terhadap resource yang berpotensi deadlock, Algoritma Banker
• Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya, kemudian melakukan recovery, Algoritma Ostrich
Prevention
• Mutual Exclusion : membuat file spool untuk resource yang digunakan bersama-sama
• Hold and Wait : memaksa sebuah proses untuk melepaskan resource yang dimilikinya ketika meminta resource baru
• Circular Waiting : memberikan penamaan resource berdasarkan urutan atau level
• No Preemption : membolehkan adanya preemption
Avoidance
• Resource manager menolak proses yang meminta resource yang berpotensi deadlock
• Jika ada permintaan resource yang maksimum digunakan, maka proses tersebut akan dipaksa untuk melepaskan resource yang sudah dimiliknya
• Perlu adanya informasi tambahan

No comments:

Post a Comment