Deadlock adalah suatu kondisi dimana dua proses atau lebih tidak dapat
meneruskan eksekusinya oleh pemroses. Pada umumnya deadlock terjadi
karena proses mengalami startvation, yaitu suatu job yang sedang
dieksekusi dan eksekusi job tersebut tidak ada hentinya, tidak
diketahui kapan berhentinya proses tersebut atau bahkan job yang antri
bisa dikatakan mempunyai status mati, padahal proses-proses lain sedang
menunggu sumber daya proses. Deadlock merupakan kondisi terparah karena banyak proses dapat terlibat
dan semuanya tidak dapat mengakhiri prosesnya secara benar.
Kondisi yang dapat menimbulkan terjadinya deadlock:
1. Mutual exclusion. Apabila proses telah menggunakan suatu resource,
mka tidak boleh ada proses lain yang menggunakan resource tsb. Hanya
satu proses yang dapat menggunakan sebuah resource pada satu waktu.
2. Hold & Wait. Pada suatu proses sedang mengakses suatu resource,
proses tsb dapat meminta ijin untuk mengakses resource lain yang
dipakai oleh proses lain.
3. No Preemption. Jika suatu proses meminta ijin untuk mengakses
resource, sementara resource tersebut tidak tersedia, maka permintaan
ijin tidak dapat dibatalkan.
4. Circular Wait Condition. Jika proses P0 sedang mengakses Resource R1
dan minta ijin untuk mengakses resource R1 dan minta ijin untuk
mengakses resource R2, dan pada saat yang bersamaan P1 sedang mengakses
resource R2 dan mint ijin untuk mengakses R1.
Pencegahan Deadlock
1. Mutual exclusion.
Harus tetap menjaga resource-resource yang bersifat non-shareable.
Yaitu, proses menahan sebuah resource, proses lain yang meminta
resource tsb harus menunggu sampai proses melepaskannya. Jika terjadi
pada perangkat I/O dan berkas, maka sulit untuk menghindari mutual
exclusion pada sumber daya non shareable.
2. Hold & Wait.
Apabila suatu proses minta ijin untuk mengakses suatu resource, maka
proses tersebut tidak boleh membawa resource yang lainnya. Sebleum
proses meminta resource, maka harus melepas semua resource yang dibawa.
3. Non Preemption.
Jika suatu proses minta ijin mengakses resource, sementara resource
tersebut tidak dapat dipenuhi secepatnya, maka proses tersebut harus
membebaskan semua resourcenya terlebih dahulu.
4. Circular Wait.
Memberi nomor pada setiap resource yang ada, dan setiap resource hanya boleh mengakses resource2 secara berurutan.
5. Untuk menghindari deadlock ikuti prinsip preemptive.
No comments:
Post a Comment