DEADLOCK
Suatu kondisi dimana proses tidak berjalan lagi atau pun tidak ada komunikasi lagi antar proses. Deadlock disebabkan karena proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang menunggu sumber daya yang dipegang oleh proses tersebut.
Hanya terdapat satu jalur 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-Model Deadlock
R1
R0
P
1
P0
R1
R0
P1
P0
R0
R1
P1
Metode-metode mengatasi deadlock 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
Meniadakan mutual exclusion : yaitu mencegah hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu, Meniadakan syarat Hold dan Wait, cara ini dapat dilakukan dengan: mengalokasikan semua sumber daya atau tidak sama sekali dan hold and release. proses untuk mengalokasikan semua sumber daya atau tidak sama sekali permintaan ini hanya dapat dilayani bila semua sumber daya tersedia, jika sumber daya tersedia proses dialokasikan jika diperlukan dan berjalan sampai selesai. Jika sumber daya tidak tersedia atau hanya satu sumber daya maka proses harus menunggu sampai semua sumber daya yang diperlukan tersedia untuk dialokasikan padanya, yang menjadi permasalahan adalah sukar untuk mengetahui lebih dulu sumber daya yang diperlukan suatu proses karena pada awal proses tidak diketahui berapa sumber daya yang diperlukan, jika proses hanya butuh satu disk diawal eksekusi (atau lebih buruk lagi tanpa disk) dan menistrahatkan disk-disk yang lain. Perlunya proses utnuk menerima seluruh disk yang diperlukan sebelum eksekusi dimulai menyebabkan sumber daya komputer menganggur dalam waktu yang lama, sementara proses yg memerlukan harus menunggu. Hold and release (genggam dan lepas)yaitu pada saat terjadi permintaan satu sumber daya Maka proses harus melepaskan sumber daya lain yg telah digunakan, jadi hanya satu sumber daya yg dialokasikan untuk proses. Cara ini tidak mungkin karena ada proses yang di Syaratkan harus memegang beberapa sumber daya sekaligus,misalnya menggambar pada Plotter yang memerlukan plotter serta disk untuk menyimpan data gambar yang diplot.
Pencegahan deadlock
meniadakan kondisi non preempation :yaitu mencegah proses lain harus menunggu menunggu proses preemption sehingga tidak ada tunggu menunggu. Contohnya : saat proses A menulis ke printer tiba-tiba di stop oleh proses B yang juga akan menulis ke printer yang sama bila dimungkinkan preemption ini maka kedua proses akan mencetak seca ra tidak benar. Meniadakan kondisi menunggu sirkular: Kondisi ini dapat ditiadakan dengan cara yaitu proses hanya dibolehkan menggenggam satu sumber daya pada satu saat , jika perlu sumber daya yang kedua maka proses harus melepaskan sumber daya pertama. (sama dengan hold & release), cara ini tidak dimungkinakn karena terdapat proses yang mengharuskan memegang lebih dari satu sumber daya pada saat yg sama untuk menyelesaikan prosenya. Untuk meniadakan kondisi sirkular juga dapat dilakukan dengan penomoran global semua Sumber daya, karena proses dapat meminta kapanpun proses menginginkan,tetapi permintaan dibuat terurut secara numerik, cara ini tidak menimbulkan siklus , permasalah yang timbul tidak ada cara pengurutan nomor sumber daya yang memuaskan semua pihak.
Pencegahan deadlock
Havendar mengemukakan bahwa jika keempat syarat tersebut diatas tidak dipenuhi maka tidak akan terjadi deadlock, sehingga Havendar menyarankan strategi strategi untuk meniadakan dengan syarat :
Setiap proses harus meminta semua sumber yang diperlukan sekaligus dan tidak berlanjut sampai semua diberikan. Jika proses telah/sedang memegang sumber daya tertentu , untuk permintaan berikutnya Proses harus melepas sumber daya yang dipegangnya , jika diperlukan proses harus meminta kembali sekaligus dengan sumber daya yang baru. Buat urutan yang linear untuk semua sumber daya pada semua proses, jika proses telah dialokasikan pada suatu type sumber daya maka proses berikutnya boleh meminta type sumber daya berikutnya.
Penghindaran Deadlock
Gagasan dasar penghindaran deadlock adalah untuk memberi akses ke permintaan sumber daya yang tidak menimbulkan deadlock, cara ini biasa digunakan dengan mengalokasikan sumber daya dan memeriksa dampak pemberian akses ke suatu permintaan Jika pemberian akses sumber daya tidak mungkin menimbulkan deadlock maka sumber daya diberikan ke peminta sumber daya, jika timbul deadlock maka proses yang meminta di suspend sampai waktu permintaannya aman (tidak timbul deadlock) baru diberikan, kondisi ini biasanya terjadi setelah satu suimber daya atau lebih yang semula dipegang oleh proses-yang aktif liannya dilepas. Untuk penghindaran deadlock diperlukan pengertian mengenai state selamat (safe state) dan dan state tak selamat (unsafe state), dinyatakan sebagai state selamat jika state tidak terjadi deadlock dan terdapat cara untuk memenuhi semua permintaan yang ditunda tanpa menghasilkan deadlock dengan menjalankan proses secara hati-hati & mengikuti urutan tertentu. Contohnya :
* State selamat (safe state) dan state tak selamat (unsafe state) * Algoritma bunker olek Dijkstra
Safe State
Safe State adalah cara untuk memenuhi permintaan yang ditunda tanpa menghasilkan deadlock dengan menjalankan proses secara hati-hati mengikuti urutan tertentu. Contoh: Pada sistem yang memiliki 10 sumber daya se type , proses A memerlukan sumber daya maksimum 10 , sedangkan pada saat ini ia menggenggam 2 sumber daya, sedangkan proses B memerlukan sumber daya maksimum 3 sedangkan saat ini menggenggam 1 sumber daya, proses C memerlukan sumber daya maksimum 7 sedangkan saat ini mengenggam 3 sumber daya ,maka masih tersedia sumber daya 4 seperti pada tabel dibawah ini :
Proses A B C Tersedia 4 Jlh sumber daya yg digenggam 2 1 3 Maks sumber daya yang dibutuhkan 10 3 7
Kriteria-kriterianya sebagai berikut: Waktu pemrosesan yang telah dijalankan paling kecil Jumlah baris keluaran yang diproduksi kecil Mempunyai estimasi sisa waktu eksekusi besar Jumlah total sumber daya terkecil yang telah dialokasikan Prioritas terkecil.
Startegi Penanggulanag Deadlock Terpadu Silberschatz menyarankan satu pendekatan terpadu yaitu:
Kelompokkan sumber daya menjadi kelas sumber daya Gunakan strategi pengurutan linear seperti yg dijelaskan pada pencegahan menunggu sirkular, strategi ini untuk mencegah deadlock diantara kelas sumber daya yang berbeda. Dalam satu kelas sumber daya gunakan algoritma yang sesuai untuk kelas sumber daya tsb.
Starvation
Ilustarsi dead clock misalnya: Terdapat tiga buah proses yaitu P1, P2 dan P3. P1,P2 dan P3 memerlukan pengaksesan sumber daya R secara kontinyu: Skenario berikutnya adalah : P1 sedang diberi sumber daya R maka P2 dan P3 di blocked menunggu sumber daya R Ketika P1 keluar dari critical section maka P2 dan P3 diizinkan mengakses R Asumsi kita P3 diberi hak akses kemudian setelah selesai maka hak akses diberikan kembali kepada P1 yang saat itu kembali membutuhkan sumber daya R. Jika hak akses hanya bergantian P1 dan P3 saja secara terus menerus maka P2 tidak memperoleh akses sumber daya R, kondisi ini tidak terjadi deadlock , hanya saja P2 mengalami startvation (tidak ada kesempatan untuk dilayani.)
Deadlock di Linux
Linux dengan kernel versi 2.4 mengalami deadlock pada sistem dengan prosesor lebih dari 2 unit Deadlock ini pada umumnya terjadi bila akses melalui Ethernet dilakukan, terutama bila melakukan teaming pada jaringan. Proses akan terblock dan saling menunggu resource Ethernet tersebut bebas.
Deadlock di Linux
Beberapa kasus deadlock juga terjadi ketika OS Linux dijalankan dari kondisi sleep, proses yang mengakses USB device akan mengalami deadlock Hal ini disebabkan fungsi scheduler pada kernel yang digunakan tidak menyimpan state sebelum sleep, sehingga ketika kernel dijalankan kembali, Proses-proses yang mengakses USB device tersebut menunggu giliran mengakses, sementara scheduler belum menjadwalkan masingmasing proses.
Kasus ini juga terjadi pada Serial device
Kesimpulan
Deadlock adalah situasi dimana 1 atau lebih proses tidak akan pernah selesai tanpa adanya recovery Empat kondisi penting untuk deadlock : mutual exclusion, hold and wait, circular wait, and no preemption Deadlock bisa diatasi oleh berbagai strategi : prevention, avoidance, detection and recovery