DEADLOCK = kompi loe nge-HANG tuh.. oleh: Arif Masmawi mahasiswa S1 Elektronika & Instrumentasi 2007 Universitas Gadjah Mada arifmasmawi.web.ugm.ac.id | [email protected] 1. Pendahuluan Sering kali kita menemui kejadian dimana komputer kita tiba-tiba berhenti mendadak entah karena apa. Kejadian ini dikenali sebagai kondisi komputer hang, atau dalam bahasa akademisi disebut sebagai deadlock. Deadlock berarti terkunci mati, atau suatu posisi dua/lebih objek yang saling terikat, terkunci, dan hampir tidak dapat diuraikan kembali. Dalam dunia komputerisasi, deadlock adalah suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antarproses di dalam sistem operasi. 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. [1] 2. Penyebab Deadlock Menurut Coffman (1971) ada empat kondisi yang dapat mengakibatkan terjadinya deadlock, yaitu: 2.1. Mutual Eksklusif hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada proses yang memakai sumber daya tersebut. 2.2. Memegang dan menunggu proses yang sedang memakai sumber daya boleh meminta sumber daya lagi maksudnya menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proses lain, hal ini dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat sumber daya dalam waktu yang lama 2.3 Tidak ada Preemption sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya. Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebih dahulu oleh proses yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya proses yang memiliki sumber daya yang boleh berjalan 2.4. Circular Wait kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya [2] 3. Ilustrasi deadlock dalam kehidupan sehari-hari 3.1 Deadlock pada jembatan Kendaraan dari sebelah kiri tidak dapat maju karena terhalang oleh kendaraan di depannya, tetapi juga tidak dapat mundur karena terhalang kendaraan dibelakang yang menunggunya. Begitu juga terjadi pada kendaraan di sebelah kanan. Kondisi ini hampir tidak mungkin terurai, sehingga disebut sebagai dedlock. 3.2 Deadlock circular pada persimpangan jalan Keempat arah kendaraan terhalang oleh kendaraan yang lain dan terjadi saling menunggu. Kondisi ini merupakan deadlock circular. 4. Deadlock pada sistem operasi Misalkan pada suatu komputer terdapat dua buah program, sebuah tape drive dan sebuah printer. Program A mengontrol tape drive, sementara program B mengontrol printer. Setelah beberapa saat, program A meminta printer, tapi printer masih digunakan. Berikutnya, B meminta tape drive, sedangkan A masih mengontrol tape drive. Dua program tersebut memegang kontrol terhadap sumber daya yang dibutuhkan oleh program yang lain. Tidak ada yang dapat melanjutkan proses masing-masing sampai program yang lain memberikan sumber dayanya, tetapi tidak ada yang mengalah. Kondisi inilah yang disebut Deadlock atau pada beberapa buku disebut Deadly Embrace Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan oleh proses lain dalam himpunan tersebut. 4.1 Ilustrasi deadlock pada sistem 4.1.1 Non-deadlock Pada gambar dia atas, tidak terjadi deadlock karena resource 1 dan 2 dapat menangani dua permintaan proses, sehingga apabila proses 3 dan 4 selesai dikerjakan, maka proses 1 dan 2 akan dapat berjalan secara normal. 4.1.2 Deadlock Deadlock terjadi karena resource 1 dan 2 hanya dapat menangani satu proses, sehingga terbentuk rangkaian melingkar yang saling menunggu. 5. Mengatasi deadlock Ada beberapa cara untuk mengatasi deadlock yang terjadi pada sistemoperasi, antara lain dengan cara sebagai berikut. [2] 5.1 Mengabaikan Masalah deadlock Metode ini lebih dikenal dengan Algoritma Ostrich. Dalam algoritma ini dikatakan bahwa untuk menghadapi deadlock ialah dengan berpura-pura bahwa tidak ada masalah apapun. Hal ini seakanakan melakukan suatu hal yang fatal, tetapi sistem operasi Unix menanggulangi deadlock dengan cara ini dengan tidak mendeteksi deadlock dan membiarkannya secara otomatis mematikan program sehingga seakan-akan tidak terjadi apapun. Jadi jika terjadi deadlock, maka tabel akan penuh, sehingga proses yang menjalankan proses melalui operator harus menunggu pada waktu tertantu dan mencoba lagi. 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. [3] 5.2 Mendeteksi dan Memperbaiki Caranya ialah dengan cara mendeteksi jika terjadi deadlock pada suatu proses maka dideteksi sistem mana yang terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka diadakan proses untuk memperbaiki dan menjadikan sistem berjalan kembali. Hal-hal yang terjadi dalam mendeteksi adanya deadlock adalah: - Permintaan sumber daya dikabulkan selama memungkinkan. - Sistem operasi memeriksa adakah kondisi circular wait secara periodik. - Pemeriksaan adanya deadlock dapat dilakukan setiap ada sumber daya yang hendak digunakan oleh sebuah proses. - Memeriksa dengan algoritma tertentu. 5.3 Ada beberapa jalan untuk kembali dari deadlock: 5.3.1 Lewat Preemption Dengan cara untuk sementara waktu menjauhkan sumber daya dari pemakainya, dan memberikannya pada proses yang lain. Ide untuk memberi pada proses lain tanpa diketahui oleh pemilik dari sumber daya tersebut tergantung dari sifat sumber daya itu sendiri. Perbaikan dengan cara ini sangat sulit atau dapat dikatakan tidak mungkin. Cara ini dapat dilakukan dengan memilih korban yang akan dikorbankan atau diambil sumber dayanya utuk sementara, tentu saja harus dengan perhitungan yang cukup agar waktu yang dikorbankan seminimal mungkin. Setelah kita melakukan preemption dilakukan pengkondisian proses tersebut dalam kondisi aman. Setelah itu proses dilakukan lagi dalam kondisi aman tersebut. 5.3.2 Lewat melacak kembali Setelah melakukan beberapa langkah preemption, maka proses utama yang diambil sumber dayanya akan berhenti dan tidak dapat melanjutkan kegiatannya, oleh karena itu dibutuhkan langkah untuk kembali pada keadaan aman dimana proses masih berjalan dan memulai proses lagi dari situ. Tetapi untuk beberapa keadaan sangat sulit menentukan kondisi aman tersebut, oleh karena itu umumnya dilakukan cara mematikan program tersebut lalu memulai kembali proses. Meskipun sebenarnya lebih efektif jika hanya mundur beberapa langkah saja sampai deadlock tidak terjadi lagi. Untuk beberapa sistem mencoba dengan cara mengadakan pengecekan beberapa kali secara periodik dan menandai tempat terakhir kali menulis ke disk, sehingga saat terjadi deadlock dapat mulai dari tempat terakhir penandaannya berada. 5.3.3 Lewat membunuh proses yang menyebabkan deadlock Cara yang paling umum ialah membunuh semua proses yang mengalami deadlock. Cara ini paling umum dilakukan dan dilakukan oleh hampir semua sistem operasi. Namun, untuk beberapa sistem, kita juga dapat membunuh beberapa proses saja dalam siklus deadlock untuk menghindari deadlock dan mempersilahkan proses lainnya kembali berjalan. Atau dipilih salah satu korban untuk melepaskan sumber dayanya, dengan cara ini maka masalah pemilihan korban menjadi lebih selektif, sebab telah diperhitungkan beberapa kemungkinan jika si proses harus melepaskan sumber dayanya. Kriteria seleksi korban ialah: 1. Yang paling jarang memakai prosesor 2. Yang paling sedikit hasil programnya 3. Yang paling banyak memakai sumber daya sampai saat ini 4. Yang alokasi sumber daya totalnya tersedkit 5. Yang memiliki prioritas terkecil 6. Pengalaman penulis dalam menghadapi komputer deadlock Pada bagian ini, penulis akan menceritakan pengalamannya dalam mengahadapi deadlock, jadi mungkin bahasa yang akan digunakan jadi kurang formal. Saya berpengalaman telah memakai sistem operasi windows dari windows 95, windows 98se, windows millenium, windows XPsp2, windows vista, dan sedikit windows seven yang belum lama muncul ini. Sedangkan untuk Linux saya menggunakan Ubuntu 8. Berdasarkan pengalaman saya, deadlock sering terjadi ketika banyak aplikasi dijalankan dalam satu waktu. Apalagi jika resource memory / RAM yang dipakai masih minimalis, mmaka deadlock akan sering terjadi. Menggunakan windows 95 atau windows 98, saya sering mengalami deadlock bahkan sampai deadlock bisa terjadi begitu saja tanpa membuka aplikasi apapun. Namun dengan setelah berganti ke sistem operasi windows millenium, deadlock lebih jarang terjadi, dan semakin jarang terjadi ketika menggunakan windows xp. Pada windows vista, windows seven, dan Ubuntu 8, saya sama sekali belum pernah menemui kondisi deadlock, meski lebih dari 2 program aplikasi aktif berjalan. Kondisi deadlock pada windows, rata-rata dapat diatasi dengan 'jurus' menekan tombol ctrl+alt+del pada keyboard. Kombinasi tombol tersebut memunculkan task manager, sehingga kita dapat meng-kill process yang menyebabkan deadlock. Apabila usaha tersebut belum berhasil, maka gunakan jurus kedua yaitu tekan tombol reset komputernya! Jika tombol reset rusak, matikan saja power supply-nya..! Dijamin kondisi deadlock akan hilang setelahnya. 7. Penutup Demikianlah sedikit berbagi ilmu mengenai kondisi komputer deadlock, atau dalam bahasa gaulnya: nge-hang. Semoga tulisan ini dapat memberi manfaat bagi umat manusia. referensi: [1] http://dewiwahyuni.ngeblogs.com/2009/12/15/konsep-proses/ [2] http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2004/51/produk/SistemOperasi/c47.html [3] http://forum.anugrahpratama.com/dunia-komputer/mengatasi-deadlock/