0
DEADLOCK
Posted by jujur
on
7:30 PM
DEADLOCK
Diajukan
untuk memenuhi salah satu tugas matakuliah
Sistem
Operasi
Dosen
: Herwan Herwansyah S.kom
LOGO :D
Disusun oleh:
Ganang Fuad H 10112694
Paul Jonathan P S 10112703
Jujur Soaloon 10112672
Handoko 10112718
Elvis T.J Tanaem 10111072
Yudha Nugraha 10111598
Program Studi Teknik Infotmatika
Fakultas Teknik dan Ilmu Komputer
Universitas Komputer Indonesia
2015
Fakultas Teknik dan Ilmu Komputer
Universitas Komputer Indonesia
2015
Deadlock
Deadlock atau pada
beberapa buku disebut Deadly Embrace 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.
Peranan Deadlock
Menurut Coffman dalam
bukunya “Operating System” menyebutkan empat syarat bagi
terjadinya deadlock, yaitu:
- Mutual Exclusion
- Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu.
- Hold and Wait
- Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.
- 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.
- Circular Wait
- Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
2. Strategi menghadapi Deadlock
Strategi untuk
menghadapi deadlock dapat dibagi menjadi tiga pendekatan,
yaitu:
- Mengabaikan adanya deadlock.
- 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.
- Membiarkan deadlock untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung, yaitu:
- Pendeteksian deadlock, untuk mengidentifikasi ketika deadlock terjadi.
- Pemulihan deadlock, mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya.
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 bugspada 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.
3. 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 menyebabkanchaos.
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:
- Tidak semua dapat di-spool, tabel proses sendiri tidak mungkin untuk di-spool
- Kompetisi pada ruang disk untuk spooling sendiri dapat mengarah pada deadlock
Hal inilah yang
menyebabkan mengapa syarat pertama tidak dapat ditiadakan, jadi mutual
exclusionbenar-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:
- Sulitnya mengetahui berapa sumber daya yang dibutuhkan pada awal proses
- 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:
- 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.
- 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.
Tabel Deadlock
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
|
4. 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.
- 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.
2.
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.
5. Mendeteksi Deadlock dan Memulihkan Deadlock
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 deadlockdapat 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.