Pembahasan
• System Model
• Karakteristik Deadlock
• Metode-metode Penanganan Deadlock
• Deadlock Prevention
• Deadlock Prevention
• Deadlock Avoidance
• Deadlock Detection
Deadlock
• Deadlock adalah suatu kondisi dimana dua proses
atau lebih tidak dapat meneruskan eksekusinya
• Permasalahan deadlock terjadi karena sekumpulan
proses-proses yang di-blok dimana setiap proses
membawa sebuah sumber daya dan menunggu
membawa sebuah sumber daya dan menunggu
mendapatkan sumber daya yang dibawa oleh
proses lain.
• Misalnya sistem mempunyai 2 tape drive dan
terdapat dua proses P1 dan P2 yang masing
masing membawa satu tape drive dan
masing-masing memerlukan tape
Resources
(1)
• Contoh resources sistem komputer
– printers – tape drives
• Proses-proses membutuhkan akses ke resource secara teratur
• Contoh 1 : suatu proses memegang (hold) resource A dan • Contoh 1 : suatu proses memegang (hold) resource A dan
meminta resource B
– pada saat yang sama proses lain sedang memegang resource B dan meminta resource A
– masing-masing proses melakukan block, dalam kondisi seperti ini terjadi deadlock
Resources
(2)
• Contoh 2 :
– semaphores A dan B, di-inisialisasi 1
P0 P1
wait (A); wait(B)
wait (B); wait(A) wait (B); wait(A) . . . . . . signal(A) signal(B) signal(B) signal(A)
Resources
(3)
• Contoh 3 :
– 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
(4)
• 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
System Model
• Tipe resource R
1, R
2, . . ., R
m– CPU cycles, memory space, I/O devices
• Masing-masing proses melakukan utilisasi
resources
resources
1. Meminta (request) resource 2. Menggunakan resource
4 Kondisi Terjadinya Deadlock
• Kondisi Mutual exclusion
– hanya 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 – 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 .
Resource-Allocation Graph
(1)
• V dipartisi ke dalam dua tipe :
– P = {P1, P2, …, Pn}, himpunan proses dalam sistem.
– R = {R1, R2, …, Rm}, himpunan tipe resource dalam sistem.
Terdapat himpunan vertices V dan himpunan edges E.
– R = {R1, R2, …, Rm}, himpunan tipe resource dalam sistem.
• Request edge – directed edge P
1→
R
j
• Assignment edge – directed edge R
j→
P
Resource-Allocation Graph
(2)
• Proses
• Tipe Resource dengan 4 instances
• Pi meminta (requests) instance dari Rj
• Pi mendapat (holding) instance dari Rj
Pi
Rj
Pi
Siklus Graph
• P1 ⇒ R1 ⇒ P2 ⇒ R3 ⇒ P3 ⇒ R2 ⇒ P1
• P2 ⇒ R3 ⇒ P3 ⇒ R2 ⇒ P2
• Proses P1, P2 dan P3 akan mengalami deadlock
– Proses P2 menunggu resource R3 yang dibawa oleh P3 – Disisi lain, P3 menunggu proses P1 atau P2 untuk
membebaskan resource R2
Resource Allocation Graph
Cycle - Tidak Deadlock
Siklus Graph
• P1 ⇒ R1 ⇒ P3 ⇒ R2 ⇒ P1
• Tidak ada proses yang mengalami deadlock
– P4 dapat membebaskan satu anggota resource tipe R2 yang kemudian dapat dialokasikan ke P3 sehingga
mampu memutuskan siklus yang ada. mampu memutuskan siklus yang ada.
Basic Facts
• Jika graph tidak mengandung cycle ⇒ no deadlock.
• Jika graph mengandung cycle ⇒
– Jika hanya satu instance per tipe resource, maka terjadi deadlock.
– Jika beberapa instances per tipe resource, kemungkinan dapat terjadi deadlock.
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
kondisi deadlock dan kemudian melakukan
recovery (pemulihan).
• Mengabaikan masalah deadlock dan membuat
deadlock tidak pernah terjadi dalam sistem;
Metode Pencegahan Deadlock
(1)
• 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
Cara pencegahan (Prevention) dari sisi permintaan (request) resources :
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
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.
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.
Tabel Deadlock
Syarat
Syarat
Langkah
Langkah
Kelemahan
Kelemahan
Mutual Exclusion
Mutual Exclusion Spooling resourceSpooling resource Dapat menyebabkan Dapat menyebabkan chaos
chaos
Hold & Wait
Hold & Wait Meminta resource Meminta resource diawal
diawal
Sulit memperkirakan di Sulit memperkirakan di awal dan tidak optimal awal dan tidak optimal diawal
diawal awal dan tidak optimalawal dan tidak optimal
No Pre
No Pre--emptiveemptive Mengambil Mengambil
resource di tengah resource di tengah jalan
jalan
Hasil proses tidak akan Hasil proses tidak akan baik
baik
Circular Wait
Circular Wait Penomoran Penomoran permintaan permintaan resource resource
Tidak ada penomoran Tidak ada penomoran yang memuaskan semua 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 – 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 – Algoritma penghindaran (avoidence) deadlock memastikan
tidak akan terjadi kondisi circular wait.
• Kondisi (state) alokasi resource didefinisikan sebagai
jumlah dan alokasi resource yang tersedia dan
Basic Facts
• Jika sistem dalam kondisi aman (safe state) ⇒ tidak
ada deadlock.
• Jika sistem dalam kondisi tidak aman (unsafe state)
⇒
kemungkinan dapat terjadi deadlock
kemungkinan dapat terjadi deadlock
• Pendekatan penghindaran (avoidence) memastikan
bahwa sistem tidak akan pernah masuk ke dalam
kondisi unsafe state.
Algoritma Bankir
(1)
• Dijkstra (1965) : algoritma penjadwalan dapat
menghindari deadlock, dikenal dengan Algoritma
Bankir.
• Algoritma ini digambarkan : bank sebagai OS,
pinjaman sebagai resource, dan peminjam sebagai
pinjaman sebagai resource, dan peminjam sebagai
proses yang membutuhkan resource.
• Deadlock akan terjadi apabila terdapat seorang
peminjam yang belum mengembalikan uangnya dan
ingin meminjam kembali, padahal uang yang belum
dikembalikan tadi dibutuhkan oleh peminjam lain
yang juga belum mengembalikan uang pinjamannya.
Algoritma Bankir
(2)
• Jadi algoritma bankir ini mempertimbangkan apakah
permintaan mereka itu sesuai dengan jumlah dana
yang ia miliki, sekaligus memperkirakan jumlah dana
yang mungkin diminta lagi. Jangan sampai ia sampai
pada kondisi dimana dananya habis dan tidak dapat
pada kondisi dimana dananya habis dan tidak dapat
meminjamkan uang lagi. Jika demikian maka akan
terjadi kondisi Deadlock. Agar kondisi aman, maka
asumsi setiap pinjaman harus dikembalikan waktu
yang tepat.
Struktur Algoritma Bankir
• Tersedia
– Jumlah sumber daya/dana yang tersedia.
• Maksimum
– Jumlah sumber daya maksimum yang diminta oleh setiap proses.
proses.
• Alokasi
– Jumlah sumber daya yang dibutuhkan oleh setiap proses.
• Kebutuhan
– Maksimum-alokasi, sisa sumber daya yang dibutuhkan oleh proses setelah dikurangi dengan yang dialokasikan.
Kelemahan Algoritma Bankir
• Sulit mengetahui seluruh resource yang dibutuhkan
proses pada awal eksekusi.
• Jumlah proses yang tidak tetap dan berubah-ubah.
Mulai dari user login hingga logout.
• Resource yang tadinya tersedia dapat saja menjadi
• Resource yang tadinya tersedia dapat saja menjadi
tidak tersedia kembali.
• Proses-proses yang dieksekusi haruslah tidak dibatasi
oleh kebutuhan sinkronisasi antar proses.
• Algoritma bankir menghendaki memberikan semua
permintaan selama waktu yang berhingga.
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 :
– Menggagalkan semua proses yang deadlock
– Mem-backup semua proses yang deadlock dan me-restart semua proses tersebut
– Menggagalkan proses-proses yang deadlock secara berturut-turut hingga tidak ada deadlock.
– Menggagalkan pengalokasian resource-resource secara – Menggagalkan pengalokasian resource-resource secara
berturut-turut hingga tidak ada deadlock.
• Kriteria proses-proses yang akan disingkirkan :
– Memiliki waktu proses (yang telah berjalan) kecil. – Jumlah keluaran sedikit
– Memiliki estimasi sisa waktu eksekusi terbesar.
– Jumlah total resource terkecil yang telah dialokasikan – Memiliki prioritas terkecil