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