Deadlock
Deadlock adalah suatu kondisi dimana proses tidak berjalan
lagi atau puntidak ada komunikasi lagi antar proses. Deadlock juga dapat
dikatakan sebgai kebuntuan. maksudnya, kebuntuan proses
Penyebab Deadlock
Kondisi Mutual
Deadlock
-
hanya ada satu proses yang menggunakan suatu
sumber daya
-
proses lain yang juga ingin menggunakannya harus
menunggu hingga sumber daya tersebut dilepaskan oleh proses yang telah selesai
menggunakaannya.
Kondisi hold and wait
-
suatu proses yang memiliki minimal satu buah
sumber daya melakukan request lagi terhdap sumber daya. tetapi, sumber daya
yang dimintanya sedang dimilki oleh proses yang lain.
Kondisi non-preemptive.
-
Sebuah sumber daya hanya dapat dilepaskan oleh
proses yang memilikinya secara sukarela setelah ia selesai menggunakannya.
Kondisi circular wait.
-
Kondisi
seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang
dipegang proses berikutnya.
Penanggulangan
Deadlock
-
Mengabaikan masalah Deadlock (Algoritma
Ostrich)
Untuk menghadapi Deadlock menurut algoritma
ini adalah dengan berpura-pura bahwa tidak ada masalah apa pun.
-
Mendeteksi
dan memperbaiki.
Setelah diketahui sistem mana saja yang terlibat maka diadakan proses untuk
memperbaiki dan menjadikan sistem berjalan kembali.
-
Penghindaran yang terus menerus dan
pengalokasian yang baik dengan Deadlock avoidance.
a.
Jangan
memulai proses apa pun jika proses tersebut akan membawa kita pada kondisi Deadlock,
sehingga tidak mungkin terjadi Deadlock
karena ketika akan menuju
Deadlock sudah dicegah.
b.
Jangan
memberi kesempatan pada suatu proses untuk meminta sumber daya lagi jika
penambahan ini akan membawa kita
pada suatu keadaan Deadlock.
-
Pencegahan yang secara struktur Deadlock
prevention.
Mutual Exclusion
Kondisi sumber daya yang tidak dapat dibagi
(non-sharable). Jadi, pencegahan kondisi yang pertama ini sulit karena memang
sifat dasar dari sumber daya yang tidak dapat dibagi.
Hold and Wait
Sistem perlu memastikan bahwa setiap kali
proses meminta sumber daya, ia tidak sedang memiliki sumber daya lain. Atau
bisa dengan proses meminta dan mendapatkan sumber daya yang dimilikinya sebelum
melakukan eksekusi, sehingga tidak perlu menunggu
Non Preemption.
Proses akan mengulang kembali eksekusinya
setelah semua sumber daya yang dibutuhkan didapatkan.
STARVATION
Starvasion adalah sebuah kondisi dimana ada satu atau lebih
proses yang tidak pernah dieksekusi
karena tidak pernah mendapat jatah sumber daya.
Terdapat tiga proses, yaitu P1, P2 dan P3. Ketiga proses ini
memerlukan pengaksesan sumber daya R secara periodik
Skenario berikut terjadi :
-
P1 sedang diberi sumber daya R sedangkan P2 dan
P3 di-blocked menunggu sumber daya R.
-
Ketika
P1 keluar dari critical section, maka P2 dan P3 diijinkan mengakses R.
-
Asumsi P3 diberi hak akses, kemudian setelah
selesai, hak akses kembali diberikan ke P1 yang saat itu kembali membutuhkan
sumber daya R.
-
Jika pemberian hak akses bergantian
terus-menerus antara P1 dan P3, maka P2 tidak pernah memperoleh pengaksesan
sumber daya R.
-
Dalam kondisi ini memang tidak terjadi deadlock,
hanya saja P2 mengalami starvation
(tidak ada kesempatan
untuk dilayani).


Tidak ada komentar:
Posting Komentar