Deadlock

 Proses disebut deadlock, jika proses menunggu suatu kejadian tertentu yang tak akan pernah terjadi. Sekumpulan proses berkondisi deadlock, jika setiap proses yang ada dikumpulan itu menunggu sesuatu kejadian yang hanya dapat dilakukan proses lain yang juga berada di kumpulan itu. Proses menunggu kejadian yang tak akan pernah terjadi.
 Deadlock terjadi ketika proses-proses mengakses secara ekslusif sumber daya. Semua deadlock yang terjadi melibatkan persaingan memperoleh sumber daya ekslusif oleh dua proses atau lebih. Adanya deadlock akan mengakibatkan sistem menjadi kacau.

Model Deadlock
Urutan kejadian pengoperasian perangkat I/O adalah :
-  meminta / request               : meminta palayanan I/O
-  memakai / use                      : memakai perangkat I/O
-  melepaskan / release          : melepaskan pamakaian perangkat I/O

Karakteristik Deadlock
Situasi deadlock dapat terjadi terdapat 4 kondisi yang berjalan serentak pada sistem :
-   Mutual Exclusion : setidaknya satu resource harus diadakan mode non-sharable, sehingga hanya satu proses pada satu waktu yang dapat menggunakan resource.
-   Hold & Wait : harus terdapat satu proses yang membawa setidaknya satu resource dan menunggu resource tambahan yang digunakan proses lain.
-   No Preemtion : resource tidak bersifat preemptive, sehingga resource dapat dilepas hanya oleh proses yang membawanya, setelah proses menyelesaikan task.
-   Circular Wait : terdiri dari sekumpulan proses yang menunggu {P0,P1,…,Pn}, jika proses P0 menunggu resource yang dibawa P1,P1 menunggu resource yang dibawa P2,Pn-1 menunggu resource yang dibawa Pn dan Pn menunggu resource yang dibawa P0.

Model deadlock dua proses dan dua sumber daya
Deadlock dapat digambarkan sebagai graph.
Misalnya :
-    dua proses, P0 dan P1
-    dua sumber daya kritis, R0 dan R1
proses P0 dan P1 harus mengakses kedua sumber daya tersebut

kondisi berikut dapat terjadi :
-   R0 diberikan ke P0 (P0 meminta sumber daya R0), ditandai busur (edge) berarah dari proses P0 ke sumber daya R0
-    Sedangkan sumber daya R1 dialokasikan ke P1, ditandai dengan busur (edge) berarah dari sumber daya R1 ke proses P1.

Skenario yang menimbulkan deadlock
Dapat terjadi skenario sebagai berikut :
-    P0 dialokasikan R0
-    P1 dialokasikan R1
 
Kemudian,
-    P0 sambil masih menggenggam R0, meminta R1
-    P1 sambil masih menggenggam R1, meminta R0

    Kejadian ini mengakibatkan deadlock karena sama-sama akan saling menunggu. Graph deadlock ini akan digambarkan sebagai graph melingkar. Terjadinya deadlock ditandai munculnya / terjadinya graph melingkar.
    Karena untuk melanjutkan eksekusi memerlukan kedua sumber daya sekaligus, maka kedua proses akan saling menunggu sumber daya lain selamanya. Tak ada proses yang dapat melepaskan sumber daya yang telah dipegangnya karena menunggu sumber daya lain yang tak pernah diperolehnya. Kedua proses dalam kondisi deadlock, tidak dapat membuat kemajuan apapun.

    Deadlock tidak hanya terjadi pada dua proses dan dua sumber daya, deadlock dapat terjadi dengan melibatkan lebih dari dua proses dan dua sumber daya.

Syarat-syarat terjadinya deadlock :
1.   Mutual exclution condition
Tiap sumber daya saat itu diberikan pada tepat satu proses.
2.   Hold and wait condition / kondisi genggam dan tunggu
Proses-proses yang sedang menggenggam sumber daya, menunggu sumber daya – sumber daya yang baru.
3.  Non-preemption condition / kondisi non-preemption
Sumber daya – sumber daya yang sebelumnya diberikan tidak dapat diambil paksa dari proses itu. Sumber daya – sumber daya harus secara eksplisit dilepaskan dari proses yang menggenggamnya.
4.   Circular wait condition / kondisi menunggu secara sirkular
Harus terdapat rantai sirkuler dari dua proses atau lebih, masing-masing menunggu sumber daya yang digenggam oleh anggota berikutnya pada rantai itu.

    Ketiga syarat pertama merupakan syarat perlu bagi terjadinya deadlock.  Keberadaan deadlock selalu berarti terpenuhi kondisi-kondisi diatas, tidak mungkin terjadi deadlock bila tidak ada ketiga kondisi itu. Deadlock terjadi berarti terdapat ketiga kondisi itu, tetapi adanya ketiga kondisi itu belum berarti terjadi deadlock.

    Deadlock baru benar-benar terjadi bila syarat keempat terpenuhi. Kondisi keempat merupakan keharusan bagi terjadinya peristiwa deadlock. Bila salah satu dari kondisi tidak terpenuhi maka deadlock tidak terjadi.

Metode-metode mengatasi deadlock :
1.   Deadlock prevention / metode pencegahan terjadinya deadlock
pengkondisian sistem agar menghilangkan kemungkinan terjadinya deadlock. Pencegahan merupakan solusi yang bersih dipandang dari sudut tercegahnya deadlock.
2.   Deadlock avoidance / metode penghindaran terjadinya deadlock
menghindarkan kondisi yang paling mungkin menimbulkan deadlock agar memperoleh sumber daya lebih baik. Penghindaran bukan berarti menghilangkan semua kemungkinan terjadinya deadlock. Jika sistem operasi mengetahui bahwa alokasi sumber daya menimbulkan resiko deadlock, sistem menolak pengaksesan itu. Dengan demikian menghindari terjadinya deadlock.
3.   Deadlock detection and recovery / metode deteksi dan pemulihan dari deadlock
deteksi digunakan pada sistem yang mengijinkan terjadinya deadlock, dengan memeriksa apakah terjadi deadlock dan menentukan proses dan sumber daya yang terlibat deadlock secara presisi. Begitu telah dapat ditentukan, sistem dipulihkan dari deadlock dengan metode pemulihan. Metode pemulihan dari deadlock sistem sehingga beroperasi kembali, bebas dari deadlock. Proses yang terlibat deadlock mungkin dapat menyelesaikan eksekusi dan membebaskan sumber dayanya.

Pencegahan deadlock :
1.      tiap proses harus meminta semua sumber daya yang diperlukan sekaligus dan tidak berlanjut sampai semuanya diberikan.
2.      Jika proses telah sedang memegang sumber daya tertentu, untuk permintaan berikutnya proses harus melepas dulu sumber daya yang dipegangnya. Jika diperlukan, proses meminta kembali sekaligus dengan sumber daya yang baru.
3.      Beri pengurutan linier terhadap tipe-tipe sumber daya pada semua proses, yaitu jika proses telah dialokasikan suatu tipe sumber daya, proses hanya boleh berikutnya meminta sumber daya tipe pada urutan yang berikutnya.
    Saran pencegahan deadlock diatas merupakan cara meniadakan salah satu dari syarat perlu. Syarat perlu pertama jelas tidak bisa ditiadakan, kalau tidak menghendaki kekacauan hasil.
 
Penghindaran deadlock
-  Adalah hanya memberi akses ke permintaan sumber daya yang tidak mungkin menimbulkan deadlock.
-  Alokasi resource scr hati-hati
-  Algoritma banker
      Alokasi resource selalu memperhatikan kemungkinan ke depan (next state)
      Kebutuhan ke depan satu atau lebih proses harus selalu dapat dipenuhi oleh resource yg tersedia saat ini

Tidak ada komentar:

Posting Komentar