Langsung ke konten utama

DeadLock


Apa sih yang dimaksud dengan DeadLock???????

Sering kali kita menemui kejadian dimana komputer kita tiba-tiba berhenti mendadak entah karena apa. Kejadian ini dikenali sebagai kondisi komputer hang, atau dalam bahasa akademisi disebut sebagai deadlock.

Sebelum mengetahui lebih lanjut apasih deadlock itu, disini ada sebuah contoh :



Contohnya adalah terdapat satu jalur pada jalan. Mobil digambarkan sebagai proses yang sedang menuju sumber daya. Untuk mengatasi hal tersebut, beberapa mobil harus mundur.   


A. PENGERTIAN DEADLOCK


DEADLOCK Adalah Keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya




Proses 1 meminta resource 2 sedangkan resource 2 dipakai proses 2, namum proses 2 meminta resource 3 , dan resource 3 dipakai proses 3, dan proses 3 meminta resource ke resource 1.
Jadi dari gambar dapat disimpulkan Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut.

B.MODEL SISTEM
Pada sistem terdapat beberapa sumber daya (resource) yang digunakan dalam proses - proses untuk menyelesaikan permasalahan dan mencapai tujuan. Setiap proses yang menggunakan sumber daya menjalankan urutan operasi sebagai berikut :
• meminta (request) : meminta sumber daya 
• memakai (use) : memakai sumber daya
• melepaskan (release) : melepaskan sumber daya 


C.PENYEBAB DEADLOCK

1.Mutual Exclusion
2.Hold and Wait
3.Circular Waiting
4.No Preemption

Deadlock terjadi bila terdapat empat kondisi berikut ini secara simultan.
 1. Mutual Exclusion : hanya satu proses pada satu waktu yang dapat menggunakan sumber daya. 
2. Genggam dan Tunggu (Hold and Wait) : suatu proses membawa sedikitnya satu sumber daya menunggu mendapatkan tambahan sumber daya baru yang dibawa oleh proses 
3. Non-Preemption : sebuah sumber daya dapat dibebaskan dengan sukarela oleh proses yang memegangnya setelah proses menyelesaikan task. 
4. Menunggu Secara Sirkuler (Circular Wait) : Terdapat sekumpulan proses {P0, P1, …, P0} yang menunggu sumber daya dimana P0 menunggu sumber daya yang dibawa P1, P1 menunggu sumber daya yang dibawa P2, dan seterusnya, Pn–1 menunggu sumber daya yang dibawa oleh Pn, dan Pn menunggu sumber daya yang dibawa P0

. Ketiga syarat pertama merupakan syarat perlu (necessary conditions) bagi terjadinya deadlock. Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi di atas, tak mungkin terjadi deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi berarti terdapat ketiga kondisi itu, tetapi adanya ketiga kondisi itu belum berarti terjadi deadlock. Deadlock baru benar-benar terjadi bila syarat keempat terpenuhi. Kondisi keempat merupakan keharusan bagi terjadinya peristiwa deadlock. Bila salah satu saja dari kondisi tidak terpenuhi maka deadlock tidak terjadi. 

D.Graf Alokasi Sumber Daya

Deadlock dapat digambarkan dengan menggunakan graf berarah yang disebut resource allocation graph

 Notasi-notasi yang digunakan pada resource allocation graph adalah





gambar 1.
Himpunan 
P, R dan E : 
o P = {P1, P2, P3}
 o R = {R1, R2, R3, R4} 
o E = {P1 → R1, P2 → R3, R1 → P2, R2 → P2, R2 → P1, R3 → P3}

 Anggota sumber daya : o Satu anggota dari tipe sumber daya R1. 
o Dua anggota dari tipe sumber daya R2. 
o Satu anggota dari tipe sumber daya R3.
 o Tiga anggota dari tipe sumber daya R4.

 Status proses :
 o Proses P1 membawa satu anggota tipe sumber daya R2 dan menunggu satu anggota tipe sumber daya R1. 
o Proses P2 membawa satu anggota R1 dan R2 dan menunggu satu anggota tipe sumber daya R3.
 o Proses P3 membawa satu anggota R3.  

Fakta dasar dari resource allocation graph menunjukkan bahwa :
 • Apabila pada graph tidak terdapat siklus maka tidak ada proses dalam sistem yang deadlock
 • Apabila pada graph terdapat siklus sistem kemungkinan deadlock dengan ketentuan: 
o Jika pada setiap tipe sumber daya hanya terdapat satu anggota maka terjadi deadlock 
o Jika pada setiap tipe sumber daya terdapat beberapa anggota maka kemungkinan terjadi deadlock 

gambar 2 :
proses P3 meminta satu anggota dari tipe sumber daya R2. Karena tidak tersedia anggota tipe sumber daya tersebut, request edge P3 → R2 ditambahkan ke graph seperti pada. Pada kasus ini, terdapat dua siklus pada sistem, yaitu : 
P1 → R1 → P2 → R3 → P3 → R2 → P1 
P2 → R3 → P3 → R2 → P2
 Proses P1, P2 dan P3 terjadi deadlock. Proses P2 menunggu sumber daya R3 yang dibawa proses P3. Proses P3 sebaliknya menunggu proses P1 atau P2 melepas sumber daya R2. Proses P1 menunggu proses P2 melepas sumber daya R1

gambar 3:
P1 → R1 → P3 → R3 → P1 Akan tetapi pada sistem tidak terjadi deadlock. Terlihat bahwa proses P4 kemungkinan melepas tipe sumber daya R2. Sumber daya tersebut kemudian dapat dialokasikan untuk P3 dan akan menghapus siklus.

E.METODE MENANGANI DEADLOCK
Prevention(Pencegahan) : Menggunakan protocol untuk menjamin bahwa sistem tidak pernah memasuki status deadlock.
Avoidance( menghindari) : sistem menolak request terhadap resource yang berpotensi deadlock, Algoritma Banker
Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya, kemudian melakukan recovery, Algoritma Ostrich

F.MENCEGAH DEADLOCK


1.. Mencegah Mutual Exclusion
Mutual exclusion adalah hal yang tidak dapat dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersama-sama.
2. Mencegah Hold and Wait 
Pencegahan menggunakan hold and wait adalah sistem harus menjamin bila suatu proses meminta sumber daya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan semua sumber daya yang diperlukan dialokasikan sebelum proses memulai eksekusi atau mengizinkan proses meminta sumber daya hanya jika proses tidak membawa sumber daya lain. Model ini mempunyai utilitas sumber daya yang rendah dan kemungkinan terjadi starvation jika proses membutuhkan sumber daya yang popular sehingga terjadi keadaan menunggu yang tidak terbatas karena setidaknya satu dari sumber daya yang dibutuhkannya dialokasikan untuk proses yang lain
3.mencegah non premption atau  Peniadaan non - preemption
mencegah proses - proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu - menunggu. 
Cara mencegah kondisi non - preemption 
: o Jika suatu proses yang membawa beberapa sumber daya meminta sumber daya lain yang tidak dapat segera dipenuhi untuk dialokasikan pada proses tersebut, maka semua sumber daya yang sedang dibawa proses tersebut harus dibebaskan.
 o Proses yang sedang dalam keadaan menunggu, sumber daya yang dibawanya ditunda dan ditambahkan pada daftar sumber daya
. o Proses akan di restart hanya jika dapat memperoleh sumber daya yang lama dan sumber daya baru yang diminta.
4. mencegah menunggu sirkular(circular wait)
Mencegah Kondisi Menunggu Sirkular Sistem mempunyai total permintaan global untuk semua tipe sumber daya. Proses dapat meminta proses kapanpun diinginkan, tetapi permintaan harus dibuat terurut secara numerik. Setiap proses yang membutuhkan sumber daya dan memintanya maka nomor urut akan dinaikkan. Cara ini tidak akan menimbulkan siklus. Masalah yang timbul adalah tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak.

G.MENGHINDARI DEADLOCK 
Metode alternatif untuk menghindari deadlock adalah menggunakan informasi tambahan tentang bagaimana sumber daya diminta.
Misalnya, pada sistem dengan satu tape drive dan satu printer,
proses P pertama meminta tape drive dan kemudian printer sebelum melepaskan kedua sumber daya tersebut. Sebaliknya proses Q pertama meminta printer kemudian tape drive.
 Dengan mengetahui urutan permintaan dan pelepasan sumber daya untuk setiap proses, dapat diputuskan bahwa untuk setiap permintaan apakah proses harus menunggu atau tidak. Setiap permintaan ke sistem harus dipertimbangkan apakah sumber daya tersedia, sumber daya sedang dialokasikan untuk proses dan permintaan kemudian serta pelepasan oleh proses untuk menentukan apakah permintaan dapat dipenuhi atau harus menunggu untuk menghindari deadlock.

Model yang sederhana dan sangat penting dibutuhkan adalah setiap proses menentukan jumlah maksimum sumber daya dari setiap tipe yang mungkin diperlukan. Algoritma deadlock avoidance secara dinamis memeriksa status sumber daya yang dialokasikan untuk menjamin tidak pernah terjadi kondisi menunggu sirkular. Status alokasi sumber daya ditentukan oleh jumlah sumber daya yang tersedia dan yang dialokasikan dan maksimum permintaan oleh proses - proses.

Untuk penghindaran deadlock diperlukan pengertian mengenai state selamat (safe state) dan state tak selamat (unsafe state).  

G.1 . State Selamat (Safe State) 
Ketika suatu proses meminta sumber daya yang tersedia, sistem harus menentukan apakah alokasi sumber daya pada proses mengakibatkan sistem dalam stafe state. Sistem dikatakan dalam safe state jika sistem dapat mengalokasikan sumber daya untuk setiap proses secara berurutan dan menghindari deadlock. Urutan proses selamat jika untuk setiap Pi, sumber daya yang masih diminta Pi masih memenuhi sumber daya yang tersedia dan sumber daya yang dibawa oleh setiap Pj, dimana j < i. Jika sumber daya yang diperlukan Pi tidak dapat segera disediakan, maka Pi dapat menunggu sampai semua Pj selesai. Ketika Pj selesai, Pi dapat memperoleh sumber daya yang diperlukan, mengeksekusi, mengembalikan sumber daya yang dialokasikan dan terminasi. Ketika Pi selesai, Pi +1 dapat memperoleh sumber daya yang diperlukan dan seterusnya. Jika sistem dalam safestate maka tidak terjadi deadlock, sedangkan jika sistem dalam state tidak selamat (unsafe state) maka kemungkinan terjadi deadlock seperti Gambar
enentukan aman atau tidak amannya alokasi proses ditentukan untuk menghindari terjadinya deadlock. Safe state diartikan dengan banyaknya sumberdaya yang sudah dialokasikan terhadap masing-masing proses. Sedangkan Unsafe state diartikan sebagai banyaknya sumberdaya yang belum dialokasikan kepada masing-masing proses, sehingga masih ada sumberdaya yang digunakan oleh beberapa proses. Contohnya yaitu:

Terdapat sumberdaya atau R=10
Tentukan pengalokasian agar tidak terjadi deadlock!
dengan sisa Resource yang ada yaitu 10-6=4


Jawab:

Yang pertama R akan dialokasikan ke A. Sehingga akan mendapat hasil seperti berikut: 
Sisa 10-10=0 (tidak ada sisa sumberdaya yang dapat digunakan) 
Dari pengalokasian diatas, ternyata mendapatkan hasil unsafe, jadi artinya terjadi deadlock apabila proses A dialokasikan pertama. Dimana proses A tidak pernah selesai untuk diproses dan proses B&C menunggu terus menerus. Maka dengan itu, kita akan mencari proses lain, yang akan di proses lebih awal sehingga tidak terjadi deadlock.



Melihat hal di atas, kemudian merubah susunan pengalokasian proses, dimana yang dialokasikan pertama adalah proses B. Pada awal siklus akan diperoleh hasil seperti berikut:

Sisa 10-8=2
Diakhir siklus akan diperoleh hasil seperti berikut:

Sisa 10-5=5 (terdapat 5 sumberdaya yang bisa digunakan/safe state) 
Setelah pengalokasian ke proses B, akan dilanjutkan ke pengalokasian ke proses C. Dimana diawal proses akan diperoleh hasil seperti berikut: 

Sisa 10-9=1
Diakhir siklus akan diperoleh hasil seperti berikut: 

Sisa 10-2=8 (terdapat 8 sumberdaya yang bisa digunakan/ safe state) 
Dan yang terakhir, pengalokasian dilakukan ke proses A. Sehingga di awal siklus didapat hasil seperti berikut: 

Sisa 10-10=0
Diakhir siklus akan diperoleh hasil seperti berikut:

Sisa 10-0=10 (Terdapat 10 sumberdaya yang bisa digunakan dan sekaligus tidak ada proses yang akan diproses lagi). Dengan ini tidak terjadi deadlock.



H.Resource Allocation graph Algoritma
Algoritma RAG
• Request edge: Pi -> Rj
• Assignment edge: Rj -> Pi
• Claim edge: Pi-->Rj,  proses Pi boleh meminta resource Rj suatu saat di masa depan Pada saat dibutuhkan claim edge, dikonversikan menjadi request edge • Jika suatu resource dilepas, maka assigment edge dikonversikan menjadi claim edge • Claim Pi--> Rj boleh ditambahkan pada graph jika semua edge yang berhubungan dengan Pi berupa claim edge

Untuk menghindari deadlock pada sistem yang hanya mempunyai satu anggota untuk setiap tipe sumber daya, dapat digunakan algoritma resource allocation graph.
#Claim edge Pi → Rj menandakan bahwa proses Pi mungkin meminta sumber daya Rj yang direpresentasikan dengan garis putus-putus. Claim edge akan berubah ke request edge bila proses meminta sumber daya. Bila sumber daya dibebaskan oleh proses, assignment edge diubah ke claim edge. Sumber daya sebelumnya harus diklaim pada sistem. Sehingga sebelum proses Pi mulai dieksekusi, semua claim edge harus muncul pada resource allocation graph.

Misalnya,

 proses Pi meminta sumber daya Rj. Permintaan dapat dipenuhi hanya jika mengubah request edge Pi → Rj ke assignment edge Rj → Pi tidak menyebabkan siklus pada graf. Jika tidak terdapat siklus, maka alokasi sumber daya menyebabkan sistem dalam safestate Jika terjadi siklus, maka alokasi akan membawa sistem pada state tak selamat. Sehingga proses Pi harus menunggu permintaan dipenuhi. 







gambar kanan. Misalnya P2 meminta R2. Meskipun R2 bebas, tetapi tidak dapat dialokasikan untuk P2, karena akan menyebabkan siklus pada graf (Gambar kanan). Siklus menandakan sistem dalam state tak selamat (unsafe state). Jika P1 meminta R2 dan P2 meminta R1, maka terjadi deadlock.  






I.Algoritma Banker  

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. Atau dapat dianalogikan seperti berikut :
  • Sistem Operasi diibaratkan sebagai Bank.
  • Resource diibaratkan sebagai uang.
  • Proses diibaratkan sebagai nasabah.

Cara kerja algoritma Banker adalah dengan mempertimbangkan permintaan pinjaman yang diajukan oleh nasabah tersebut sesuai dengan uang yang dimiliki oleh bank, sekaligus mempertimbangkan jumlah pinjaman yang akan diajukan lagi oleh nasabah tersebut atau nasabah yang lainnya.  Setiap nasabah memiliki batas kredit dan apabila nasabah telah mencapai batas kredit pinjaman, maka diasumsikan bahwa nasabah tersebut telah menyelesaikan bisnisnya dan dapat mengembalikan pinjamannya kepada bank. Jangan sampai dana yang ada pada bank habis dan tidak dapat melakuakn pinjaman lagi.

Bank tersebut berperan untuk menentukan apakah nasabah tersebut layak mendapatkan pinjaman yang diajukan atau tidak agar tidak terjadi kredit macet (atau dalam Sistem Operasi dikenal dengan deadlock). Dan apabila nasabah yang dalam pengembalian pinjamannya selalu telat secara berulang ditolak, sampai permintaan dap dipenuhi.

-Jika suatu proses mendapatkan semua sumber daya maka proses harus mengembalikan semua sumber daya dalam jangka waktu tertentu. Struktur data yang digunakan untuk mengimplementasikan algoritma Banker akan menentukan state dari sumber daya yang dialokasikan oleh sistem. Misalnya, n = jumlah proses dan m = jumlah tipe resource. Struktur data yang diperlukan :


• Available : Vektor panjang m. 
Jika Available[j] = k, terdapat k anggota tipe sumber daya Rj yang tersedia. 
• Max : matrik n x m. 
Jika Max[i, j] = k, maka proses Pi meminta paling banyak k anggota tipe resource Rj.
 • Allocation : matriks n x m. 
Jika Allocation[i, j] = k maka Pi sedang dialokasikan k anggota tipe resource Rj. 
• Need : matriks n x m. 
Jika Need[i, j] = k, maka Pi membutuhkan k anggota tipe resource Rj untuk menyelesaikan tugas bagiannya. Need[i, j] = Max[i, j] – Allocation[i, j].

I.1Algoritma safety
 Algoritma ini untuk menentukan apakah sistem berada dalam state selamat atau tidak. 
1. Work dan Finish adalah vektor dengan panjang m dan n.
 Inisialisasi : Work = Available dan Finish [i] = false untuk i = 1,3, …, n.
 2. Cari i yang memenuhi kondisi berikut : (a) Finish [i] = false (b) Need [i] ≤ Work Jika tidak terdapat i ke langkah 4. 
3. Work = Work + Allocation [i] Finish[i] = true Kembali ke langkah 2. 
4. Jika Finish [i] = true untuk semua i, maka sistem dalam state selamat. 




Contoh Penggunaan Algoritma Banker
Diketahui sistem terdapat 5 proses yaitu P0 sampai P4, 3 tipe sumber daya yaitu A (10 anggota), B (5 anggota) dan C (7 anggota). Perhatikan gambaran sistem pada waktu T0.

                                                                              (work)
Proses        Allocation             Max               Available  ( Resource -  Jumlah Alloc)
                      A    B    C         A   B   C            A      B    C
P0                0      1    0          7    5    3            3      3     2 
P1                 2      0   0          3    2   2              
P2                 3     0   2           9   0    2
P3                 2     1   1             2    2   2
P4                0     0    2           4   3    3
            --------------------+
                    7      2    5


Need ( Max - Alloc )
A    B    C
7     4    3
1     2    2
6     0   0
0     1    1
4     3   1

if , Need < = Available = Avilable + Alloc

P0 , 743 <= 332   X
P1, 122 <= 332 (Benar)
Available = Available + Alloc
                    332 + 200
                    532

P2 , 600 < = 532   X
P3 , 011 <= 532 (Benar) 
Available = Available + Alloc
                      = 532 + 311
                    = 743
P4. 431 < = 743 (Benar)

Available = Available + Alloc
                = 743 + 002
                = 745

P0. 743 <= 745 ( Benar)
Available = Available + Alloc
                = 745 + 010
                = 755
P2. 600 <= 755 (Benar) 
Available = Available + Alloc
                = 755 + 302
                = 10 5 7


Safe sequence < P1,P3,P4,P0,P2>

J.Algoritma Resource-Request Request
 Algoritma Resource-Request Reques tmerupakan vektor permintaan untuk proses Pi. 
Jika Requesti[j]=k, maka proses Pi menginginkan k instasi sumber daya Rj. Ketika permintaan sumber daya dibuat oleh proses Pi, beberapa aksi berikut diikutsertakan:
1. Jika Requesti ≤ Need, ke langkah 2. Selain itu berikan status kondisi error, karena melebihi batas maksimal kebutuhan.
2. Jika Requesti ≤ Available, ke langkah 3. Selain itu, Pi harus menunggu, karena sumber daya belum tersedia.
3. Sistem menganggap telah mengalokasikan sumber daya yang dibutuhkan untuk proses Pi, dengan memodifikasi status sebagai berikut:


Available = available-Requesti;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;

Jika hasil pengalokasian sumber daya dengan status aman, transaksi telah selesai dan proses Pi mengalokasikan sumber daya tersebut.
Namun jika status tidak aman, maka Pi harus menunggu selama Requesti dan sumber daya telah dikembalikan. Contoh ilustrasi, anggap sistem mempunyai lima proses P0 sampai P4 dan tiga tipe sumber daya A, B dan C. Sumber daya tipe A mempunyai 10 instansim tipe B mempunyai 5 instansi dan C mempunyai 7 instansi. Seandainya pada waktu T0, sistem mempunyai status:
                        Allocation                  Max               Available                       
  Proses         A    B    C                  A    B   C           A      B      C             
P0                  0    1     0                  7   5     3            3       3       2
P1                  2    0     0                  3   2     2
P2                  3     0    2                  9  0      2
P3                  2     1    1                  2   2     2
P4                  0     0     2                 4   3     3

 Matriks Need didefinsikan dari Max-Allocation, yaitu:
 Need
  Proses      A B C
P0               7 4 3
P1               1 2 2
P2                6 0 0
 P3               0 1 1
P4            4 3 1
Dari perhitungan di atas sistem dalam keadaan aman.
Anggap sekarang proses P1 meminta satu tambahan instansi sumber daya tipe A dan dua instansi tipe C,

jadi Request
1 = (1,0,2).
Untuk memutuskan permintaan mana yang dapat secara langsung dipenuhi,
 pertama periksa apakah Request1 ≤ Available (yaitu, (1,0,2) ≤ (3,3,2)), bernilai TRUE.
 Kemudian anggap permintaan ini dipenuhi, dan status yang baru adalah:

                       Allocation            Need            Available
Proses            A   B   C            A   B  C            A   B   C
 P0                  0   1    0             7   4   3             2   3   0
P1                   3   0    2             0   2  0
P2                   3   0    2             6   0  0
P3                   2   1    1             0   1  1
P4                   0   0    2             4   3  1

Kita harus menentukan apakah status sistem aman(safe state). Untuk melakukannya kita eksekusi algoritma safety dan cari rangkaian memenuhi keadaan aman. 
Seandainya proses P4 meminta sumber daya (3,3,0) tidak akan terpenuhi karena sumber daya tidak tersedia, sedangkan permintaan P0 (0,2,0) juga tidak dapat dipenuhi walaupun sumber daya tersedia, karena hasil status dalam keadaan tidak aman.

K.MENDETEKSI DEADLOCK
Jika sistem tidak menyediakan algoritma , mencegah deadlock dan menghindari deadlock, maka terjadi deadlock. Pada lingkungan ini sistem harus menyediakan:
 • Algoritma yang menguji state sistem untuk menentukan apakah deadlock telah terjadi.
• Algoritma untuk memperbaiki dari deadlock. 

K.1Satu Anggota untuk Setiap Tipe Sumber Daya 
Jika semua sumber daya hanya mempunyai satu anggota, kita dapat menentukan algoritma mendeteksi deadlock menggunakan bentuk resource allocation graph yang disebut wait-for graph. Garis dari Pi → Pj pada wait-for graph menandakan bahwa proses Pi menunggu Pj melepaskan sumber daya yang dibutuhkan Pi. Garis Pi → Pj terdapat pada wait-for graph jika dan anya jika resource allocation graph berisi dua garis Pi → Rq dan Rq → Pj untuk beberapa sumber daya Rq seperti Gambar dibawah




K.2Beberapa Anggota untuk Setiap Tipe Sumber Daya
Untuk tipe sumber daya yang mempunyai beberapa anggota digunakan algoritma yang sejenis dengan algoritma Banker

K.3Penggunaan Algoritma Deteksi 
Untuk menjawab kapan dan berapa sering menggunakan algoritma deteksi, hal ini tergantung pada :
 • Seberapa sering terjadi deadlock. 
• Berapa proses yang perlu dilakukan roll back. 
Jika algoritma deteksi digunakan, terdapat beberapa siklus pada graf, hal ini tidak dapat mengetahui berapa proses yang deadlock yang menyebabkan deadlock

L.PERBAIKAN DEADLOCK

Terdapat dua pilihan untuk membebaskan deadlock. Satu solusi sederhana adalah dengan menghentikan satu atau beberapa proses untuk membebaskan kondisi menunggu sirkular. Pilihan kedua adalah menunda beberapa sumber daya dari satu atau lebih proses yang deadlock.

L.1Terminasi Proses
Untuk memperbaiki deadlock dengan terminasi proses, dapat digunakan salah satu dari dua metode di bawah ini 
: • Menghentikan (abort) semua proses yang deadlock
 • Menghentikan satu proses setiap waktu sampai siklus deadlock hilang.

L.2 Menunda Sumber Daya
Menunda Sumber Daya Untuk menghilangkan deadlock dengan menunda sumber daya, sumber daya dari proses harus ditunda dan memberikan sumber daya tersebut ke proses lain sampai siklus deadlock hilang. Jika penundaan dibutuhkan untuk menghilangkan deadlock, 

terdapat tiga hal yang perlu diperhatikan : 
• Pilihlah korban (sumber daya) yang mempunyai biaya minimal.

 • Lakukan rollback yaitu memulai kembali (restart) proses pada state yang selamat

. • Harus dijamin starvation tidak akan terjadi karena kemungkinan beberapa proses selalu terpilih sebagai korban termasuk jumlah rollback sebagai faktor biaya.


M.METODE KOMBINASI MENANGANI DEADLOCK 

Untuk menangani deadlock dilakukan kombinasi dari tiga algoritma dasar yaitu mencegah deadlock, menghindari deadlock dan mendeteksi deadlock. Kombinasi ketiga algoritma ini memungkinkan penggunaan yang optimal untuk setiap sumber daya pada sistem. 


KESIMPULAN

 Deadlock adalah keadaan pada proses yang berhenti akibat keadaan saling menunggu.

 Deadlock terjadi karena mutual exclusion, hold and wait, non – preemption, menunggu secara sirkuler. Masalah ini dapat diselesaikan dengan metode pencegahan, metode menghindari, metode Ostrich. Jika sistem tidak menyediakan algoritma mencegah ataupun meghindari deadlock, maka deadlock harus dideteksi dan diperbaiki. Tantangan pada distribusi data adalah menghindari masalah deadlock, dimana banyak klien mengakses data secara bersamaan dan data harus tetap konsisten (konkurensi).  





Semoga Bermanfaat ^^




Sumber :

Komentar