Deadlock
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 : P0 P1 semaphores A dan B, di-inisialisasi 1 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… Preemptable resources 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 Meminta (request) resource Menggunakan resource 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, …, Pn–1 . Pn–1 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 mendapat (holding) instance dari Rj Pi 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 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.
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