Langsung ke konten utama

Pengertian Dan Penyebab Dead Lock

Pada dasarnya Dead Lock terjadi karena adanya dua proses atau lebih yang saling menunggu suatu proses atau kejadian dan kedua proses tersebut sama-sama tidak dapat melanjutkan eksekusinya. Dimana sebenarnya proses atau kejadian yang di tunggu tersebut tidak ada, sehingga kedua proses tersebut akan tetap menunggu. Jika kondisinya sudah seperti ini yang bisa dilakukan hanya mereset ulang.
Dead Lock ini akan ada karena sesuatu hal yang tidak bisa digunakan bersama, tetapi malah dipakai bersama, sehingga keduanya tidak bisa melakukan proses yang seharusnya bisa dilakukan apabila proses tersebut menunggu salah satu proses diselesaikan terlebih dahulu (Antrian).

Illustrasi Dead Lock


Saya andaikan seperti ini, ada dua mobil yang datang dari arah berlawanan ketika itu ada penyempitan jalan karena melewati sebuah jembatan. Jembatan ini hanya bisa disebrangi oleh 1 mobil saja (Keterbatasan Sumberdaya). Tetapi karena tidak ada yang mau mengalah dari ke dua mobil tersebut dan mereka pun terlanjur masuk ke jembatan yang hanya bisa dilewati oleh 1 mobil saja. Ke dua mobil ini terjebak, dia tidak bisa maju dan mundur. Kalau mereka maju, ada mobil yang menghalangi dan kalau mereka mundur, sudah ada mobil-mobil yang lain mengantri di belakangnya.

Dari illustrasi di atas saya rasa sobat sekalian sudah mengarti yang dimaksud dengan Dead Lock. Nah selanjutnya saya akan membahas tentang penyebab daripada terjadinya Dead Lock dan cara untuk mengatasinya. Berikut penjelasannya:
  1. Mutual Exclusion adalah suatu kondisi atau suatu proses yang menggunakan atau memasuki wilayah kritis. Cara untuk menanganinya yaitu dengan cara memberikan proses yang sedang menggunakan sumberdaya kritis (Non Shareable) untuk dapat menyelesaikan prosesnya hingga selesai, sehingga proses tersebut dapat melepas sumber daya kritis. Setelah di lepaskan, maka akan dilanjutkan dengan proses lain yang membutuhkan sumberdaya tersebut.
  2. Hold & Wait adalah proses yang memegang sumberdaya tertentu tetapi masih membutuhkan sumberdaya yang lain. Proses yang seperti ini bisa saya katakan sebagai proses yang serakah, alasannya karena dia sudah memegang sumberdaya tertentu, tetapi dia menginginkan sumberdaya yang lain, hal ini yang sangat memungkinkan terjadinya dead lock. Untuk mengatasinya yaitu dengan cara melepaskan terlebih dahulu sumberdaya yang sedang di pegangnya, setelah di lepas maka proses tersebut baru bisa mengambil sumberdaya yang lain.
  3. Non Preemtive adalah suatu kondisi dimana suatu proses yang sudah memegang suatu sumberdaya tidak membiarkan proses lain untuk mengambil sumberdayanya. Dia akan menyuruh proses yang lain untuk menunggu hingga sumberdaya yang dia pakai selesai digunakan. Cara untuk mengatasinya yaitu dengan cara menunggu hingga proses tersebut selesai menggunakan sumberdaya atau selesai melakukan prosesnya.
  4. Circular Wait adalah proses saling tunggu dimana terdapat adanya proses saling meminta sumberdaya yang dimiliki oleh proses lain. Dengan kata lain disini ada sebuah rantai saling meminta sumberdaya. Saya akan illustrasikan hal ini seperti gambar berikut :
 
Pada suatu ketika ada 3 orang yang makan, orang pertama ingin mengambil nasi, tempe dan kerupuk. Orang kedua ingin mengambil nasi, ikan dan tempe, dan orang ketiga ingin mengambil nasi, ikan, tempe, dan krupuk. Disini mereka memiliki proses saling tunggu untuk menyelesaikan proses yang dia inginkan. Tentunya dari ketiga orang tersebut akan menunggu teman yang lebih dahulu mengambil makanan sampai temannya tersebut selesai mengambil. Begitupun teman yang di lebih dahulu mangambil harus melepas salah satu jenis makanan jika dia ingin mengambil makanan yang lain. Dari illustrasi ini sobat semua pasti sudah paham bagaimana circular wait itu dan cara mengatasinya.






Artikel Terkait:

Mohon untuk membaca Kebijakan Privasi sebelum mengambil data dari blog ini atau sebelum berkomentar.

Komentar

  1. izin copas materi SO

    BalasHapus
  2. silakan.. tapi inget cantumin referensinya :)
    terimakasih atas kunjungannya :)

    BalasHapus

Posting Komentar

Tolong berkomentar yang baik dan sopan