Kamis, 02 Mei 2013

Sinkronisasi dan Deadlock

Sudah dibahas sebelumnya mengenai Sinkronasi dan Deadlock sebagai berikut:

Bobby Gustafyan - Kata Pengantar, Daftar Isi, Latar Belakang, Landasan Teori
Dino Damara P - Pembahasan Critical Section
Miqdad Ali A- Semaphore dan Monitors
M. Siananda - masalah masalah Klasik pada Sinkronasi


Selanjutnya saya Viona akan membahas materi mengenai Deadlock,


 1. Deadlock


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.Terdapat kaitan antara overhead dari mekanisme koreksi dan manfaat dari koreksi deadlock itu sendiri. Pada beberapa kasus, overhead atau ongkos yang harus dibayar untuk membuat sistem bebas deadlock menjadi hal yang terlalu mahal dibandingkan jika mengabaikannya. Sementara pada kasus lain, seperti pada real-time process control, mengizinkan deadlockakan membuat sistem menjadi kacau dan membuat sistem tersebut tidak berguna.

Contoh berikut ini terjadi pada sebuah persimpangan jalan. Beberapa hal yang dapat membuat deadlock pada suatu persimpangan, yaitu:

·       Terdapat satu jalur pada jalan.

·       Mobil digambarkan sebagai proses yang sedang menuju sumber daya.

·       Untuk mengatasinya beberapa mobil harus preempt (mundur).

·       Sangat memungkinkan untuk terjadinya starvation (kondisi proses tak akan mendapatkan sumber daya).



Ø  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



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.



Ø  Karakteristik Deadlock



Menurut Coffman dalam bukunya "Operating System" menyebutkan empat syarat bagi terjadinya deadlock, yaitu:

a.    Mutual ExclusionSuatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu.

b.   Hold and WaitKondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.

c.    Non-pre-emptiveKondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.

d.    Circular WaitKondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.



Ø  Metode Penanganan Deadlock



1.     Menggunakan suatu protokol untuk meyakinkan bahwa sistem tidak akan pernah mengalami deadlock.

2.    Mengijinkan sistem mengalami deadlock, namun kemudian harus segera dapat memperbaikinya.



Ø    Strategi menghadapi Deadlock
 
Strategi untuk menghadapi deadlock dapat dibagi menjadi tiga pendekatan, yaitu:

a.      Mengabaikan adanya deadlock.

b.     Memastikan bahwa deadlock tidak akan pernah ada, baik dengan metode Pencegahan, dengan mencegah empat kondisi deadlock agar tidak akan pernah terjadi. Metode Menghindari deadlock, yaitu mengizinkan empat kondisi deadlock, tetapi menghentikan setiap proses yang kemungkinan mencapai deadlock.

c.      Membiarkan deadlock untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung, yaitu:

·       Pendeteksian deadlock, untuk mengidentifikasi ketika deadlock terjadi.
Pemulihan deadlock, mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya

Materi selanjutnya Akan dibahas oleh Leo Putra