Pengertian dan macam-macam Deadlock.

Define Deadlock

Deadlock adalah suatu kondisi dua proses atau lebih yang tidak bisa menjalankan tugasnya karena saling menunggu resource yang digunakan oleh proses lain. Deadlock merupakan masalah yang biasanya terjadi ketika banyak proses yang membagi sebuah resource yang hanya boleh dirubah oleh satu proses saja dalam satu waktu. Di kehidupan nyata, deadlock dianalogikan sebagai dua antrian mobil yang akan menyeberangi jembatan. Dalam antrian tersebutantrian sebelah kiri menunggu antrian sebelah kanan untuk mengosongkan jembatan (resource), begitu juga dengan antrian kanan.

Cara Mengatasi Deadlock

Dalam mengatasi deadlock, ada beberapa cara yang bisa anda, yaitu:

  1. Mutual Exclusion , yaitu menjaga resource non shareable agar tidak melakukan proses secara simultan.
  2. Hold & Wait , yaitu apabila suatu proses meminta resource lain, maka proses tersebut harus melepaskan resource yang sedang digunakan.
  3.  No Preemption, yaitu saat sebuah proses meminta resource, sedangkan resource tersebut tidak tersedia, maka proses  yang sedang berlangsung harus melepaskan semua resource yang dibawanya.
  4. Circular Wait, yaitu memberi nomor pada setiap resource dan sebuah proses hanya bisa mengakses resource secara berurutan.

Mendeteksi Deadlock

Berikut Cara untuk mendeteksi deadlock:

  1. Menggagalkan semua proses yang deadlock.
  2. Membackup proses yang deadlock dan merestart semua proses tersebut.
  3. Menggagalkan proses yang deadlock secara berturut-turut hingga tidak ada proses yang deadlock.
  4. Menggagalkan pengalokasian resource-resource secara berturut-turut hingga tidak ada deadlock.

Metode Mengendalikan Deadlock

Setelah kita tahu cara bagaimana mendeteksi deadlock, kita harus tahu bagaimana metode mengendalikan deadlock. Berikut metode mengendalikan deadlock:

1. Menggunakan suatu protocol.

2. Mengijinkan sistem mengalami deadlock.

3. Mengabaikan semua permasalahan bersama-sama.

Deadlock Avoidence

Deadlock avoidence adalah merupakan cara untuk mencegah terjadinya deadlock dengan memberikan informasi tambahan yang berhubungan dengan resource-resource yang akan diminta.

Deadlock Avoidence sendiri ada beberapa macam, berikut macam-macam deadlock avoidence:

  1.  Safe State

    Merupakan suatu status aman dimana sistem bisa mengalokasikan resource untuk tiap-tiap proses dalam beberapa urutan dan masih dapat mencegah terjadinya deadlock.

Misalkan dimiliki 12 resource maka pada tabel diatas dapat dikatakan Safe State dengan urutan proses {p1,p0,p3}

 

2. Algoritma Resource – Allocation Graph

Jika suatu sistem resource-allocation dengan tiap-tiap tipe resource hanya memiliki satu anggota, maka deadlock avoidence dapat ditunjukan dengan resource-allocation graph.

 

Misalkan P2 butuh R2,  meskipun R2 sedang dalam keadaan bebas, namun P2 ini tidak dapat dialokasikan, maka akan terjadi siklus, hal ini akan mengakibatkan terjadinya Deadlock, dimana P1 butuh R2, dan P2 butuh R1.

.

3. Algoritma Banker

Adalah suatu metode untuk mengatasi deadlock yang dikemukakan oleh Dijkstra, algoritma ini disebut Banker karena memodelkan banker di sebuah kota kecil yang berhubungan dengan sekumpulan nasabah yang memohon kredit/pinjaman.

Algoritma Banker memiliki beberapa kelemahan di antaranya :

a. Proses-proses kebanyakan belum dapat mengetahui berapa jumlah resource maksimum yang dibutuhkan.

b. Jumlah proses tidak tetap, mulai dari  user login hingga logout.

c. Algoritma menghendaki untuk memberikan semua permintaan hingga waktu yang tak terbatas.

d. Algoritma mengehendaki client-server mengembalikan resource setelah batas waktu tertentu

4. Algoritma Safety

Algoritma Safety ini adalah untuk menentukan apakah sistem dalam safe state atau unsafe state. Penjelasan Algoritma ini adalah sebagai berikut :

a. Work dan Finish adalah vector dengan panjang m dan n.

Inisialisasi : Work = Available dan Finish[i] = false untuk i = 1,2, …, n.

b. Cari i yang memenuhi kondisi berikut :  

           (1) Finish [i] = false

           (2) Need ≤ Work 

           Jika tidak terdapat i ke langkah 4. 

c. Work = Work + Allocation (i)

         Finish[i] = true 

         Kembali ke langkah 2. 

d. Jika Finish [i] == true untuk semua i, maka sistem dalam state selamat.

5. Algoritma Resource-Request

Algoritma ini dipakai bankir untuk menentukan apakah peminjaman sumber daya disetujui atau tidak. Algoritma ini dieksekusi oleh sistem setiap terjadinya permintaan peminjaman atas sumber daya oleh proses.

Implementasi algoritma ini adalah dengan berpura-pura memberikan pinjaman kepada proses dan menganalisis keadaan setelah pinjaman (sumber daya dan proses yang tersisa) dengan Safety Algorithm. Apabila menghasilkan keadaan safe, maka pinjaman disetujui. Bila tidak, maka pinjaman diblokir atau ditunda

Demikian artikel tentang deadlock, semoga bisa bermanfaat buat kita semua. Saya mohon maaf apabila ada penulisan yang salah ataupun ada materi yang kurang. Apabila ada saran ataupun kritik bisa disampaikan di komentar yah.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *