DEADLOCK
I.
Pengertian
Deadlock

Deadlock
adalah keadaan dimana dua program memegang kontrol terhadap sumber daya yang
dibutuhkan oleh program yang lain. Tidak ada yang dapat melanjutkan proses
masing-masing sampai program yang lain memberikan sumber dayanya, tetapi tidak
ada yang mengalah. Deadlock yang mungkin dapat terjadi pada suatu proses
disebabkan proses itu menunggu suatu kejadian tertentu yang tidak akan pernah
terjadi. Dua atau lebih proses dikatakan berada dalam kondisi deadlock, bila
setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan oleh
proses lain dalam himpunan tersebut.
II.
Ilustrasi Deadlock
Hanya terdapat satu jalur mobil digambarkan
sebagai proses yang sedang menuju sumber daya. Untuk mengatasinya beberapa
mobil harus (mundur). Sangat memungkinkan untuk terjadinya starvation (kondisi
dimana proses tidak akan mendapatkan sumber daya)
Penyebab utama terjadinya Deadlock
adalah terbatasnya sumber daya yang akan digunakan oleh proses-proses . Tiap
proses berkompetisi untuk memperebutkan sumber daya yang ada . Jadi deadlock berhubungan erat dengan
tersedianya sumber daya dari komputer
a.
Syarat Terjadi Deadlock
1. Mutual Exclusion
Kondisi
yang pertama adalah mutual exclusion yaitu proses memiliki hak milik pribadi
terhadap sumber daya yang sedang digunakannya. Jadi, hanya ada satu proses yang
menggunakan suatu sumber daya. Proses lain yang juga ingin menggunakannya harus
menunggu hingga sumber daya tersebut dilepaskan oleh proses yang telah selesai
menggunakannya. Suatu proses hanya dapat menggunakan secara langsung sumber
daya yang
tersedia secara bebas.
Sumber
daya yang hanya dapat digunakan oleh satu proses dalam satu waktu.
Cara Menghindari :
Menerapkan
kebijakan untuk hanya memakai sumber daya yang dapat digunakan secara konkuren
2.
Hold
and Wait Condition
Proses yang sedang menggunakan satu sumber
daya menunggu untuk menggunakan sumber daya yang lain. Kondisi
yang kedua adalah hold and wait yaitu beberapa proses saling menunggu sambil
menahan sumber daya yang dimilikinya. Suatu proses yang memiliki minimal satu
buah sumber daya melakukan request lagi terhadap sumber daya. Akan tetapi,
sumber daya yang dimintanya sedang dimiliki oleh proses yang lain. Pada saat
yang sama, kemungkinan adanya proses lain yang juga mengalami hal serupa dengan
proses pertama cukup besar terjadi. Akibatnya, proses-proses tersebut hanya
bisa saling menunggu sampai sumber daya yang dimintanya dilepaskan. Sambil
menunggu, sumber daya yang telah dimilikinya pun tidak akan dilepas. Semua proses
itu pada akhirnya saling menunggu dan menahan sumber daya miliknya.
Cara Menghindari:
Mengalokasikan
seluruh sumber daya yang diperlukan oleh suatu proses sebelum proses tersebut
mulai dieksekusi
3.
Non-Preeption
Condition
Kondisi
yang selanjutnya adalah no preemption yaitu sebuah sumber daya hanya dapat
dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai
menggunakannya. Proses yang menginginkan sumber daya tersebut harus menunggu
sampai sumber daya tersedia, tanpa bisa merebutnya dari proses yang
memilikinya.
Jika sumber daya yang sedang digunakan oleh sebuah proses tidak dapat
diambil alih secara paksa.
Cara Menghindari :
Mengkondisikan jika suatu proses tidak mendapatkan sumber daya dengan
segera, maka sumber daya yang sedang digunakanya harus dilepas dulu. Sehingga
proses lain yang sedang menunggu dapat menggunakannya terlebih dulu
4.
Circular
Wait Condition
Kondisi yang terakhir
adalah circular wait yaitu kondisi membentuk siklus yang berisi proses-proses
yang saling membutuhkan. Proses pertama membutuhkan sumber daya yang dimiliki
proses kedua, proses kedua membutuhkan sumber daya milik proses ketiga, dan
seterusnya sampai proses ke n-1 yang membutuhkan sumber daya milik proses ke n.
Terakhir, proses ke n membutuhkan sumber daya milik proses yang pertama. Yang
terjadi adalah proses-proses tersebut akan selamanya menunggu.
Terdapatnya rangkaian sirkular dari 2/lebih proses masing-masing
menunggu sumber daya yang sedang dikuasai proses lain
Cara Menghindari :
Memberikan nomor urut untuk semua sumber daya
yang dialokasikan untuk proses
5.
Startvation
Jika lebih dari satu proses saling menunggu
alokasi sumber daya sampai waktu yang tidak ditentukan
6. Race Condition
Suatu keadaan dimana lebih dari satu proses menginginkan sumber daya
yang sama pada waktu yang bersamaan
III.
Model Deadlock
Sebuah sistem terdiri dari sumber daya dengan jumlah terbatas yang
didistribusikan kepada sejumlah proses yang berkompetisi untuk mendapatkan
sumber daya
Status proses terhadap sumber daya yang perlu digunakannya adalah
sebagai urutan berikut :
o Meminta (request)
: Meminta layanan I/O
o Memakai (use)
: Memakai I/O device
IV.
Penanganan
Deadlock
Terdapat cara untuk menangani keadaan
deadlock, yaitu:
1. Pengabaian.
Maksud dari pengabaian di sini adalah sistem
mengabaikan terjadinya deadlock dan pura-pura tidak tahu kalau deadlock
terjadi. Dalam penanganan dengan cara ini dikenal istilah ostrich algorithm.
Pelaksanaan algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan
secara otomatis mematikan proses atau program yang mengalami deadlock.
Kebanyakan sistem operasi yang ada mengadaptasi cara ini untuk menangani
keadaan deadlock. Cara penanganan dengan mengabaikan deadlock banyak dipilih
karena kasus deadlock tersebut jarang terjadi dan relatif rumit dan kompleks
untuk diselesaikan. Sehingga biasanya hanya diabaikan oleh sistem untuk
kemudian diselesaikan masalahnya oleh user dengan cara melakukan terminasi
dengan Ctrl+Alt+Del atau melakukan restart terhadap komputer.
2. Pencegahan.
Penanganan
ini dengan cara mencegah terjadinya salah satu karakteristik deadlock.
Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem.
Intinya memastikan agar sistem tidak akan pernah berada pada kondisi deadlock.
Akan dibahas secara lebih mendalam pada bagian selanjutnya.
3. .Penghindaran.
Menghindari
keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca adalah bahwa
antara pencegahan dan penghindaran adalah dua hal yang berbeda. Pencegahan
lebih kepada mencegah salah satu dari empat karakteristik deadlock terjadi,
sehingga deadlock pun tidak terjadi. Sedangkan penghindaran adalah memprediksi
apakah tindakan yang diambil sistem, dalam kaitannya dengan permintaan proses
akan sumber daya, dapat mengakibatkan terjadi deadlock. Akan dibahas secara lebih
mendalam pada bagian selanjutnya.
4. Pendeteksian dan Pemulihan.
Pada sistem yang
sedang berada pada kondisi deadlock, tindakan yang harus diambil adalah
tindakan yang bersifat represif. Tindakan tersebut adalah dengan mendeteksi
adanya deadlock, kemudian memulihkan kembali sistem. Proses pendeteksian akan
menghasilkan informasi apakah sistem sedang deadlock atau tidak serta proses
mana yang mengalami deadlock. Akan dibahas secara lebih mendalam pada bagian
selanjutnya.
V.
Penghindaran Deadlock
Penghindaran
terhadap deadlock adalah cara penanganan yang selanjutnya. Inti dari
penghindaran adalah jangan sembarangan membolehkan proses untuk memulai atau meminta
lagi. Maksudnya jangan pernah memulai suatu proses apabila nantinya akan menuju
ke keadaan deadlock. Kedua, jangan memberikan kesempatan pada proses untuk
meminta sumber daya tambahan jika penambahan tersebut akan membawa sistem pada
keadaan deadlock. Tidak mungkin akan terjadi deadlock apabila sebelum terjadi
sudah kita hindari.
Langkah
lain untuk menghindari adalah dengan cara tiap proses memberitahu jumlah
kebutuhan maksimum untuk setiap tipe sumber daya yang ada. Selanjutnya terdapat
deadlock-avoidance algorithm yang secara rutin memeriksa state dari sistem
untuk memastikan tidak adanya kondisi circular wait serta sistem berada pada
kondisi safe state. Safe state adalah suatu kondisi dimana semua proses
mendapatkan sumber daya yang dimintanya dengan sumber daya yang tersedia.
Apabila tidak bisa langsung, ia harus menunggu selama waktu tertentu, kemudian
mendapatkan sumber daya yang diinginkan, melakukan eksekusi, dan terakhir
melepas kembali sumber daya tersebut. Terdapat dua jenis algoritma penghindaran
yaitu resource-allocation graph untuk single instances resources serta banker's
algorithm untuk multiple instances resources.
Algoritma Deadlock-Avoidance
Algoritma
“deadlock-avoidance” secara dinamik akan memeriksa alokasi resource apakah
dapat mengarah ke status (keadaan) tidak aman (misalkan terjadi circulair wait
condition).
Banker's Algorithma, terdapat beberapa
struktur data yang digunakan, yaitu:
a. Available
. Jumlah sumber daya yang tersedia.
b. Max
. Jumlah sumber daya maksimum yang diminta oleh tiap proses.
c. Allocation
. Jumlah sumber daya yang sedang dimiliki oleh tiap proses.
d. Need
. Sisa sumber daya yang masih dibutuhkan oleh proses, didapat dari max-
allocation.
e. Kemudian
terdapat safety algorithm untuk menentukan apakah sistem berada pada safe state
atau tidak.
0 komentar:
Posting Komentar