Penyebab deadlock
Mutual Exclusion, salah satu syarat terjadinya deadlock. Mutual Exclusion adalah kondisi di
mana hanya satu proses yang diizinkan menggunakan sumber daya pada satu waktu tertentu. Proses
lain harus menunggu hingga sumber daya tersebut dilepaskan sebelum mereka dapat
menggunakannya. Jika kondisi Mutual Exclusion tidak dijaga atau dilanggar, kemungkinan terjadinya
deadlock meningkat.
Hold and Wait, adalah kondisi di mana suatu proses yang sedang menggunakan sumber daya
juga meminta sumber daya lain, dan proses ini menunggu hingga sumber daya yang diminta tersedia.
Ini dapat mengakibatkan proses-proses lain yang menunggu sumber daya terjebak, yang dapat
menyebabkan kelaparan sumber daya (resource starvation) karena beberapa proses dapat
menunggu sumber daya yang tidak pernah dilepaskan. No Preemption adalah ketika sumber daya
tidak dapat diambil alih atau dilepaskan dari proses yang sedang menggunakannya tanpa
persetujuan dari proses tersebut. Ini berarti sumber daya harus dilepaskan secara sukarela oleh
proses yang sedang menggunakannya sebelum dapat digunakan oleh proses lain. Syarat ini dapat
menyebabkan proses lain menunggu sumber daya yang terjebak dalam proses yang
menggunakannya.
Circular Wait, terjadi ketika ada siklus ketergantungan antara beberapa proses, di mana
setiap proses menunggu sumber daya yang dipegang oleh proses berikutnya dalam siklus. Ini
menciptakan situasi di mana setiap proses dalam siklus saling menunggu, sehingga deadlock dapat
terjadi.
Terdapat beberapa cara dalam menangani deadlock, yang secara umumnya ada 4 cara untuk
menanganinya, yaitu:
Penghindaran deadlock membutuhkan informasi tentang sumber daya mana yang akan
meminta suatu proses dan berapa lama akan digunakan
Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau
tidak.
Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh
proses lain atau tidak.
Dalam algoritma ini dikatakan bahwa untuk menghadapi Deadlock ialah dengan berpura-
pura bahwa tidak ada masalah apa pun.
Hal ini seakan-akan melakukan suatu hal yang fatal, tetapi sistem operasi Unix
menanggulangi Deadlock dengan cara ini dengan tidak mendeteksi Deadlock dan
membiarkannya dan secara otomatis mematikan program sehingga seakan-akan tidak
terjadi apa pun
Jadi jika terjadi Deadlock, maka tabel akan penuh, sehingga proses yang menjalankan
proses melalui operator harus menunggu pada waktu tertentu.dan mencoba lagi
Caranya ialah dengan cara mendeteksi jika terjadi Deadlock pada suatu proses maka
dideteksi sistem mana yang terlibat di dalamnya.
Setelah diketahui sistem mana saja yang terlibat maka dilakukan perbaikan proses dan
menjadikan sistem berjalan kembali.
Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung
dengan pendeteksian deadlock serta pencegahannya → maka kita akan sampai pada
kondisi deadlock yang dapat berpengaruh terhadap performance sistem karena sumber
daya tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu
periodik.