Global Var

Sunday 5 August 2012

Deadlock

Penjelasan Deadlock
Deadlock adalah suatu kondisi dimana proses tidak berjalan lagi ataupun tidak ada komunikasi lagi antar proses 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.



Penyebab Deadlock
Menurut Coffman (1971) ada empat kondisi yang dapat mengakibatkan terjadinya deadlock, yaitu:
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.

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

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 prosesyang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya prosesyang memiliki sumber daya yang boleh berjalan

Circular Wait
kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya.

Deadlock pada Windows :
- Pada windows, deteksi deadlock yaitu berupa BSOD (Blue Screen Of Death)
- Saat mengakses USB device
- Terlalu banyak applikasi yang di proses, biasanya muncul seperti Not Responding.

Deadlock pada Linux :
- Linux dengan kernel versi 2.4 mengalami deadlock pada sistem dengan prosesor lebih dari 2 unit.
- Ketika OS Linux dijalankan dari kondisi sleep, proses yang mengakses USB device akan mengalami deadlock.
- Deadlock juga terjadi yang disebabkan fungsi scheduler pada kernel yang digunakan tidak menyimpan state sebelum sleep, sehingga ketika kernel dijalankan kembali, Proses-proses yang mengakses USB device tersebut menunggu giliran mengakses, sementara scheduler belum menjadwalkan masing-masing proses.
- Deadlock terjadi bila akses melalui Ethernet dilakukan, terutama bila melakukan teaming pada jaringan. Proses akan terblock dan saling menunggu resource Ethernet tersebut bebas.
- Pada linux untuk mengetahui apakah terjadi deadlock yaitu dengan menggunakan xosview untuk mengetahui proses yang menggunakan CPU 100%, lalu kill saja proses tersebut.
- Deadlock terjadi pula pada Serial device

Mengatasi Deadlock pada Windows :
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.

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.

Menghentikan (membunuh) proses.
Dengan cara meng-kill process yang menyebabkan deadlock.  Cara yang paling umum ialah membunuh semua proses yang mengalami deadlock.  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

Mengatasi Deadlock pada Linux :
- Dengan Strategi Ostrich / Mengabaikan Masalah deadlock
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.

- Prevention : memastikan paling sedikit satu penyebab Deadlock tidak berlaku
Mutual Exclusion : membuat file spool untuk resource yang digunakan bersama-sama
Hold and Wait : memaksa sebuah proses untuk melepaskan resource yang dimilikinya ketika   meminta resource baru
Circular Waiting : memberikan penamaan resource berdasarkan urutan atau level
No Preemption : membolehkan adanya preemption

- Avoidance : sistem menolak request terhadap resource yang berpotensi deadlock, Algoritma Banker.
Resource manager menolak proses yang meminta resource yang berpotensi deadlock. Jika ada permintaan resource yang maksimum digunakan, maka proses tersebut akan dipaksa untuk melepaskan resource yang sudah dimiliknya perlu adanya informasi tambahan.

- Detection and Recovery
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.


                 Bila anda ingin mendownload dengan File Word dibawah ini :
http://prestas1.blogspot.com/2012/08/deadlock.html


0 comments:

Comments Utility