Selasa, 10 November 2015

[Pert 13 & 14] Deadlock

Deadlock dapat disebut apabila :
beberapa proses akan di deadlock apabila setiap proses di dalam set sedang menunggu suatu event (kejadian) dimana hanya proses lain di dalam set tersebut dapat terjadi

Di dalam deadlock, tidak ada solusi yang efisien

Pemblokiran secara permanen terjadi pada beberapa proses yang sedang digunakan untuk sumber sistem (system resources) ataupun sedang berkomunikasi satu sama lain



Ilustrasi dari Deadlock :



Contoh dari Deadlock :


Contoh dari No Deadlock :



Kondisi dari Deadlock :
- mutual exclusion : hanya 1 proses dalam satu waktu dapat menggunakan sumber daya (resource)
- tahan dan tunggu : sebuah proses menahan setidak nya 1 sumber, kemudian menunggu untuk mendapatkan sumber tambahan yang dimiliki oleh proses lain
- tidak ada preemption : sumber dapat dilepas hanya apabila proses secara volunteer mau melepas.


Deadlock Modeling :

(a) Sedang memegang / mempunyai resource
(b) Meminta resource
(c) Deadlock


Strategi untuk menghadapi deadlock :
1. Abaikan masalah (Algoritma Ostrich)
2. Deteksi dan recovery (perbaikan). Biarkan deadlock terjadi, deteksi, lalu ambil aksi
3. Dynamic avoidance dari alokasi sumber yang aman
4. Penanggulangan, dengan secara struktrual menegating satu dari empat kondisi yang diperlukan


(1)

 (2)

(3)


Contoh Deadlock menggunakan RAG :


Contoh No Deadlock menggunakan RAG




Starvation

- algoritma untuk mengalokasikan sumber
- bekerja bagus untk pekerjaan yang pendek / singkat dalam sistem
- dapat menyebabkan pekerjaan yang banyak (besar) untuk ditunda
- solusi : first come, first serve


Deadlock Detection 

(a) Grafik resource
(b) Siklus yang diekstraks dari (a)





EXERCISE



Tentukan apakah setiap opsi tersebut safe atau tidak !

(a) A mempunyai 3 dan memerlukan total 9
      B mempunyai 2 dan memerlukan total 4
      C mempunyai 2 dan memerlukan total 7

      Bank mempunyai 3

      Proses :

       A perlu 6
       B perlu 2
       C perlu 5

       Karena saldo pada Bank hanya ada 3, maka Bank hanya akan memberikan kepada yang memerlukan pinjaman lebih kecil daripada nya (x) < saldo Bank
    
       Bank memberikan 2 kepada B, dengan begitu, B otomatis mempunyai jumlah max nya yaitu 4.
       B : 2 + 2 = 4 (max.)
       Sisa saldo Bank adalah : 3 - 2 =  1

       Karena B sudah mempunyai total yang diperlukan, maka kemudian B akan mengembalikan total nya tersebut kepada bank sebesar nilai max nya yaitu 4.
       Dengan begitu, saldo bank sekarang menjadi : 1 + 4 = 5

       Proses diulang kembali, sekarang Bank akan memberikan pinjaman kepada C sebesar 5, dengan begitu, C sekarang sudah mempunyai yang diinginkan nya, yaitu : 2 + 5 = 7.
        Dengan begitu, saldo Bank sekarang adalah : 5 - 5 = 0   

        C mengembalikan pinjaman nya yaitu sebesar 7, dengan begitu saldo Bank sekarang adalah 7.

      Terakhir, Bank memberikan pinjaman kepada A, dimana A memerlukan sebesar 6, dengan begitu, saldo Bank sekarang adalah : 7 - 6 = 1.

          A kemudian mengembalikan saldo nya sebesar 9 kepada Bank. Oleh karena itu, saldo Bank sekarang adalah : 1 + 9 = 10

          Kesimpulan : Karena Bank dapat memberikan pinjaman kepada semua anggota nya, maka dapat dikatakan bahwa state (a) adalah SAFE.



(b) NOT SAFE, Bank tidak mempunyai saldo yang cukup untuk meminjamkan
     A = -5 (4,9)
     B = -2 (2,4)
     C = -5 (2,7)
           kurang (punya, max)

     Bank = +2

     B >> +2 = Bank : +4, sisa A dan C perlu 5, oleh karena itu NOT SAFE
(c) NOT SAFE
(d) NOT SAFE
     



(a) Instances :
     A = 15
     B = 6
     C = 9
     D = 10

     VERIFIED

(b) Need :

P0 7 5 3 4
P1 2 1 2 2
P2 3 4 4 2
P3 2 3 3 1
P4 4 1 2 1
P5 3 4 3 3

(c) 

P0 15 6 9 10
P1 6 4 6 5
P2 10 5 6 7
P3 11 5 6 8
P4 12 6 6 8
P5 13 6 7 9

(d) 

Soal : 

6 3 5 4
3 2 3 3
(dikurang)

Hasil : 

3 1 2 1



binus.ac.id

Tidak ada komentar:

Posting Komentar