Pengertian Deadlock adalah Deadlock atau bisa disebut dengan Jalan Buntu.
Secara garis besar Jalan buntu, mogok. Proses saling tunggu menunggu sumber
lain selamanya, sementara satu proses hanya boleh menggunakan satu sumber daya,
dan masing-masing tidak bisa melepaskan yang sedang digunakan.
Arti istilah Deadlock detection dianggap
berkaitan erat dengan pengertian berikut
Metode deteksi digunakan pada sistem yang mengijinkan terjadinya deadlock.
tujuan metode ini adalah memeriksa apakah telah terjadi deadlock dan menentukan
proses-proses dan sumber daya-sumber daya yang terlibat deadlock secara
presisi. Begitu telah dapat ditentukan, sistem dipulihkan dari deadlock dengan
metode pemulihan. Metode pemulihan dari deadlock, untuk menghilangkan deadlock
system, sehingga beroperasi kembali, dan bebas dari deadlock. Proses-proses
yang terlibat deadlock mungkin dapat menyelesaikan eksekusi dan membebaskan
sumber daya-sumber daya.
Deadlock adalah suatu kondisi dimana dua proses atau lebih tidak dapat
meneruskan eksekusinya. Proses menunggu terus menerus, sementara sumber daya
yang ditunggu tidak akan pernah didapatkan.
Misalnya :
·
Dua proses P1 dan P2
·
Dua sumber daya kritis R1 dan R2
·
Proses P1 dan P2 harus mengakses keuda sumber daya Kondisi berikut dapat
terjadi: R1 diberikan ke P1, sedang R2 diberikan ke P2. Karena untuk
melanjutkan eksekusi, memerlukan kedua sumber daya sekaligus, maka kedua proses
akan saling menunggu sumber daya lain selamanya. Metode mengatasi deadlock ini
adalah sebagai berikut:
1.
Metode pencegahan terjadinya deadlock (deadlock prevention),
2.
Metode penghindaran terjadinya deadlock (deadlock avoidance),
3.
Metode deteksi dan pemulihan dari deadlock (deadlock detection and
recovery).
Resource (1)
Contoh:
·
Bridge Crossing
·
Traffic hanya satu arah
·
Masing-masing bagian jembatan dapat digambarkan sebagai resource.
·
Jika deadlock terjadi, dapat diselesaikan dengan cara satu mobil mundur ke
belakang.
·
Beberapa mobil harus kembali jika terjadi deadlock
·
Memungkinkan terjadinya starvation
Resources
(2)
·
Deadlock terjadi ketika
·
Proses-proses diberikan hak akses secara eksklusif ke devices (resources)
·
Preemptable resources
·
Dapat diambil dari proses tanpa menimbulkan efek yang buruk
·
Nonpreemptable resources
·
Akan menyebabkan proses gagal jika diambil
4. Kondisi Terjadinya Deadlock
·
Kondisi Mutual exclusion
·
Nanya satu proses dalam satu waktu yang dapat memegang (hold) resource
·
Hold and wait condition
·
Suatu proses memegang satu resource dan me-request resource yang lain
·
No preemption condition
·
Resource hanya dapat di-release setelah proses menyelesaikan task-nya pada
resource tersebut
·
Circular wait condition
·
Masing-masing proses menunggu resource yang digunakan oleh proses lain
secara berantai.
·
Terdapat himpunan proses yang sedang menunggu {P0, P1, …, P0} sedemikian
sehingga P0 menunggu resource yang dipegang oleh P1 , P1 sedang menunggu
resource yang dipegang oleh P2, …, Pn–1 . Pn–1 menunggu resource yang dipegang
oleh Pn . Dan Pn menunggu resource yang dipegang oleh P0 .
Metode-metode
Penanganan Deadlocks
·
Memastikan bahwa sistem tidak akan pernah masuk ke dalam kondisi (state)
deadlock.
·
Memungkinkan sistem untuk masuk ke dalam kondisi deadlock dan kemudian
melakukan recovery (pemulihan).
·
Mengabaikan masalah deadlock dan membuat deadlock tidak pernah terjadi
dalam sistem; digunakan pada OS umumnya (Unix).
Metode
Pencegahan Deadlock (1)
Cara pencegahan (Prevention) dari sisi permintaan (request) resources :
·
Mutual Exclusion – tidak diperlukan untuk resource-resource yang di-share;
harus dipegang (hold) untuk resource-resource yang tidak di-share (nonsharable
resources).
·
Hold and Wait – harus dijamin bahwa kapanpun suatu permintaan proses pada
resource, proses tersebut tidak memegang resource yang lain.
·
Membutuhkan proses untuk me-request dan mengalokasikan resources sebelum
memulai eksekusi, atau membolehkan proses untuk me-request resource hanya
ketika proses tidak sedang memegang resource.
·
Utilisasi resource yang rendah memungkinkan terjadinya starvation.
Metode
Pencegahan Deadlock (2)
·
No Preemption
·
Jika suatu proses yang memegang beberapa resource me-request resource yang
lain yang tidak dapat secara langsung dialokasikan, maka semua resource yang
sedang dipegang dibebaskan (released).
·
Preempted resources ditambahkan ke list resources dimana proses sedang menunggu.
·
Proses akan di-restart hanya jika dapat mengambil kembali (regain)
resource, juga resource yang baru yang di-request.
·
Circular Wait
·
Membuat penomoran pada proses-proses yang mengakses resource. Suatu proses
dimungkinkan untuk dapat meminta resource kapanpun, tetapi permintaannya harus
dibuat terurut.
Syarat
Langkah Kelemahan
·
Mutual Exclusion Spooling resource Dapat menyebabkan chaos
·
Hold & Wait Meminta resource diawal Sulit memperkirakan di awal dan
tidak optimal
·
No Pre-emptive Mengambil resource di tengah jalan Hasil proses tidak akan
baik
·
Circular Wait Penomoran permintaan resource Tidak ada penomoran yang
memuaskan semua pihak
Metode
Penghindaran Deadlock (1)
·
Memberi kesempatan ke permintaan resource yang tidak mungkin menyebabkan
deadlock.
·
Jika pemberian akses tidak mungkin mengarah pada deadlock, maka resource
akan diberikan pada proses yang meminta.
·
Jika tidak aman, proses yang meminta akan di-suspend sampai suatu waktu
permintaannya aman untuk diberikan.
·
Kondisi aman (safe state)
·
Jika tidak terjadi deadlock
·
Kondisi tidak aman (unsafe state)
·
Jika tidak terdapat cara untuk memenuhi semua permintaan
Metode
Penghindaran Deadlock (2)
·
Membutuhkan sistem yang memiliki informasi resource yang tersedia.
·
Masing-masing proses memastikan jumlah maksimum resource yang diperlukan.
·
Algoritma penghindaran (avoidence) deadlock memastikan tidak akan terjadi
kondisi circular wait.
·
Kondisi (state) alokasi resource didefinisikan sebagai jumlah dan alokasi
resource yang tersedia dan maksimum permintaan resource oleh proses.
Basic
Facts
·
Jika sistem dalam kondisi aman (safe state) Þ tidak ada deadlock.
·
Jika sistem dalam kondisi tidak aman (unsafe state) Þ kemungkinan dapat
terjadi deadlock
·
Pendekatan penghindaran (avoidence) memastikan bahwa sistem tidak akan
pernah masuk ke dalam kondisi unsafe state.
Deteksi
dan Pemulihan Deadlock
·
Menentukan apakah deadlock sedang terjadi, kemudian proses-proses dan
resource yang terlibat dalam deadlock tersebut.
·
Setelah kondisi deadlock terdeteksi, maka langkah pemulihan deadlock dilakukan.
Cara
Pemulihan Deadlock
·
Ada beberapa cara untuk pemulihan deadlock :
1. Menggagalkan semua proses yang deadlock
2. Mem-backup semua proses yang deadlock dan
me-restart semua proses tersebut
3. Menggagalkan proses-proses yang deadlock
secara berturut-turut hingga tidak ada deadlock.
4. Menggagalkan pengalokasian
resource-resource secara berturut-turut hingga tidak ada deadlock.
·
Kriteria proses-proses yang akan disingkirkan :
1. Memiliki waktu proses (yang telah
berjalan) kecil.
2. Jumlah keluaran sedikit
3. Memiliki estimasi sisa waktu eksekusi
terbesar.
4. Jumlah total resource terkecil yang telah
dialokasikan