2. Di dalam sistem operasi berarti suatu
kondisi di mana sekumpulan proses
tidak dapat berjalan kembali atau tidak
adanya komunikasi antar proses.
Definisi lainnya yaitu sekumpulan
proses yang terblok yang tiap proses
tersebut memegang sumber daya dan
menunggu
untuk mendapatkan sumber daya yang
dipegang oleh proses di dalam
kumpulan tersebut.
3. Ilustrasi
Deadlock
Penyebab utama terjadinya deadlock adalah
terbatasnya sumber daya yang akan
digunakan oleh proses-proses. Tiap proses
berkompetisi untuk memperebutkan sumber
daya yang ada. Jadi deadlock berhubungan
erat dengan tersedianya sumber daya dari
komputer.
Penyebab utama terjadinya deadlock
adalah terbatasnya sumber daya yang akan
digunakan oleh proses-proses. Tiap proses
berkompetisi untuk memperebutkan sumber
daya yang ada. Jadideadlock berhubungan
erat dengan tersedianya sumber daya dari
komputer.
5. Karakteristik Deadlock
Menurut Coffman(1971) ada empat kondisi yang
dapat menyebabkan terjadinya deadloock.
Keempat kondisi tersebut tidak dapat berdiri
sendiri, saling mendukung.
1. Mutual Eksklusif
hanya ada satu proses yang bisa menggunakan
sumber daya tersebut. Jika ada proses lain yang
meminta sumber daya tersebut, maka proses itu
harus menunggu sampai sumber daya dilepaskan.
2. Memegang dan Menunggu
proses yang meminta sumber daya sudah
memegang sumber daya lainnya (meminta
sumber daya tambahan).
6. 3. Tidak ada Preemption
sumber daya yang sudah dialokasikan
untuk sebuah proses tidak bisa diminta
oleh proses lain. Sumber daya hanya
bisa dilepaskan secara sukarela atau
setelah proses tersebut selesai
menggunakannya.
4. Circular Wait(menunggu berputar)
kondisi seperti rantai yaitu saling
menunggu smber daya yang dipakai
oleh proses yang menunggu sumber
daya tersebut.
7. Method untuk Menangani
Deadlock
Pada prinsipnya kita dapat menangani
deadlock
dengan beberapa cara:
1. Menggunakan protokol untuk
pencegahan atau penghindaran
deadlock, memastikan bahwa sistem
tidak akan memasuki kondisi deadlock.
2. Kita bisa mendeteksi terjadinya
deadlock lalu memperbaiki.
3. Kita juga bisa mengabaikan deadlock,
hal ini dilakukan pada sistem operasi
berbasis UNIX.
8. Untuk memastikan sistem tidak memasuki
deadlock, sistem dapat menggunakan
pencegahan deadlock atau penghindaran
deadlock. Penghindaran deadlock membutuhkan
informasi tentang sumber daya yang mana yang
akan suatu proses meminta dan berapa lama
akan digunakan. Dengan informasi tersebut
dapat diputuskan apakah suatu proses harus
menunggu atau tidak.
Hal ini disebabkan oleh keberadaan sumber
daya, apakah ia sedang digunakan oleh
proses lain atau tidak. Jika sebuah sistem tidak
memastikan deadlock akan terjadi, dan juga
tidak didukung dengan pendeteksian deadlock
serta pencegahannya, maka kita akan sampai
pada kondisi deadlock yang dapat berpengaruh
terhadap performance system karena sumber
daya
tidak dapat digunakan oleh proses sehingga
proses-proses yang lain juga terganggu.
10. Pencegahannya sebagai berikut:
1. Masalah Mutual Eksklusif
Kondisi ini tidak dapat dilarang, jika aksesnya
perlu bersifat spesial untuk satu proses,maka
hal ini harus didukung oleh kemampuan sistem
operasi. Jadi diusahakan agar tidak
menggunakan kondisi spesial tersebut
sehingga sedapat mungkin deadlock dapat
dihindari.
2. Masalah Kondisi Menunggu dan Memegang
Penanggulangan deadlock dari kondisi ini lebih
baik dan
menjanjikan, asalkan kita dapat memegang
sumber daya untuk menunggu sumber daya
lain, kita dapat mencegah deadlock. Caranya
ialah dengan meminta semua sumber daya
yang ia butuhkan sebelum
proses berjalan.
11. Tetapi masalahnya sebagian proses tidak mengetahui
keperluannya sebelum ia berjalan. Jadi untuk
mengatasi hal ini, kita dapat menggunakan algoritma
bankir. Sistem operasi atau sebuah protokol mengatur
hal ini. Hasil yang dapat terjadi adalah sumber daya
lebih harus dispesifikasikan dan kelaparan sumber
daya, atau proses yang membutuhkan sumber daya
yang banyak harus menunggu sekian lama untuk
mendapatkan sumber daya yang ia butuhkan.
3. Masalah tidak preemption
Hal ketiga ialah jangan sampai ada preemption pada
sumberv daya yang telah dialokasikan. Untuk
memastikan hal ini, kita dapat menggunakan protocol.
Jadi jika sebuah proses meminta sumber daya yang
tidak dapat ia penuhi saat itu juga, maka proses
mengalami preempted. Dengan kata lain ada sumber
daya
dilepaskan dan diberikan ke proses yang menunggu,
dan proses itu akan menunggu sampai kebutuhan
sumber dayanya dipenuhi.
12. Cara lain yaitu dengan mengecek apakah
sumber daya yang dicari proses tersedia atau
tidak. Jika ada maka langsung dialokasikan
tetapi jika tidak maka kita cek apakah ada
proses lain yang sedang menunggu sumber
daya juga. Jika ya maka kita ambil sumber
daya dari proses yang sedang menunggu
tersebut dan memberikan kepada proses
yang meminta sumber daya tersebut. Jika
tidak tersedia juga maka proses tersebut
harus menunggu. Dalam menunggu
beberapa dari sumber dayanya dapat saja
dipreempted jika ada proses yang
memintanya. Cara ini efektif untuk proses
yang menyimpan dalam memory atau
register.
13. 4. Masalah lingkaran tunggu
Masalah ini dapat ditangani oleh
sebuah protocol yang menjaga agar
sebuah proses tidak membuat
lingkaran sikus yang dapat
mengakibatkan deadlock dengan cara
memberikan penomoran kepada
sumber daya, dan bila suatu proses
meminta sumber daya lagi maka ia
hanya dapat meminta sumber daya
yang nomornya lebih tinggi dari yang
ia minta sebelumnya.
14. Rangkuman
Deadlock adalah suatu kondisi dimana
sekumpulan proses tidak dapat
berjalan kembali akibat kompetisi
memperebutkan sumber daya.