Post on 09-Jan-2017
KUIS SISTEM OPERASI
DEADLOCK
OLEH:
FEMBI REKRISNA GRANDEA PUTRA
M0513019
JURUSAN INFORMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SEBELAS MARET
SURAKARTA
31 OKTOBER 2014
Deadlock sering dianalogikan dengan keadaan jalan raya yang mogok (macet) ataupun jalan
buntu. Masalah deadlock terjadi karena penggunaan sumberdaya (resources) yang digunakan
secara bersama-sama.
Penyebab Terjadinya Deadlock
a. Mutual exclusion, yaitu suatu keadaan di mana hanya ada satu proses saja yang boleh
memakai resource, proses yang lain harus menunggu sampai proses tadi benar-benar
selesai. Contoh mutual exclusion adalah buffering ketika kita menonton video.
b. Hold and wait, yaitu keadaan di mana suatu proses “kelaparan” sumber daya. Suatu
proses menunggu suatu sumber daya dalam waktu yang lama hingga sumber daya
tersebut tidak terpakai oleh proses lainnya.
c. No pre-emption, yaitu keadaan di mana suatu sumber daya tidak boleh diambil
(dipakai) begitu saja/secara paksa oleh proses yang lainnya sehingga suatu proses
harus menunggu hingga proses yang sedang memakai sumber daya benar-benar telah
selesai.
d. Circular wait, yaitu suatu keadaan di mana proses yang lain membutuhkan sumber
daya yang sedang dipakai oleh suatu proses sehingga timbul antrian melingkar
(waiting chain), seperti halnya rantai.
Keempat penyebab timbulnya deadlock hampir sama, yaitu penggunaan sumber daya dan
waktu tunggu oleh suatu proses atau lebih.
Cara untuk Menangani Deadlock
1. Cara pencegahan (prevention), yaitu mencegah terjadinya deadlock. Dalam hal ini,
penyebab deadlock harus diketahui sebelumnya kemudian memastikan bahwa salah
satu keadaan yang penting tidak akan menimbulkan deadlock.
Metode ini merupakan metode yang paling sering digunakan. Metode pencegahan
dianggap sebagai solusi yang bersih dipandang dari sudut tercegahnya deadlock.
Tetapi pencegahan akan mengakibatkan kinerja utilisasi sumber daya yang buruk.
Metode pencegahan menggunakan pendekatan dengan cara meniadakan empat syarat
yang dapat menyebabkan deadlock terjadi pada saat eksekusi Coffman (1971).
a. Syarat pertama yang akan dapat ditiadakan adalah mutual exclusion, jika tidak
ada sumber daya yang secara khusus diperuntukkan bagi suatu proses maka
tidak akan pernah terjadi deadlock. Namun jika membiarkan ada dua atau
lebih proses mengakses sebuah sumber daya yang sama akan menyebabkan
chaos. Langkah yang digunakan adalah dengan spooling sumber daya, yaitu
dengan mengantrikan job-job pada antrian dan akan dilayani satu-satu.
Beberapa masalah yang mungkin terjadi adalah:
i. Tidak semua dapat di-spool, tabel proses sendiri tidak mungkin untuk
di-spool.
ii. Kompetisi pada ruang disk untuk spooling sendiri dapat mengarah
pada deadlock.
Hal inilah yang menyebabkan mengapa syarat pertama tidak dapat ditiadakan,
jadi mutual exclusion benar-benar tidak dapat dihilangkan.
b. Cara kedua dengan meniadakan kondisi hold and wait terlihat lebih
menjanjikan. Jika suatu proses yang sedang menggunakan sumber daya dapat
dicegah agar tidak dapat menunggu sumber daya yang lain, maka deadlock
dapat dicegah. Langkah yang digunakan adalah dengan membuat proses agar
meminta sumber daya yang mereka butuhkan pada awal proses sehingga dapat
dialokasikan sumber daya yang dibutuhkan. Namun jika terdapat sumber daya
yang sedang terpakai maka proses tersebut tidak dapat memulai prosesnya.
Masalah yang mungkin terjadi:
i. Sulitnya mengetahui berapa sumber daya yang dibutuhkan pada awal
proses.
ii. Tidak optimalnya pengunaan sumber daya jika ada sumber daya yang
digunakan hanya beberapa waktu dan tidak digunakan tapi tetap
dimiliki oleh suatu proses yang telah memintanya dari awal.
c. Meniadakan syarat ketiga non preemptive ternyata tidak lebih menjanjikan
dari meniadakan syarat kedua, karena dengan meniadakan syarat ketiga maka
suatu proses dapat dihentikan ditengah jalan. Hal ini tidak dimungkinkan
karena hasil dari suatu proses yang dihentikan menjadi tidak baik.
d. Cara terakhir adalah dengan meniadakan syarat keempat circular wait.
Terdapat dua pendekatan, yaitu:
i. Mengatur agar setiap proses hanya dapat menggunakan sebuah sumber
daya pada suatu waktu, jika menginginkan sumber daya lain maka
sumber daya yang dimiliki harus dilepas.
ii. Membuat penomoran pada proses-proses yang mengakses sumber
daya. Suatu proses dimungkinkan untuk dapat meminta sumber daya
kapan pun, tetapi permintaannya harus dibuat terurut.
Masalah yang mungkin terjadi dengan mengatur bahwa setiap proses hanya
dapat memiliki satu proses adalah bahwa tidak semua proses hanya
membutuhkan satu sumber daya, untuk suatu proses yang kompleks
dibutuhkan banyak sumber daya pada saat yang bersamaan. Sedangkan
dengan penomoran masalah yang dihadapi adalah tidak terdapatnya suatu
penomoran yang dapat memuaskan semua pihak.
2. Cara penolakan/menghindari (avoidance), yaitu melakukan pendataan terhadap
proses-proses yang kira-kira akan menghabiskan sumber daya.
Pendekatan metode ini adalah dengan hanya memberi kesempatan ke permintaan
sumber daya yang tidak mungkin akan menyebabkan deadlock. Metode ini
memeriksa dampak pemberian akses pada suatu proses, jika pemberian akses tidak
mungkin menuju kepada deadlock, maka sumber daya akan diberikan pada proses
yang meminta. Jika tidak aman, proses yang meminta akan di-suspend sampai suatu
waktu permintaannya aman untuk diberikan. Kondisi ini terjadi ketika setelah sumber
daya yang sebelumnya dipegang oleh proses lain telah dilepaskan.
Kondisi aman yang dimaksudkan selanjutnya disebut sebagai safe-state, sedangkan
keadaan yang tidak memungkinkan untuk diberikan sumber daya yang diminta
disebut unsafe-state.
a. Kondisi Aman (Safe State)
Suatu keadaan dapat dinyatakan sebagai safe state jika tidak terjadi deadlock
dan terdapat cara untuk memenuhi semua permintaan sumber daya yang
ditunda tanpa menghasilkan deadlock. Dengan cara mengikuti urutan tertentu.
b. Kondisi Tak Aman (Unsafe State)
Suatu state dinyatakan sebagai state tak selamat (unsafe state) jika tidak
terdapat cara untuk memenuhi semua permintaaan yang saat ini ditunda
dengan menjalankan proses-proses dengan suatu urutan.
3. Detection and recovery, yaitu mendeteksi dan memperbaiki. Mendeteksi sistem apa
saja yang terlibat jika terjadi deadlock, setelah mendeteksi, sistem diperbaiki.
Metode ini mengunakan pendekatan dengan teknik untuk menentukan apakah
deadlock sedang terjadi serta proses-proses dan sumber daya yang terlibat dalam
deadlock tersebut. Setelah kondisi deadlock dapat dideteksi, maka langkah pemulihan
dari kondisi deadlock dapat segera dilakukan. Langkah pemulihan tersebut adalah
dengan memperoleh sumber daya yang diperlukan oleh proses-proses yang
membutuhkannya. Beberapa cara digunakan untuk mendapatkan sumber daya yang
diperlukan, yaitu dengan terminasi proses dan pre-emption (mundur) suatu proses.
Metode ini banyak digunakan pada komputer mainframe berukuran besar.
a. Terminasi Proses
Metode ini akan menghapus proses-proses yang terlibat pada kondisi deadlock
dengan mengacu pada beberapa syarat. Beberapa syarat yang termasuk dalam
metode ini adalah, sebagai berikut:
i. Menghapus semua proses yang terlibat dalam kondisi deadlock (solusi
ini terlalu mahal).
ii. Menghapus satu persatu proses yang terlibat, sampai kondisi deadlock
dapat diatasi (memakan banyak waktu).
iii. Menghapus proses berdasarkan prioritas, waktu eksekusi, waktu untuk
selesai, dan kedalaman dari rollback.
b. Resources Preemption
Metode ini lebih menekankan kepada bagaimana menghambat suatu proses
dan sumber daya, agar tidak terjebak pada unsafe condition.
Beberapa langkahnya, yaitu:
i. Pilih salah satu proses dan sumber daya yang akan di-preempt.
ii. Rollback ke safe state yang sebelumnya telah terjadi.
iii. Mencegah suatu proses agar tidak terjebak pada starvation karena
metode ini.
4. Mengabaikan deadlock, yaitu membiarkan deadlock seolah tidak terjadi apa-apa dan
membiarkan deadlock tersebut mematikan program. Hal ini merupakan algoritma
Ostrich untuk menangani deadlock. Pendekatan yang paling sederhana adalah dengan
menggunakan strategi burung unta: masukkan kepala dalam pasir dan seolah-olah
tidak pernah ada masalah sama sekali. Beragam pendapat muncul berkaitan dengan
strategi ini. Menurut para ahli matematika, cara ini sama sekali tidak dapat diterima
dan semua keadaan deadlock harus ditangani. Sementara menurut para ahli teknik,
jika komputer lebih sering mengalami kerusakan disebabkan oleh kegagalan
hardware, error pada kompilator, atau bugs pada sistem operasi. Maka ongkos yang
dibayar untuk melakukan penanganan deadlock sangatlah besar dan lebih baik
mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi
UNIX dan MINIX.
Sumber: http://2010219ifunsika.wordpress.com/2012/12/26/deadlock-pada-sistem-operasi/
http://ikc.dinus.ac.id/umum/ibam/ibam-os-html/i32.html