Posts Tagged ‘deadlock’

Analogi ‘Otak Kiri’ Sebuah Deadlock

April 26, 2010 - 1:05 pm 3 Comments

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 di bawah, deadlocl dianalogikan sebagai bangau dan katak yang akan dimakan. Dalam kasus dibawah, Bangau tidak bisa menelan karena katak mencekik leher bangau, sedangkan bangau tidak bisa melepas katak karena lehernya tercekik oleh si katak(resource), begitu juga dengan si katak akan terus mencekik leher bagau sampai dia melepaskan katak tersebut. Akhirnya tidak terjadi perubahan dalam keadaan kedua makhluk hidup tersebut Empat kondisi yang dapat mengakibatkan terjadinya deadlock (Coffman,1971), yaitu: 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. 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 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 4. Lingkaran Tunggu/Circular Wait Kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya Untuk memastikan sistem tidak memasuki deadlock, sistem dapat menggunakan pencegahan deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan informasi tentang sumber daya yang mana yang akan suatu proses meminta dan berapa lama akan digunakan. Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau tidak. Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh proses lain atau tidak. Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada kondisi deadlock yang dapat berpengaruh terhadap performance system karena sumber daya tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu. Akhirnya sistem akan berhenti dan harus direstart. REFERENSI MSDN, Detecting and Ending Deadlock http://msdn.microsoft.com/en-us/library/ms178104.aspx, Diakses 26 April 2010 Ashish, Deadlock Concept with Beautiful example http://ashishwave.wordpress.com/2007/01/17/deadlock-concept-with-beautiful-example/