Anda di halaman 1dari 32

Deadlock

Dahlan Abdullah
Teknik Informatika
Universitas Malikussaleh
Pembahasan
System Model
Karakteristik Deadlock
Metode-metode Penanganan Deadlock
Deadlock Prevention
Deadlock Avoidance
Deadlock Detection
Deadlock
Deadlock adalah suatu kondisi dimana dua proses atau lebih
tidak dapat meneruskan eksekusinya
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
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)
. .
. .
. .
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
akan menyebabkan proses gagal jika diambil
System Model

Tipe resource R1, R2, . . ., Rm


CPU cycles, memory space, I/O devices
Masing-masing proses melakukan utilisasi resources
1. Meminta (request) resource
2. Menggunakan resource
3. Membebaskan (release) the 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 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, , Pn1 . Pn1
menunggu resource yang dipegang oleh Pn . Dan Pn menunggu resource
yang dipegang oleh P0 .
Resource-Allocation Graph (1)
Terdapat himpunan vertices V dan himpunan edges E.

V dipartisi ke dalam dua tipe :


P = {P1, P2, , Pn}, himpunan proses dalam sistem.
R = {R1, R2, , Rm}, himpunan tipe resource dalam sistem.
Request edge directed edge P1 Rj
Assignment edge directed edge Rj Pi
Resource-Allocation Graph (2)
Proses

Tipe Resource dengan 4 instances

Pi meminta (requests) instance dari Rj Pi


Rj

Pi mendapat (holding) instance dari Rj


Pi
Rj
Contoh Resource Allocation Graph
Resource Allocation Graph-Deadlock
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
Proses P1 menunggu P2 untuk membebaskan R1
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.
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
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.
Tabel Deadlock
Syarat Langkah Kelemahan
Mutual Exclusion Spooling resource Dapat menyebabkan
chaos
Hold & Wait Meminta resource Sulit memperkirakan di
diawal awal dan tidak optimal
No Pre-emptive Mengambil Hasil proses tidak akan
resource di tengah baik
jalan
Circular Wait Penomoran Tidak ada penomoran
permintaan yang memuaskan semua
resource 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.
Safe, Unsafe , Deadlock 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 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
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.
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 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
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
END OF MODUL - 8

Anda mungkin juga menyukai