DEADLOCK
Proses disebut deadlock,
jika proses menunggu suatu kejadian tertentu yang tak akan pernah terjadi.
Sekumpulan proses berkondisi deadlock,
jika setiap proses yang ada dikumpulan itu menunggu sesuatu kejadian yang hanya
dapat dilakukan proses lain yang juga berada di kumpulan itu. Proses menunggu
kejadian yang tak akan pernah terjadi.
Deadlock terjadi
ketika proses-proses mengakses secara ekslusif sumber daya. Semua deadlock yang terjadi melibatkan
persaingan memperoleh sumber daya ekslusif oleh dua proses atau lebih. Adanya deadlock akan mengakibatkan sistem
menjadi kacau.
Model Deadlock
Urutan kejadian pengoperasian perangkat I/O adalah :
- meminta / request : meminta palayanan I/O
- memakai / use : memakai perangkat I/O
- melepaskan / release : melepaskan pamakaian perangkat I/O
Model deadlock dua
proses dan dua sumber daya
Deadlock dapat
digambarkan sebagai graph.
Misalnya :
-
dua proses, P0 dan P1
-
dua sumber daya kritis, R0
dan R1
-
proses P0 dan P1
harus mengakses kedua sumber daya tersebut
kondisi berikut dapat terjadi :
-
R0 diberikan ke P0
(P0 meminta sumber daya R0), ditandai busur (edge) berarah dari proses P0
ke sumber daya R0
-
sedangkan sumber daya R1
dialokasikan ke P1, ditandai dengan busur (edge) berarah dari sumber daya R1 ke proses P1.
Skenario yang
menimbulkan deadlock
Dapat terjadi skenario sebagai berikut :
-
P0 dialokasikan R0
-
P1 dialokasikan R1
Kemudian,
-
P0 sambil masih menggenggam R0,
meminta R1
-
P1 sambil masih menggenggam R1,
meminta R0
Kejadian ini mengakibatkan deadlock karena sama-sama akan saling menunggu. Graph deadlock ini akan digambarkan
sebagai graph melingkar. Terjadinya deadlock ditandai munculnya / terjadinya
graph melingkar.
Karena untuk melanjutkan eksekusi memerlukan kedua sumber
daya sekaligus, maka kedua proses akan saling menunggu sumber daya lain
selamanya. Tak ada proses yang dapat melepaskan sumber daya yang telah
dipegangnya karena menunggu sumber daya lain yang tak pernah diperolehnya.
Kedua proses dalam kondisi deadlock,
tidak dapat membuat kemajuan apapun.
Deadlock tidak
hanya terjadi pada dua proses dan dua sumber daya, deadlock dapat terjadi dengan melibatkan lebih dari dua proses dan
dua sumber daya.
Syarat-syarat
terjadinya deadlock :
1.
Mutual
exclution condition
Tiap sumber daya saat itu
diberikan pada tepat satu proses.
2.
Hold and
wait condition / kondisi genggam dan tunggu
Proses-proses yang sedang
menggenggam sumber daya, menunggu sumber daya – sumber daya yang baru.
3.
Non-preemption
condition / kondisi non-preemption
Sumber daya – sumber daya yang
sebelumnya diberikan tidak dapat diambil paksa dari proses itu. Sumber daya –
sumber daya harus secara eksplisit dilepaskan dari proses yang menggenggamnya.
4.
Circular
wait condition / kondisi menunggu secara sirkular
Harus terdapat rantai sirkuler
dari dua proses atau lebih, masing-masing menunggu sumber daya yang digenggam
oleh anggota berikutnya pada rantai itu.
Ketiga syarat pertama merupakan syarat perlu bagi
terjadinya deadlock. Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi diatas, tidak
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 dari kondisi tidak terpenuhi maka deadlock tidak terjadi.
Metode-metode
mengatasi deadlock :
1.
deadlock
prevention / metode pencegahan
terjadinya deadlock
pengkondisian sistem agar
menghilangkan kemungkinan terjadinya deadlock.
Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock.
2.
deadlock
avoidance / metode penghindaran
terjadinya deadlock
menghindarkan kondisi yang paling
mungkin menimbulkan deadlock agar
memperoleh sumber daya lebih baik. Penghindaran bukan berarti menghilangkan
semua kemungkinan terjadinya deadlock.
Jika sistem operasi mengetahui bahwa alokasi sumber daya menimbulkan resiko deadlock, sistem menolak pengaksesan
itu. Dengan demikian menghindari terjadinya deadlock.
3.
deadlock
detection and recovery / metode
deteksi dan pemulihan dari deadlock
deteksi digunakan pada sistem
yang mengijinkan terjadinya deadlock,
dengan memeriksa apakah terjadi deadlock
dan menentukan proses dan sumber daya yang terlibat deadlock secara presisi. Begitu telah dapat ditentukan, sistem
dipulihkan dari deadlock dengan
metode pemulihan. Metode pemulihan dari deadlock sistem sehingga beroperasi
kembali, bebas dari deadlock. Proses yang terlibat deadlock mungkin dapat
menyelesaikan eksekusi dan membebaskan sumber dayanya.
Pencegahan deadlock
:
1.
tiap proses harus meminta semua sumber daya yang
diperlukan sekaligus dan tidak berlanjut sampai semuanya diberikan.
2.
Jika proses telah sedang memegang sumber daya
tertentu, untuk permintaan berikutnya proses harus melepas dulu sumber daya
yang dipegangnya. Jika diperlukan, proses meminta kembali sekaligus dengan
sumber daya yang baru.
3.
Beri pengurutan linier terhadap tipe-tipe sumber
daya pada semua proses, yaitu jika proses telah dialokasikan suatu tipe sumber
daya, proses hanya boleh berikutnya meminta sumber daya tipe pada urutan yang
berikutnya.
Saran pencegahan deadlock diatas merupakan cara meniadakan
salah satu dari syarat perlu. Syarat perlu pertama jelas tidak bisa ditiadakan,
kalau tidak menghendaki kekacauan hasil.
Penghindaran
deadlock
Adalah hanya memberi akses ke permintaan sumber daya yang
tidak mungkin menimbulkan deadlock.