DEADLOCK KELOMPOK : 114-23 Aurora Marsye 1204000165 Mellawaty 1204000602 Vidyanita Kumalasari 120400089Y (c)hak cipta aurora, mella, mala. Silahkan menggandakan atau menyebarkan slide ini. 10/27/2005 1
DEADLOCK Definisi : suatu kondisi dimana sekumpulan proses tidak dapat berjalan kembali atau tidak ada komunikasi antar proses akibat adanya kompetisi untuk memperebutkan sumber daya 10/27/2005 2
SYSTEM MODEL sebuah system terdiri dari beberapa sumber daya yang akan didistribusikan kepada proses-proses sumber daya dibagi menjadi beberapa type yang terdiri dari instances yang identik (Contoh :memory space, CPU cycles, files dan I/O devices) sebuah proses harus meminta sumber daya sebelum menggunakannya dan harus melepaskannya setelah digunakan pada model system normal, proses menggunakan sumber daya dengan urutan meminta => menggunakan => melepaskan sumber daya sebuah proses berada dalam keadaan deadlock apabila semua proses berada dalam keadaan menunggu (di dalam waiting queue) peristiwa yang hanya bisa dilakukan oleh proses yang berada dalam waiting queue tersebut 10/27/2005 3
SYSTEM MODEL sumber daya yang bisa dipakai berulang : 1. contoh : prosessor, kanal M/K, disk 2. tidak habis dipakai oleh proses manapun 3. mengakibatkan deadlock jika suatu proses yang sudah memiliki sumber daya tersebut meminta sumber daya lain yang dipegang oleh proses lain sumber daya sekali pakai : 1. contoh : dalam producer dan konsumer 2. tidak ada batasan untuk menggunakan sumber daya ini 3. sangat jarang terjadi deadlock 10/27/2005 4
KARAKTERISTIK DEADLOCK mutual ekslusif hanya ada satu proses yang boleh memakai sumber daya memegang dan menunggu proses yang sedang menggunakan suatu sumber daya meminta sumber daya tambahan tidak ada preemption suatu sumber daya hanya dapat dilepaskan oleh proses yang menggunakannya setelah proses tersebut selesai circular wait saling menunggu sumber daya yang dipakai oleh proses yang menunggu sumber daya tersebut 10/27/2005 5
Method untuk menangani Deadlock Mendeteksi dan memperbaiki Mengabaikan deadlock Menggunakan protokol untuk mencegah dan memastikan tidak terjadinya deadlock. 10/27/2005 6
Pencegahan Deadlock Mutual Exclusion tidak disarankan memakai SD yang berbagi,tetapi memakai SD yang sendiri Memegang dan Menunggu harus dijamin bahwa ketika proses membutuhkan SD, maka ia tidak sedang memegang SD lain. No Preemption Jika sebuah proses memegang SD dan membutuhkan SD yang lain maka SD tersebut tidak bisa langsung dialokasikan ke proses tersebut dan harus melepaskan SD yang sedang dia pegang. Circular Wait Memberikan urutan kepada semua proses yang meminta SD dan menentukan semua jenis permintaan yang ada. 10/27/2005 7
Penghindaran Deadlock Menyediakan semua SD yang dibutuhkan tiap proses selama memungkinkan. Algoritma pencegahan deadlock terus mengecek SD yang dibutuhkan oleh proses-proses tidak mengalami circular wait condition. Pengalokasian status SD didefinisikan oleh jumlah dari SD yang tersedia dan teralokasikan,dan permintaan maksimum dari proses tersebut 10/27/2005 8
Kondisi Aman Ketika sebuah proses membutuhkan R(resource) yg available, maka system harus memutuskan bahwa apabila diberikan segera, system dalam keadaan aman. System dalam keadaan aman jika semua proses sequence dalam keadaan aman. 10/27/2005 9
Algoritma Bankir banyak instance Setiap P harus mendeklarasikan maximum resource yang akan digunakan 10/27/2005 10
Data Struktur AB n= Proses ke-n m=resource ke-m Available : tersedia[j]=k, maka k=jumlah instance yg ada. max : dapat minta maximum K dari sebuah R. Allocation : alokasi R =k, maka sebanyak K yg dapat dialokasikan. Need : butuh sebanyak K, maka P minta sebanyak K pada R. Need = MAX - ALLOCATION 10/27/2005 11
Algoritma aman 1. work and finish masing-masing sebuah vector yang diinisialisasikan: work = tersedia finish[i]= FALSE untuk i- 1,3,...n. 2. jika: else finish[i] = FALSE Need i <=work tahap 4 3. work = work + Alokasi finish [i] = TRUE tahap 2 4. jika finish[i] ==TRUE untuk semua i, maka system dalam keadaan aman. 10/27/2005 12
Pendeteksian Deadlock Jika sistem tidak menggunakan deadlockprevention ataupun deadlock-avoidance, deadlock dapat terjadi. Pada keadaan seperti ini, sistem harus menyediakan: Algoritma untuk memeriksa status sistem untuk menentukan apakah telah terjadi deadlock Algoritma untuk memulihkan dari deadlock Single Instance of Each Resource Type Several Instances of a Resource Type 10/27/2005 13
Penggunaan Algoritma Pendeteksian Kapan kita meminta detection algorithm? Bergantung pada: Seberapa sering deadlock terjadi? Berapa proses yang akan dipengaruhi ketika deadlock terjadi? Jika deadlock sering terjadi, detection algorithm harus sering dipanggil. Jumlah proses yang terlibat dalam deadlock cycle dapat bertambah. Jika kita memanggil deadlock detection algorithm setiap kali request for allocation tidak bisa di-grant secepatnya, kita dapat mengidentifikasi tidak hanya himpunan dari deadlock processes tetapi juga proses spesifik yang menyebabkan deadlock. Namun ini dapat mendatangkan overhead waktu komputasi yang perlu dipertimbangkan. Alternative: to invoke the algorithm at less frequent intervals 10/27/2005 14
Perbaikan dari Deadlock Process Termination Abort all deadlocked processes Abort one process at a time until the deadlock cycle is eliminated Jika proses sedang meng-update sebuah file, terminasi akan meninggalkan file pada incorrect state. Abort proses-proses yang terminasi-nya minimum cost Resource Preemption Selecting a victim. Minimize cost Rollback. Setelah resource dari proses di-preempt, proses tidak dapat kontinu dengan normal. Roll-back proses ke beberapa safe state dan restart dari state tersebut. Karena sulit menentukan safety state, abort proses dan restart proses. Starvation. Pastikan bahwa sebuah proses dipilih sebagai victim dengan syarat ada batasan waktu tertentu. 10/27/2005 15