Deadlock
Deadlock:suatu kondisi dimana dua proses atau lebih tidak
dapat meneruskan eksekusinya.
Secara sederhana deadlock dapat
terjadi dan menjadi hal yang merugikan, jika pada suatu saat ada suatu proses
yang memakai sumber daya dan ada proses lain yang
menunggunya. 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. 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.
Model
Sistem
Menurut Coffman dalam
bukunya "Operating System" menyebutkan empat
syarat bagi terjadinya deadlock, yaitu:
i.Mutual Exclusion:Suatu kondisi dimana setiap sumber daya
diberikan tepat pada satu proses pada suatu waktu.
ii.Hold and Wait:Kondisi yang menyatakan proses-proses
yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.
iii.Non-pre-emptive:Kondisi dimana suatu sumber daya yang
sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses
tersebut,sampai proses itu melepaskannya.
iv.Circular Wait:Kondisi yang menyatakan bahwa adanya
rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses
lainnya
Mencegah Deadlock
Metode ini merupakan metode yang paling
sering digunakan. Metode Pencegahan dianggap sebagai solusi yang bersih
dipandang dari sudut tercegahnya deadlock. Tetapi
pencgahan 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).
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, jadimutual exclusion benar-benar
tidak dapat dihilangkan.
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.
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.
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.
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.
apa fungsi dari deadlock?
BalasHapuspengertian dari deadlock apa ??
BalasHapusapa pengertian hold and wait?? :*
BalasHapusmin jawab komenya dong kok gak ada yang di jawab
BalasHapus