RSS

Sabtu, 27 April 2013


DEADLOCK
       I.                        Pengertian Deadlock

 
*                           Secara harfiah adalah kebuntuan. Suatu proses dimana 2 proses/lebih tidak dapat meneruskan eksekusinya karena saling menunggu aksi/sumber daya yang digunakan oleh proses lain.
Deadlock adalah keadaan dimana dua program 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. 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.

    II.                             Ilustrasi Deadlock
 Hanya terdapat satu jalur mobil digambarkan sebagai proses yang sedang menuju sumber daya. Untuk mengatasinya beberapa mobil harus (mundur). Sangat memungkinkan untuk terjadinya starvation (kondisi dimana proses tidak akan mendapatkan sumber daya)
Penyebab utama terjadinya Deadlock adalah terbatasnya sumber daya yang akan digunakan oleh proses-proses . Tiap proses berkompetisi untuk memperebutkan sumber daya yang ada .  Jadi deadlock berhubungan erat dengan tersedianya sumber daya dari komputer
a.         Syarat Terjadi Deadlock


1.      Mutual Exclusion
Kondisi yang pertama adalah mutual exclusion yaitu proses memiliki hak milik pribadi terhadap sumber daya yang sedang digunakannya. Jadi, hanya ada satu proses yang menggunakan suatu sumber daya. Proses lain yang juga ingin menggunakannya harus menunggu hingga sumber daya tersebut dilepaskan oleh proses yang telah selesai menggunakannya. Suatu proses hanya dapat menggunakan secara langsung sumber daya yang tersedia secara bebas.
Sumber daya yang hanya dapat digunakan oleh satu proses dalam satu waktu.
 Cara Menghindari :
Menerapkan kebijakan untuk hanya memakai sumber daya yang dapat digunakan secara konkuren

2.      Hold and Wait Condition
Proses yang sedang menggunakan satu sumber daya menunggu untuk menggunakan sumber daya yang lain. Kondisi yang kedua adalah hold and wait yaitu beberapa proses saling menunggu sambil menahan sumber daya yang dimilikinya. Suatu proses yang memiliki minimal satu buah sumber daya melakukan request lagi terhadap sumber daya. Akan tetapi, sumber daya yang dimintanya sedang dimiliki oleh proses yang lain. Pada saat yang sama, kemungkinan adanya proses lain yang juga mengalami hal serupa dengan proses pertama cukup besar terjadi. Akibatnya, proses-proses tersebut hanya bisa saling menunggu sampai sumber daya yang dimintanya dilepaskan. Sambil menunggu, sumber daya yang telah dimilikinya pun tidak akan dilepas. Semua proses itu pada akhirnya saling menunggu dan menahan sumber daya miliknya.
Cara Menghindari:
Mengalokasikan seluruh sumber daya yang diperlukan oleh suatu proses sebelum proses tersebut mulai dieksekusi

3.      Non-Preeption Condition
Kondisi yang selanjutnya adalah no preemption yaitu sebuah sumber daya hanya dapat dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai menggunakannya. Proses yang menginginkan sumber daya tersebut harus menunggu sampai sumber daya tersedia, tanpa bisa merebutnya dari proses yang memilikinya.
Jika sumber daya yang sedang digunakan oleh sebuah proses tidak dapat diambil alih secara paksa.
Cara Menghindari :
Mengkondisikan jika suatu proses tidak mendapatkan sumber daya dengan segera, maka sumber daya yang sedang digunakanya harus dilepas dulu. Sehingga proses lain yang sedang menunggu dapat menggunakannya terlebih dulu

4.      Circular Wait Condition
Kondisi yang terakhir adalah circular wait yaitu kondisi membentuk siklus yang berisi proses-proses yang saling membutuhkan. Proses pertama membutuhkan sumber daya yang dimiliki proses kedua, proses kedua membutuhkan sumber daya milik proses ketiga, dan seterusnya sampai proses ke n-1 yang membutuhkan sumber daya milik proses ke n. Terakhir, proses ke n membutuhkan sumber daya milik proses yang pertama. Yang terjadi adalah proses-proses tersebut akan selamanya menunggu.
Terdapatnya rangkaian sirkular dari 2/lebih proses masing-masing menunggu sumber daya yang sedang dikuasai proses lain
Cara Menghindari :
Memberikan nomor urut untuk semua sumber daya yang dialokasikan untuk proses

5.      Startvation
Jika lebih dari satu proses saling menunggu alokasi sumber daya sampai waktu yang tidak ditentukan
6.      Race Condition
Suatu keadaan dimana lebih dari satu proses menginginkan sumber daya yang sama pada waktu yang bersamaan
 III.                        Model Deadlock
Sebuah sistem terdiri dari sumber daya dengan jumlah terbatas yang didistribusikan kepada sejumlah proses yang berkompetisi untuk mendapatkan sumber daya
Status proses terhadap sumber daya yang perlu digunakannya adalah sebagai urutan berikut :
o   Meminta (request)          : Meminta layanan I/O
o   Memakai (use)                  : Memakai I/O device
 IV.                        Penanganan Deadlock
Terdapat cara untuk menangani keadaan deadlock, yaitu:
1.      Pengabaian.
 Maksud dari pengabaian di sini adalah sistem mengabaikan terjadinya deadlock dan pura-pura tidak tahu kalau deadlock terjadi. Dalam penanganan dengan cara ini dikenal istilah ostrich algorithm. Pelaksanaan algoritma ini adalah 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 dipilih karena kasus deadlock tersebut jarang terjadi dan relatif rumit dan kompleks untuk diselesaikan. Sehingga biasanya hanya diabaikan oleh sistem untuk kemudian diselesaikan masalahnya oleh user dengan cara melakukan terminasi dengan Ctrl+Alt+Del atau melakukan restart terhadap komputer.
2.      Pencegahan.
Penanganan ini dengan cara mencegah terjadinya salah satu karakteristik deadlock. Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem. Intinya memastikan agar sistem tidak akan pernah berada pada kondisi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.
3.      .Penghindaran.
Menghindari keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca adalah bahwa antara pencegahan dan penghindaran adalah dua hal yang berbeda. Pencegahan lebih kepada mencegah salah satu dari empat karakteristik deadlock terjadi, sehingga deadlock pun tidak terjadi. Sedangkan penghindaran adalah memprediksi apakah tindakan yang diambil sistem, dalam kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan terjadi deadlock. Akan dibahas secara lebih mendalam pada bagian selanjutnya.
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. Akan dibahas secara lebih mendalam pada bagian selanjutnya.

    V.                        Penghindaran Deadlock
Penghindaran terhadap deadlock adalah cara penanganan yang selanjutnya. Inti dari penghindaran adalah jangan sembarangan membolehkan proses untuk memulai atau meminta lagi. Maksudnya jangan pernah memulai suatu proses apabila nantinya akan menuju ke keadaan deadlock. Kedua, jangan memberikan kesempatan pada proses untuk meminta sumber daya tambahan jika penambahan tersebut akan membawa sistem pada keadaan deadlock. Tidak mungkin akan terjadi deadlock apabila sebelum terjadi sudah kita hindari.
Langkah lain untuk menghindari adalah dengan cara tiap proses memberitahu jumlah kebutuhan maksimum untuk setiap tipe sumber daya yang ada. Selanjutnya terdapat deadlock-avoidance algorithm yang secara rutin memeriksa state dari sistem untuk memastikan tidak adanya kondisi circular wait serta sistem berada pada kondisi safe state. Safe state adalah suatu kondisi dimana semua proses mendapatkan sumber daya yang dimintanya dengan sumber daya yang tersedia. Apabila tidak bisa langsung, ia harus menunggu selama waktu tertentu, kemudian mendapatkan sumber daya yang diinginkan, melakukan eksekusi, dan terakhir melepas kembali sumber daya tersebut. Terdapat dua jenis algoritma penghindaran yaitu resource-allocation graph untuk single instances resources serta banker's algorithm untuk multiple instances resources.
Algoritma Deadlock-Avoidance
Algoritma “deadlock-avoidance” secara dinamik akan memeriksa alokasi resource apakah dapat mengarah ke status (keadaan) tidak aman (misalkan terjadi circulair wait condition).
 Banker's Algorithma, terdapat beberapa struktur data yang digunakan, yaitu:
a.       Available . Jumlah sumber daya yang tersedia.
b.      Max . Jumlah sumber daya maksimum yang diminta oleh tiap proses.
c.       Allocation . Jumlah sumber daya yang sedang dimiliki oleh tiap proses.
d.      Need . Sisa sumber daya yang masih dibutuhkan oleh proses, didapat dari max- allocation.
e.       Kemudian terdapat safety algorithm untuk menentukan apakah sistem berada pada safe state atau tidak.




0 komentar:

Posting Komentar