Senin, 07 Januari 2013

DEADLOCK

Apa itu Deadlock ??
Deadlock adalah situasi / keadaan dimana dalam satu atau lebih proses yang tidak akan pernah selesai yang terjadi penumpukan dan tanpa adanya recovery. Penyebab Deadlock antara lain :
-Mutual Exclusion
-Ciccular Waiting
-No Preemption
-Hold and Wait

Beberapa strategi yang digunakan untuk mengatasi deadlock antara lain :
-Prevention
-Detection and Recovery
-Avoidance

Dalam strategi prevension  perlu untuk memastikan paling sedikit satu penyebab terjadinya deadlock tidak berlaku, antara lain :
-Dalam kasus Mutual Exclusion , yang dilakukan adalah membuat file spool untuk resource yang akan digunakan secara bersamaan.
-Circular Waiting, yang dilakukan dengan memberi nama resource berdasarkan level / urutan.
-No Preemtion, yang dilakukan adalah dengan membolehkan adanya suatu proses preemtion.
-Dalam Hold and Wait, yang dilakukan adalah dengan memaksa sebuah proses untuk melepaskan resource  yang dimilikinya pada saat meminta resource baru.

Untuk menangani deadlock digunakan sebuah algoritma, antara lain :
-Algoritma Banker
-Algoritma Safty
-Algoritma Ostrich

Penjelasan :
*Algoritma Banker adalah sebuah algoritma untuk menyelesaikan masalah deadlock yang penyediaan resourcenya dibatasi oleh kenaikan (advance).
Contoh kasus :
- Terdapat nasabah Bank yang meminta pinjaman lagi padahal pinjaman yang lalu belum dikembalikan.
D Dalah hal ini bisa kita modelkan sebagai berikut :

Proses dan Resourcenya 
             
F 3 0 1 1
G 0 1 0 0
H 1 1 1 0
I 1 1 0 1
J 0 0 0 0
              
Resource assignednya
 
F 1 1 0 0
G 0 1 1 2
H 3 1 0 0
I 0 0 1 0
J 2 1 1 0


























Remaining resourcenya
Algoritma banker dibagi menjadi empat struktur data, dimana n adalah jumlah proses dalam suatu sistem dan m adalah jumlah sumberdaya yang digunakan.
Penjelasan
1. Need : adalah matriks n x m yang mengindikasi sisa SDM yang dibutuhkan pada setiap proses.
     Jika Need[i,j] = k, maka proses Pi membutuhkan lebih kinstalasi dari sumber daya RJguna menyelesaikan permasalahan. Need[i,j] = Max[i,j] - Allocation[i,j]
2. Allocation : adalah matrik n x m yang mendefinisikan SDM pada setiap tipe yang dialokasikan oleh setiap proses. Apabila Allocation [i,j] = k, maka proses Pi akan dialokasikan k instalasi dari SD Rj.
3. Max : adalah matriks n xm yang mendefinisikan maksimal permintaan pada setiap proses yang sedang berlangsung. Bila Max[i,j]= k, maka proses Pi akan meminta paling banyak k instalasi dari SDM.
4. Available : adalah sebuah vektor m yang mengindikasi SDM yang tesedia pada setiap tipe. Bila [j] = k, dimana k instalasi dari tipe Rj yang tersedia didalamnya.

*Algoritma Safety
  Dalam algoritma ini terdapat pencarian apakah sistem yang berjalan dalam status aman atau tidak.
Penjelasan :
1. Work=work+Allocation, Finish[i]=True-ke Langkah 2
2. Anggaplah work dan finish adalah vektor yang memiliki panjang masing-masing m dan n. Yang memiliki nilai awal work=Avaliable dan Finish[i]=False untuk i=1,2,...,n.
3. Cari hingga didapatkan Finish[i]=False dan Need, <Work, juka i tidak ditemukan dalam pencarian.
4. Jika Finish[i]=True untuk semua i, maka sistem yang berjalan dalam status aman.