Deadlock adalah keadaan dimana dua program memegang kontrol terhadap sumber daya yang
dibutuhkan oleh program yang lain. Tidak ada yang dapat melanjutkan proses masing-masing
sampai program yang lain memberikan sumber dayanya, tetapi tidak ada yang mengalah.
Penyebab Deadlock
Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu
kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam
kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat
dilakukan oleh proses lain dalam himpunan tersebut.
1.Mutual Exclusion . Kondisi yang pertama adalah mutual exclusion yaitu proses memiliki hak milik
pribadi terhadap sumber daya yang sedang digunakannya. Jadi, hanya ada satu proses yang
menggunakan suatu sumber daya. Proses lain yang juga ingin menggunakannya harus menunggu
hingga sumber daya tersebut dilepaskan oleh proses yang telah selesai menggunakannya. Suatu
proses hanya dapat menggunakan secara langsung sumber daya yang tersedia secara bebas.
2.Hold and Wait . Kondisi yang kedua adalah hold and wait yaitu beberapa proses saling
menunggu sambil menahan sumber daya yang dimilikinya. Suatu proses yang memiliki minimal
satu buah sumber daya melakukan request lagi terhadap sumber daya. Akan tetapi, sumber daya
yang dimintanya sedang dimiliki oleh proses yang lain. Pada saat yang sama, kemungkinan
adanya proses lain yang juga mengalami hal serupa dengan proses pertama cukup besar terjadi.
Akibatnya, proses-proses tersebut hanya bisa saling menunggu sampai sumber daya yang
dimintanya dilepaskan. Sambil menunggu, sumber daya yang telah dimilikinya pun tidak akan
dilepas. Semua proses itu pada akhirnya saling menunggu dan menahan sumber daya miliknya.
3.No Preemption . Kondisi yang selanjutnya adalah no preemption yaitu sebuah sumber daya
hanya dapat dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai
menggunakannya. Proses yang menginginkan sumber daya tersebut harus menunggu sampai
sumber daya tersedia, tanpa bisa merebutnya dari proses yang memilikinya.
4.Circular Wait . Kondisi yang terakhir adalah circular wait yaitu kondisi membentuk siklus yang
berisi proses-proses yang saling membutuhkan. Proses pertama membutuhkan sumber daya yang
dimiliki proses kedua, proses kedua membutuhkan sumber daya milik proses ketiga, dan
seterusnya sampai proses ke n-1 yang membutuhkan sumber daya milik proses ke n. Terakhir,
proses ke n membutuhkan sumber daya milik proses yang pertama. Yang terjadi adalah proses-
proses tersebut akan selamanya menunggu.
Mencegah Deadlock
Menghindari Deadlock
Pendekatan metode ini adalah dengan hanya memberi kesempatan ke permintaan sumber daya
yang tidak mungkin akan menyebabkan deadlock. Metode ini memeriksa dampak pemberian
akses pada suatu proses, jika pemberian akses tidak mungkin menuju kepada deadlock, maka
sumber daya akan diberikan pada proses yang meminta. Jika tidak aman, proses yang meminta
akan di-suspend sampai suatu waktu permintaannya aman untuk diberikan. Kondisi ini terjadi
ketika setelah sumber daya yang sebelumnya dipegang oleh proses lain telah dilepaskan.
Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan keadaan yang
tidak memungkinkan untuk diberikan sumber daya yang diminta disebut unsafe-state.
Unsafe state
Safe state
deadlock
Pemulihan Deadlock
1. Terminasi Proses
Abort semua proses yang deadlock
Metode ini akan mematahkan deadlock cycle, tetapi bisa saja proses-proses yang deadlock telah
dikomputasi dalam waktu yang lama dan hasil-hasil komputasi parsial harus dibuang, sehingga
ada kemungkinan harus dikomputasi ulang. Abort satu proses pada satu waktu sampai deadlock
tereliminir.
Metode ini sangat mungkin mendatangkan overhead, setelah setiap proses di-abort, algoritma
pendeteksian deadlock harus diminta kembali untuk menentukan apakah masih ada proses-
proses yang deadlock. Jika terminasi parsial digunakan, kita harus menentukan proses-proses
deadlock yang mana yang harus diterminasi. Penentuan ini pada dasarnya berkaitan dengan
ekonomi. Kita harus abort proses-proses yang terminasinya minimum cost. Sayangnya, minimum
cost tidak ditentukan satu hal. Banyak faktor yang
mempengaruhi pemilihan proses, mencakup:
- Apa prioritas dari proses
- Berapa lama proses telah mengkomputasi dan berapa lama lagi proses akan mengkomputasi
sebelum menyelesaikan tugasnya
- Berapa banyak dan apa tipe dari sumber daya yang digunakan oleh proses
- Berapa sumber daya lagi yang dibutuhkan proses supaya selesai
- Berapa banyak proses yang perlu diterminasi
- Apakah proses interactive atau batch
Algoritma Bankir
Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990)
adalah sebagai berikut:
1. Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.
2. Jumlah proses yang tidak tetap dan berubah-ubah.
3. Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.
4. Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar
proses.
5. Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga.