Deadlock

1. Pengertian deadlock dan latar belakang terjadinya deadlock(penyebab deadlock)!

jika proses 1 sedang menggunakan sumber daya 1 dan menunggu sumber daya 2 yang ia butuhkan, sedangkan proses 2 sedang menggunakan sumber daya 2 dan menunggu sumber daya 1 Atau dengan kata lain saat proses masuk dalam status menunggu, ia tidak akan pernah selesai menunggu sebab sumber daya yang dibutuhkan sedang digunakan oleh proses lain yang sedang menunggu pula

Penyebab Deadllock:

Mutual Exclusion: satu proses satu sumber daya

Hold and Wait : proses yang memegang sumber daya masih bisa meminta sumber daya lain

No Preemption : sumber daya yang sedang digunakan oleh suatu proses tidak bisa sembarangan diambil dari proses tersebut, melainkan harus dilepaskan dengan sendirinya oleh proses.

Circular Wait : setiap proses menunggu sumber daya dari proses berikutnya yg sedang dipakai oleh proses lain.

2. Langkah-langkah pencegahan

Mencegah Mutual Exclusion

Mutual exclusion benar-benar tak dapat dihindari. Hal ini dikarenakan tidak ada sumber daya yang dapat digunakan bersama-sama, jadi sistem harus membawa sumber daya yang tidak dapat digunakan bersama-sama.

Mencegah Hold and Wait

Untuk mencegah hold and wait, sistem harus menjamin bila suatu proses meminta sumber daya, maka proses tersebut tidak sedang memegang sumber daya yang lain. Proses harus meminta dan dialokasikan semua sumber daya yang diperlukan sebelum proses memulai eksekusi atau mengijinkan proses meminta sumber daya hanya jika proses tidak membawa sumber daya lain

Mencegah Non Preemption

Peniadaan non preemption mencegah proses-proses lain harus menunggu. Seluruh proses menjadi preemption, sehingga tidak ada tunggu menunggu.

Mencegah Kondisi Menunggu Sirkular

Sistem mempunyai total permintaan global untuk semua tipe sumber daya. Proses dapat meminta proses kapanpun menginginkan, tapi permintaan harus dibuat terurut secara numerik. Setiap proses yang membutuhkan sumber daya dan memintanya maka nomor urut akan dinaikkan

3. Cara kerja algo2 utk menghindari deadlock (algo banker, safety, resource-request)

Algoritma Banker

Algoritma resource allocation graph tidak dapat diaplikasikan pada sistem yang mempunyai beberapa anggota pada setiap tipe sumber daya. Setiap proses sebelum dieksekusi harus menentukan jumlah sumber daya maksimum yang dibutuhkan. Jika suatu proses meminta sumber daya kemungkinan proses harus menunggu. Jika suatu proses mendapatkan semua sumber daya maka proses harus mengembalikan semua sumber daya dalam jangka waktu tertentu.

Algoritma Safety

Algoritma ini untuk menentukan apakah sistem berada dalam state selamat atau tidak.

1. Work dan Finish adalah vector dengan panjang m dan n. Inisialisasi : Work = Available dan Finish[i] = false untuk i = 1,3, …, n.

2. Cari i yang memenuhi kondisi berikut :

(a) Finish [i] = false

(b) Needi = Work

Jika tidak terdapat i ke langkah 4.

3. Work = Work + Allocationi

Finish[i] = true

kembali ke langkah 2.

4. Jika Finish [i] == true untuk semua i, maka sistem dalam state selamat.

ΓΌ Algoritma Resouce Request

Requesti adalah vector permintaan untuk proses Pi. Jika Requesti[j] = k, maka proses Pi menginginkan k anggota tipe sumber daya Rj. Jika permintaan untuk sumber daya dilakukan oleh proses Pi berikut ini algoritmanya. Request = request vector for process Pi. If Requesti [j] = k then process Pi wants k instances of resource type Rj.

1. Jika Requesti = Needi ke langkah 2. Selain itu, terjadi kondisi error karena proses melebihi maksimum klaim.

2. Jika Requesti = Available, ke langkah 3. Selain itu Pi harus menunggu karena sumber daya tidak tersedia.

3. Alokasikan sumber daya untuk Pi dengan modifikasi state berikut :

Available = Available - Requesti;

Allocationi = Allocationi + Requesti;

Needi = Needi – Requesti;

Jika hasil state alokasi sumber daya adalah selamat, maka sumber daya dialokasikan ke Pi , sebaliknya jika tidak selamat, Pi harus menunggu dan state alokasi sumber daya yang lama disimpan kembali.

4. Perbaikan dari kondisi deadlock

Solusi pertama adalah dengan menghentikan satu atau beberapa proses untuk membebaskan kondisi menunggu sirkular. Pilihan kedua adalah menunda beberapa sumber daya dari satu atau lebih proses yang deadlock.

Terminasi Proses

Untuk memperbaiki deadlock dengan terminasi proses, dapat diguankan salah satu dari dua metode di bawah ini :

• Menghentikan (abort) semua proses yang deadlock

• Menghentikan satu proses setiap waktu sampai siklus deadlock hilang.

Menunda Sumber Daya

Untuk menghilangkan deadlock dengan menunda sumber daya, sumber daya dari proses harus ditunda dan memberikan sumber daya tersebut ke proses lain sampai siklus deadlock hilang.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

0 Response to "Deadlock"

Posting Komentar