1. Deadlock
Deadlock adalah suatu
kondisi dimana dua proses atau lebih saling menunggu
proses yang lain untuk melepaskan
resource yang sedang
dipakai. Karena beberapa proses itu saling menunggu, maka
tidak terjadi kemajuan dalam kerja proses-proses
tersebut.
Deadlock adalah masalah
yang biasa terjadi ketika banyak proses yang membagi
sebuah
resource yang hanya boleh
dirubah oleh satu proses saja dalam satu waktu. Di
kehidupan nyata,
deadlock dapat digambarkan
dalam gambar berikut.Pada gambar diatas,
dianalogikan
sebagai dua antrian mobil yang akan menyeberangi
jembatan. Dalam kasus diatas, antrian di sebelah kiri
menunggu antrian kanan untuk mengosongkan jembatan
(deadlockresource), begitu juga
dengan antrian kanan. Akhirnya tidak terjadi kemajuan
dalam kerja dua antrian tersebut.Misal ada proses A mempunyai
resource X, proses B
mempunyai
resource Y. Kemudian kedua
proses ini dijalankan bersama, proses A memerlukan
resource Y dan proses B
memerlukan
resource X, tetapi kedua
proses tidak akan memberikan
resource yang dimiliki
sebelum proses dirinya sendiri selesai dilakukan.
Sehingga akan terjadi tunggu-menunggu.
2. Starvation
Starvation adalah kondisi
yang biasanya terjadi setelah
deadlock. Proses yang
kekurangan resource (karena terjadi
deadlock) tidak akan
pernah mendapat
resource yang dibutuhkan
sehingga mengalami
starvation
(kelaparan).
Namun,
starvation juga bisa
terjadi tanpa
deadlock. Hal ini ketika
terdapat kesalahan dalam sistem sehingga terjadi
ketimpangan dalam pembagian
resouce. Satu proses
selalu mendapat
resource, sedangkan proses
yang lain tidak pernah mendapatkannya. Ilustrasi
starvation tanpa
deadlock di dunia nyata
dapat dilihat di bawah ini.Pada gambar diatas, pada antrian kanan terjadi
starvation karena
resource
(jembatan) selalu
dipakai oleh antrian kiri, dan antrian kanan tidak
mendapatkan giliran.
Penanganan Deadlock
Ada empat cara Menangani Terjadinya Suatu Deadlock antara lain:
1. Pengabaian. Maksud
dari pengabaian dari kata tersebut yaitu sistem mengabaikan terjadinya
deadlock dan berpura-pura tidak mengetahui jika deadlock telah terjadi.
Dalam penanganan dengan cara ini dikenal dengan istilah ostrich
algorithm. Pelaksanaan algoritma ini yaitu sistem tidak mendeteksi
adanya deadlock dan secara otomatis mematikan proses atau program yang
mengalami deadlock. Kebanyakan
sistem operasi yang ada mengadaptasi cara ini untuk menangani keadaan
deadlock. Cara penanganan dengan mengabaikan deadlock banyak digunakan
karena masalah deadlock tersebut jarang terjadi dan relatif rumit dan
kompleks untuk diselesaikan. Sehingga biasanya diabaikan oleh sistem
untuk kemudian diselesaikan masalahnya oleh user atau pengguna dengan
cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukan restart
terhadap komputer.
2. Pencegahan. Penanganan
ini dengan cara mencegah munculnya salah satu karakteristik deadlock.
Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada
sistem. Yang terutama memastikan agar sistem tidak akan pernah berada
pada kondisi deadlock.
3. Penghindaran. Menghindari
keadaan deadlock. Bagian yang perlu diperhatikan yaitu bahwa antara
pencegahan dan penghindaran adalah berbeda. Pencegahan lebih mengarah
kepada mencegah salah satu dari empat karakteristik terjadinya
deadlock, sehingga deadlock pun tidak terjadi. Sedangkan penghindaran
merupakan memprediksi apakah tindakan yang diambil oleh sistem, dalam
kaitannya dengan permintaan proses akan sumber daya, dapat
mengakibatkan terjadi deadlock.
4. Pendeteksian
dan Pemulihan. Pada sistem yang sedang berada pada kondisi deadlock,
tindakan yang harus diambil adalah tindakan yang bersifat represif.
Tindakan tersebut adalah dengan mendeteksi adanya deadlock, kemudian
memulihkan kembali sistem. Proses pendeteksian akan menghasilkan
informasi apakah sistem sedang deadlock atau tidak serta proses mana
yang mengalami deadlock.
Tidak ada komentar:
Posting Komentar