Minggu, 08 Januari 2012

Deadlock dan Cara Mengatasinya

Sungguh merupakan hal yang sangat tidak menyenangkan ketika kita harus berjumpa dengan deadlock, atau dalam bahasa sehari-hari biasa disebut “hang”. Kondisi saat komputer mengalami deadlock sangatlah menyita waktu dan pikiran. Tidak hanya itu saja, kondisi deadlock kadang mengakibatkan
beberapa data harus hilang karena belum tersimpan di memori.
Namun, apakah yang disebut dengan deadlock tersebut? Deadlock sendiri sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam sistem operasi adalah kebuntuan proses. Jadi deadlock merupakan suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut. Dengan kata lain setiap proses dalam set menunggu untuk sumber yang hanya dapat dikerjakan oleh proses lain dalam set yang sedang menunggu.

Sumber daya ini tidak habis dipakai oleh proses manapun.Tetapi setelah proses berakhir, sumber daya ini dikembalikan untuk dipakai oleh proses lain yang sebelumnya tidak kebagian sumber daya ini. Contohnya prosesor, kanal I/O, disk, semaphores. Contoh peran sumber daya jenis ini pada terjadinya deadlock ialah misalnya sebuah proses memakai disk A dan B, maka akan terjadi deadlock jika setiap proses sudah memiliki salah satu disk dan meminta disk yang lain. Masalah ini tidak hanya dirasakan oleh pemrogram tetapi oleh seorang yang merancang sebuah sistem operasi. Cara yang digunakan pada umumnya dengan cara memperhitungkan dahulu sumber daya yang digunakan oleh proses-proses yang akan menggunakan sumber daya tersebut. Contoh lain yang menyebabkan deadlock dari sumber yang dapat dipakai berulang-ulang ialah berkaitan dengan jumlah proses yang memakai memori utama.

Lalu, bagaimana dengan cara mengatasi deadlock ini. Saya sendiri masih mengandalkan cara klasik, yakni dengan mengombinasikan tombol ctrl,alt, dan del. Lalu meng-end proccess-kan ataupun dilakukan dengan membuka Terminal yang dilanjutkan dengan meng-kill proccess tersebut, proses-proses yang sedang ngadat tersebut. Namun ada beberapa hal lain yang dapat dilakukan, meskipun dari beberapa literatur yang saya baca menyatakan bahwa tidak ada suatu cara yang pasti untuk menanggulangi terjadinya deadlock ini saat kita memakai komputer. Cara-cara untuk menanggulangi tersebut adalah :

1.Mengabaikan masalah deadlock.

2.Mendeteksi dan memperbaiki

3.Penghindaran yang terus menerus dan pengalokasian yang baik dengan menggunakan protokol untuk memastikan sistem tidak pernah memasuki keadaan deadlock. Yaitu dengan deadlock avoidance sistem untuk mendata informasi tambahan tentang proses mana yang akan meminta dan menggunakan sumber daya.

4.Pencegahan yang secara struktur bertentangan dengan empat kondisi terjadinya deadlock dengan deadlock prevention sistem untuk memasti- kan bahwa salah satu kondisi yang penting tidak dapat menunggu.

Selanjutnya, ada langkah lain yang mungkin dapat dijadikan referensi cara mengatasi deadlock. Langkah tersebut adalah Strategi Ostrich. Pendekatan yang paling sederhana adalah dengan menggunakan strategi burung unta: masukkan kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat muncul berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama sekali tidak dapat diterima dan semua keadaan deadlock harus ditangani. Sementara menurut para ahli Teknik, jika komputer lebih sering mengalami kerusakkan disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada sistem operasi. Maka ongkos yang dibayar untuk melakukan penanganan deadlock sangatlah besar dan lebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX dan MINIX.

Kondisi yang hampir dapat dikatakan mirip dengan deadlock adalah livelock. Hanya saja livelock ini secara umum dapat dikatakan bahwa proses tidak berjalan. Livelock ini merupakan kasus khusus dalam source starvation. Kondisi yang dapat menggambarkan livelock ini adalah ketika dua orang bertemu di sebuah koridor yang sempit, dan masing-masing mencoba untuk bersikap sopan dengan menggerakkan badan ke samping untuk membiarkan lewat yang lain, tetapi mereka akhirnya bergoyang dari sisi ke sisi lain tanpa membuat kemajuan karena mereka berdua berulang kali pindah dengan cara yang sama pada waktu yang sama.

Livelock sendiri merupakan risiko dari beberapa algoritma yang mendeteksi dan memulihkan dari deadlock. Jika lebih dari satu proses mengambil tindakan, pendeteksian oleh algoritma berulang kali dapat memicu deadlock. Hal ini dapat dihindari dengan memastikan bahwa hanya satu proses (dipilih secara acak atau dengan prioritas) yang mengambil tindakan.

Sumber : http://syamsuhadi.web.ugm.ac.id/?p=277

0 komentar:

Posting Komentar