DEADLOCK
A. Definisi
Deadlock dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud
dalam sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu kondisi
dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses.
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. Dengan kata lain, Deadlock terjadi ketika proses menunggu sumber
daya untuk melakukan suatu kejadian tertentu yang tidak akan pernah terjadi.
28
Safe State
State dinyatakan safe state jika tidak deadlock dan terdapat cara untuk
memenuhi seluruh permintaan tanpa menghasilkan deadlock.
Unsafe State
State dinyatakan unsafe state jika tidak terdapat cara untuk memenuhi semua
permintaan yang tertunda dengan menjalankan proses-proses sesuai suatu
urutan.
Pada gambar "Graf dengan deadlock", terlihat bahwa ada perputaran yang
memungkinkan tejadinya deadlock dan semua sumber daya memiliki satu
instans kecuali sumber daya R2. Graf tersebut memiliki minimal dua
perputaran, yaitu:
1. R2 -> P0 -> R0 -> P1 -> R1 -> P2 -> R2
2. R2 -> P1 -> R1 -> P2 -> R2
29
Gambar “Graf Tanpa deadlock” memiliki perputaran tetapi deadlock tidak
terjadi. Pada gambar di atas, graf memiliki 1 perputaran yaitu: P0 –> R1 –> P2
–> R0 –> P3 –> R2 –> P0.
Graf di atas menunjukkan beberapa hal:
1. P0 meminta sumber daya R1.
2. R1 mengalokasikan sumber dayanya pada P2.
3. P2 meminta sumber daya R0.
4. R0 mengalokasikan sumber dayanya pada P3.
5. P3 meminta sumber daya R2.
6. R0 mengalokasikan sumber dayanya pada P3.
7. R1 mengalokasikan sumber dayanya pada P1.
Hal ini tidak menyebabkan deadlock walaupun ada perputaran sebab semua
sumber-daya yang diperlukan P1 dapat terpenuhi sehingga P1 dapat
melepaskan semua sumber-dayanya, yang kemudian dapat digunakan oleh
proses lain.
Melacak Kembali
Setelah melakukan beberapa langkah preemption, maka proses utama yang
diambil sumber dayanya akan berhenti dan tidak dapat melanjutkan
kegiatannya, oleh karena itu dibutuhkan langkah untuk kembali pada keadaan
aman dimana proses masih berjalan dan memulai proses lagi dari situ. Beberapa
sistem mencoba dengan cara mengadakan pengecekan beberapa kali secara
periodik dan menandai tempat terakhir kali menulis ke disk, sehingga saat
terjadi Deadlock dapat mulai dari tempat terakhir penandaannya berada.
30
sistem operasi. Namun, untuk beberapa sistem, kita juga dapat membunuh
beberapa proses saja dalam siklus Deadlock untuk menghindari Deadlock dan
mempersilahkan proses lainnya kembali berjalan. Atau dipilih salah satu korban
untuk melepaskan sumber dayanya, dengan cara ini maka masalah pemilihan
korban menjadi lebih selektif, sebab telah diperhitungkan beberapa
kemungkinan jika si proses harus melepaskan sumber dayanya.
31