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.
0 komentar:
Posting Komentar