TUGAS
SISTEM
OPERASI
(DEADLOCK)
Manajemen Informatika
POLITEKNIK NEGERI FAKFAK
- ULFA
- SAIDIN PATIRAN
- KAIMUDIN KILIAN
- EKO WIBOWO SAPUTRA
Misalkan
pada suatu komputer terdapat dua buah program, sebuah tape drive dan sebuah printer.
Program A mengontrol tape
drive, sementara program B mengontrol printer.
Setelah beberapa saat, program A meminta printer,
tapi printer masih digunakan.
Berikutnya, B meminta tape drive,
sedangkan A masih mengontrol tape
drive. Dua program tersebut 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. Kondisi inilah yang disebut Deadlock atau pada beberapa buku disebut Deadly Embrace
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.
Terdapat
kaitan antara overhead dari
mekanisme koreksi dan manfaat dari koreksi deadlock itu sendiri. Pada beberapa kasus, overhead atau ongkos yang harus
dibayar untuk membuat sistem bebas deadlock menjadi hal yang terlalu mahal
dibandingkan jika mengabaikannya. Sementara pada kasus lain, seperti pada real-time process control,
mengizinkan deadlock akan
membuat sistem menjadi kacau dan membuat sistem tersebut tidak berguna.
Contoh
berikut ini terjadi pada sebuah persimpangan jalan. Beberapa hal yang dapat
membuat deadlock pada suatu
persimpangan, yaitu:
- Terdapat satu jalur pada jalan.
- Mobil digambarkan sebagai proses yang sedang menuju sumber daya.
- Untuk mengatasinya beberapa mobil harus preempt (mundur).
- Sangat memungkinkan untuk terjadinya starvation (kondisi proses tak akan mendapatkan sumber daya).
Resources-Allocation Graph
Sebuah cara
visual (matematika) untuk menentukan apakah ada deadlock, atau kemungkinan terjadinya.
G = (V, E)
Graf berisi node and edge. Node V terdiri dari proses-proses =
{P1, P2, P3, ...} dan jenis resource.
{R1, R2, ...} Edge E adalah
(Pi, Rj) atau (Ri, Pj)
Sebuah panah
dari process ke resource menandakan proses meminta resource. Sebuah panah dari resource ke process menunjukkan sebuah instance dari resource
telah dtempatkan ke proses. Process
adalah lingkaran, resource
adalah kotak; titik-titik merepresentasikan jumlah instance dari resource
Dalam tipe. Meminta poin-poin ke kotak, perintah datang dari titik.
Jika graf
tidak berisi lingkaran, maka tidak ada proses yang deadlock.
Jika
membentuk lingkaran, maka:
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.
Strategi
menghadapi Deadlock
Strategi untuk menghadapi deadlock dapat dibagi menjadi tiga
pendekatan, yaitu:
i.
Mengabaikan adanya deadlock.
ii.
Memastikan bahwa deadlock tidak akan pernah ada, baik dengan metode Pencegahan,
dengan mencegah empat kondisi deadlock
agar tidak akan pernah terjadi. Metode Menghindari deadlock, yaitu mengizinkan empat kondisi deadlock, tetapi menghentikan setiap
proses yang kemungkinan mencapai deadlock.
iii.
Membiarkan deadlock
untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung,
yaitu:
o Pendeteksian
deadlock, untuk
mengidentifikasi ketika deadlock
terjadi.
o Pemulihan deadlock, mengembalikan kembali
sumber daya yang dibutuhkan pada proses yang memintanya.
Dari penjabaran pendekatan diatas,
terdapat empat metode untuk mengatasi deadlock
yang akan terjadi, yaitu:
Strategi Ostrich
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 kerusakkan 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.
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, jadi mutual 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.
Secara ringkas pendekatan yang
digunakan pada metode pencegahan deadlock dan masalah-masalah yang
menghambatnya, terangkum dalam tabel dibawah ini.
Syarat
|
Langkah
|
Kelemahan
|
Mutual Exclusion
|
Spooling sumber daya
|
Dapat
menyebabkan chaos
|
Hold and Wait
|
Meminta
sumber daya di awal
|
Sulit
memperkirakan di awal dan tidak optimal
|
No Pre-emptive
|
Mengambil
sumber daya di tengah proses
|
Hasil
proses tidak akan baik
|
Circular Wait
|
Penomoran
permintaan sumber daya
|
Tidak ada
penomoran yang memuaskan semua pihak
|
Menghindari Deadlock
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.
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.
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.
Tidak ada komentar:
Posting Komentar