Deadlock merupakan kondisi ketika dua atau lebih proses saling menunggu resource yang digunakan satu sama lain, sehingga tidak ada proses yang dapat melanjutkan pekerjaannya.
Pernahkah kalian mengalami situasi aneh saat dua mobil bertemu di persimpangan sempit, lalu tidak ada yang mau mundur duluan? Kejadian seperti itu juga dapat terjadi di dalam komputer. Bedanya, di komputer dinamakan deadlock, yang dapat membuat sistem operasi bermasalah.
Apa itu Deadlock?
Deadlock adalah kondisi ketika dua atau lebih program atau proses komputer tidak bisa melanjutkan pekerjaannya karena saling menunggu satu sama lain untuk menyelesaikan tugas tertentu. Akibatnya, semua proses tersebut menjadi terhenti dan tidak ada yang dapat berjalan.
Jika diterjemahkan secara harfiah, deadlock berarti “kunci mati” atau kondisi jalan buntu, yaitu situasi ketika suatu proses tidak dapat dilanjutkan karena saling menunggu dengan proses lainnya.
Perbedaannya dengan proses hang atau lag biasa, deadlock ini bener-bener membuat proses terhenti permanent. Kondisi ini tidak hanya menyebabkan sistem menjadi lambat, tetapi juga membuat proses berhenti sepenuhnya hingga ada tindakan dari luar untuk mengatasinya.
Kenapa Deadlock Jadi Masalah Besar?
Di dalam sistem operasi, deadlock dapat menjadi mimpi buruk tersendiri. Karena sistem operasi tugasnya mengatur berbagai macam resource komputer – mulai dari RAM, CPU, hard disk, sampai printer.
Yang menjadi masalah, proses yang terjebak dalam deadlock tidak bisa menyelesaikan pekerjaannya. Resource yang sudah digunakan tetap terkunci, sehingga proses lain yang membutuhkan resource tersebut harus menunggu. Jika dibiarkan, semakin banyak proses yang ikut tertunda.
Penyebab Terjadinya Deadlock
- Mutual Exclusion – Pada kondisi pertama ini, satu resource hanya bisa dipakai satu proses dalam satu waktu. Jika proses lain ingin menggunakan resource yang sama, harus antri menunggu hingga proses yang sedang berjalan telah selesai.
- Hold and Wait – Terjadi saat sebuah proses sudah mendapatkan resource tertentu, namun masih harus menunggu resource tambahan yang belum tersedia karena sedang dipakai proses lain.
- No Preemption – Kondisi ini berarti resource yang sedang dipakai tidak bisa direbut atau diambil paksa. Resource baru bisa digunakan oleh proses lain jika proses yang sedang memakainya sudah selesai dan melepaskannya.
- Circular Wait – Terjadi ketika beberapa proses saling menunggu satu sama lain dalam pola melingkar. Akibatnya, tidak ada proses yang dapat melanjutkan pekerjaannya.
Cara Mengatasi Deadlock
1. Menggunakan Sistem Timeout
Cara paling sederhana untuk mengatasi deadlock adalah dengan menerapkan timeout atau batas waktu tunggu. Misalnya, sebuah proses hanya diperbolehkan menunggu resource selama 30 detik. Jika dalam waktu tersebut resource belum tersedia, proses akan dihentikan secara otomatis. Resource yang sedang digunakan juga akan dilepaskan agar dapat digunakan oleh proses lain.
Namun, metode ini memiliki kelemahan. Terkadang sebuah proses membutuhkan waktu lebih lama untuk menyelesaikan tugasnya meskipun tidak mengalami deadlock. Akibatnya, proses tersebut bisa saja dihentikan secara tidak sengaja.
2. Mendeteksi Deadlock dan Memulihkannya
Pendekatan lain adalah membiarkan sistem berjalan seperti biasa, tetapi secara berkala memeriksa apakah terjadi deadlock. Untuk melakukannya, sistem membuat peta hubungan antarproses yang menunjukkan proses mana yang sedang menunggu resource dari proses lain.
Jika ditemukan pola menunggu yang membentuk lingkaran, sistem dapat menyimpulkan bahwa telah terjadi deadlock. Setelah terdeteksi, sistem akan mengambil tindakan pemulihan, misalnya dengan menghentikan satu atau beberapa proses yang terlibat agar resource dapat digunakan kembali.
3. Mengatur Prioritas Berdasarkan Timestamp
Metode yang lebih modern menggunakan timestamp atau cap waktu. Setiap proses diberi tanda waktu saat pertama kali dijalankan. Berdasarkan informasi tersebut, sistem menentukan proses mana yang boleh menunggu dan mana yang harus mengalah ketika terjadi konflik penggunaan resource.
Terdapat dua strategi yang umum digunakan yaitu Wait-Die dan Wound-Wait. Dengan mengatur prioritas berdasarkan timestamp, kemungkinan terjadinya deadlock dapat dikurangi secara signifikan.
Bagaimana Cara Mencegah Deadlock?
1. Mencegah Deadlock Sebelum Terjadi
Jika penanganan deadlock dilakukan setelah masalah muncul, maka pencegahan deadlock dilakukan sejak awal agar kondisi tersebut tidak pernah terjadi. Caranya adalah dengan memastikan setidaknya satu dari empat penyebab terjadinya deadlock tidak dapat terpenuhi.
2. Menghilangkan Hold and Wait
Salah satu caranya adalah mewajibkan setiap proses meminta semua resource yang dibutuhkan sejak awal. Jika seluruh resource belum tersedia, proses tidak diizinkan berjalan. Dengan demikian, tidak ada proses yang memegang satu resource sambil menunggu resource lainnya.
3. Menghilangkan No Preemption
Cara lainnya adalah mengizinkan sistem mengambil kembali resource yang sedang digunakan oleh suatu proses. Jika diperlukan, resource tersebut dapat dialihkan ke proses lain yang membutuhkannya. Namun, metode ini hanya cocok untuk jenis resource tertentu yang statusnya dapat disimpan dan dipulihkan dengan mudah.
4. Mencegah Circular Wait
Untuk mencegah terjadinya circular wait, setiap resource diberi urutan atau nomor tertentu. Selanjutnya, semua proses diwajibkan meminta resource sesuai urutan tersebut, misalnya dari nomor yang lebih kecil ke nomor yang lebih besar. Dengan aturan ini, siklus saling menunggu tidak dapat terbentuk sehingga deadlock dapat dihindari.
Kesimpulan
Deadlock merupakan kondisi ketika dua atau lebih proses saling menunggu resource yang digunakan satu sama lain, sehingga tidak ada proses yang dapat melanjutkan pekerjaannya. Masalah ini dapat menyebabkan kinerja sistem terganggu karena resource tetap terkunci dan tidak dapat digunakan oleh proses lain.
Oleh karena itu, pemahaman mengenai penyebab, karakteristik, serta metode pencegahan dan penanganan deadlock sangat penting dalam pengelolaan sistem komputer. Dengan menerapkan strategi yang tepat, risiko terjadinya deadlock dapat diminimalkan sehingga sistem dapat berjalan lebih stabil, efisien, dan andal.
Tingkatkan kompetensi mu di bidang sistem operasi! Dalami topik deadlock melalui kurikulum unggulan S1 Teknik Komputer Telkom University.
Referensi
- Silberschatz, A., Galvin, P. B., & Gagne, G. (2018). Operating System Concepts (10th ed.). John Wiley & Sons.
- Stallings, W. (2015). Operating Systems: Internals and Design Principles (8th ed.). Pearson Education.
- Tanenbaum, A. S., & Bos, H. (2014). Modern Operating Systems (4th ed.). Pearson.
- Hariyanto, B. (2009). Sistem Operasi: Edisi Revisi. Bandung: Informatika Bandung.
- Kadir, A. (2012). Dasar Pemrograman dan Sistem Operasi. Yogyakarta: Andi Offset.
Penulis: Dian Eka Fitriani









