Penyebab Terjadinya Deadlock

Secara harfiah, deadlock adalah kebuntuan. Namun, deadlock di dalam sistem operasi berarti bahwa suatu kondisi domana serangkaian proses tidak dapat berjalan atau tidak ada komunikasi antar proses tersebut. Definisi lain dari deadlock adalah sekumpulan proses yang terblok. Penyebab terjadinya deadlock adalah karena sumber daya yang terbatas yang diperlukan untuk menjalankan serangkaian proses. Setiap proses berkompetisi untuk mendapatkan sumber daya yang tersedia. Sehingga, deadlock sangat erat kaitannya dengan ketersediaan sumber daya.

Terdapat empat kondisi yang menyebabkan deadlock. Keempat kondisi ini tidak terpisah satu sama lain atau dengan kata lain semuanya saling mendukung. Kondisi pertama adalah mutual exclusive. Hal ini terjadi ketika hanya ada satu proses yang dapat menggunakan sumber daya yang tersedia. Maka apabila ada proses lain yang meminta atau membutuhkan sumber daya tersebut, proses tersebut harus menunggu sampai sumber daya dilepaskan atau selesai digunakan oleh proses sebelumnya.

Penyebab Terjadinya Deadlock

Kondisi kedua adalah memegang dan menunggu. Hal ini terjadi ketika ada proses yang meminta sumber daya padahal proses tersebut sudah memegang sumber daya. Dengan kata lain, proses tersebut meminta sumber daya tambahan. Kondisi ketiga adalah tidak ada preemption. Maksudnya adalah sumber daya yang sudah dialokasikan untuk sebuah proses tidak dapat diminta oleh proses lain. sumber daya akan kembali tersedia apabila sumber daya tersebut dilepaskan secara sukarela atau setelah suatu proses selesai menggunakannya. Kondisi terakhir adalah circular wait. kondisi ini terjadi seperti rantai dimana proses saling menunggu sumber daya yang sedang dipakai oleh suatu proses yang sedang menggunakan sumber daya tersebut.

Cara pencegahan deadlock adalah sebagai berikut. Berkenaan dengan masalah mutual exclusive, maka hanya dapat dicegah oleh kemampuan sistem operasi. Kemudian, mengenai masalah menunggu dan memegang kendali, caranya adalah dengan meminta sumber daya yang dibutuhkan sebelum proses berjalan atau berlangsung. Tetapi tidak semua proses mengetahui sumber daya yang dibutuhkan. Oleh karena itu, Anda dapat menggunakan algoritma bankir. Berkaitan dengan masalah tidak ada preemption dan circular wait, Anda dapat menggunakan protokol untuk mencegahnya.