BAB
VII
DEADLOCK
Resource (Sumber Daya)
Ada 2 tipe resource,
yaitu :
1.
Preemptable resource
Resoource
yang dapat dibersihkan dari proses yang menggunakannya tanpa efek yang buruk.
Mudah
diatasi dengan cara realokasi resource dari satu proses ke yang lainnya.
2.
Nonpreemptable resource
Resoource
yang tidak dapat dibersihkan dari proses yang menggunakannya tanpa menyebabkan
komputer fail.
Proses
disebut deadlock, jika proses
menunggu suatu kejadian tertentu yang tak akan pernah terjadi atau kondisi
dimana 2 proses atau lebih tidak dapat meneruskan eksekusinya.
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.
Contoh :
P0 P1
Wait(S) Wait(Q)
Wait(Q) Wait(S)
. .
. .
. .
Signal(S) Signal(Q)
Signal(Q) Signal(S)
Pada langkah pertama,
kedua proses masih berjalan dengan baik. Pada langkah kedua, proses P0
meminta Q yang ternyata masih dibawa oleh P1 dan baru akan dilepas
setelah signal(Q), demikian pula P1 meminta S yang masih dibawa oleh
P0 dan baru akan dilepas setelah signal(S). Sehingga kondisi ini
akan menimbulkan deadlock.
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.
Startvation
terjadi ketika proses-proses menunggu alokasi sumberdaya sampai tak terhingga,
karena bisa pada kebijaksanaan / strategi alokasi sumberdaya, sementara
proses-proses lain dapat memperoleh alokasi sumberdaya.
Indefinite
postponement / indefinite blocking /
starvation :
Penundaan
penjadwalan sebuah proses selama tak terhingga sementara sistem mengadakan
alokasi sumber daya untuk proses yang lain. Penyebabnya adalah prioritas.
Cara mengatasinya
dengan “aging” yaitu prioritaas naik dengan bertambahnya waktu.
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 / proses meng-klaim
kontrol eksklusif terhadap sumber daya yang dibutuhkannya.
2.
Hold
and wait condition / kondisi genggam dan tunggu
Proses-proses
yang sedang menggenggam sumber daya yang telah dialokasikan untuknya sementara
menunggu sumber daya – sumber daya tambahan yang baru.
3.
Non-preemption condition / kondisi non-preemption
Sumber daya – sumber daya yang sebelumnya diberikan tidak
dapat diambil paksa dari proses sampai sumber daya tersebut digunakan sampai
selesai. Sumber daya – sumber daya harus secara eksplisit dilepaskan dari
proses yang menggenggamnya.
4.
Circular wait condition / kondisi menunggu secara sirkular
Harus terdapat rantai sirkuler / satu lingkaran proses
dari dua proses atau lebih dimana setiap proses memegang satu atau lebih sumber
daya yang diminta oleh proses berikutnya pada lingkaran tersebut, 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. Jika
mulainya satu atau lebih proses akan menyebabkan terjadinya deadlock, proses
tersebut tidak akan dimulai sama sekali.
-
tiap proses harus meminta resource yang
dibutuhkan sekaligus dan tidak bisa berjalan sampai semua di dapat (untuk “wait
for”)
-
jika ada resourcce yang tidak terpenuhi,
yang lainnya harus dilepas (untuk “no preemption”)
-
urutkan tipe-tipe resource secara linier
/ linier ordering (untuk “circular wait”)
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 / menghindari
pengaksesan itu. Dengan demikian menghindari terjadinya deadlock. Contohnya dengan menggunakan algoritma Banker yang
diciptakan oleh Dijkstra.
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.
Strategi Burung Onta
Strategi ini mengasumsikan kejadian deadlock jarang
terjadi jika dibandingkan dengan kejadian komputer crash. Strategi ini disebut
strategi burung onta karena kabar yang telah tersebar (yang sebenarnya tidak
benar) bahwa burung onta akan menyembunyikan kepalanya ke tanah bila mengetahui
adanya bahaya yang mengancamnya. Sehingga solusi yang dilakukan justru
sebenarnya tak memperdulikan adanya masalah.
Stategi ini sebenarnya berarta adalah sama sekali tidak berusaha
mengatasideadlock / tak ada metoda sama sekali untuk mengatasi masalah
deadlock.
Penghindaran deadlock
Adalah hanya memberi akses ke permintaan sumber daya yang
tidak mungkin menimbulkan deadlock.
0 komentar:
Posting Komentar