Deadlock adalah keadaan dimana dua atau lebih proses saling menunggu meminta resource untuk waktu yang tidak terbatas lamanya.
Penyebab terjadinya deadlock :
1. Mutual exclusion
Kondisi dimana hanya ada 1 proses pada satu waktu yang dapat menggunakan sumber daya.
2. Hold and wait
Kondisi dimana saat suatu proses sedang menggenggam (hold) sumber daya, proses tersebut menunggu (wait) sumber daya dari proses lain.
3. Non-preemption
Kondisi dimana sumber daya yang sedang digunakan oleh suatu proses tidak bisa sembarang diambil dari proses tersebut, melainkan harus dilepas sendirinya oleh proses tersebut.
4. Circular wait
Kondisi dimana terjadi saling menunggu antara beberapa proses sehingga membentuk waiting chain (circular). Setiap proses menunggu sumbe rdaya dari proses berikutnya yang sedang dipakai proses lain.
Metode penanganan deadlock :
- Mengabaikan terjadinya deadlock
Berpura-pura tidak ada masalah apapun (dikenal dengan Ostrich algorithm).
- Mendeteksi dan memperbaiki
Sistem mendeteksi jika terjadi deadlock, kemudian diadakan perbaikan adar sistem berjalan kembali.
- Menghindari deadlock
Sistem harus dapat mengenali apakah sumber daya itu dalam kondisi aman (tidak terkena deadlock)
atau tidak, setelah itu baru dialokasikan.
- Mencegah deadlock
1. Mencegah mutual exclusion
Dengan spooling sumber daya, yaitu dengan mengantrikan.
2. Mencegah hold and wait
Sistem harus menjamin bila suatu proses meminta sumber daya, maka proses tersebut tidak sedang memegang sumber daya lain.
3. Mencegah non-preemption
Membolehkan terjadinya preemption, sehingga tidak ada tunggu menunggu.
4. Mencegah circular wait
Dapat diputus dengan menentukan total kebutuhan terhadap semua tipe sumber daya yang ada. Penomoran global semua sumber daya.
No comments:
Post a Comment