Selamat Datang Di Blog Saya Semoga Anda Terpuaskan Posted by @ surya yngwie posting by : suryayngwie: DEADLOCK

Surya Hadi Putra

Sabtu, 31 Juli 2010

DEADLOCK
Posted by @ surya hadi putra [surya.tse@gmail.com]

Pengertian deadlock
 
Menurut bahasa arti dari kata deadlock adalah kondisi buntu. Di dalam Sistem Operasi Deadlock memiliki arti suatu kondisi dimana sekumpulan peroses tidak dapat berjalan kenbali akibat adanya saling menunggu antara dua atau lebih proses yang menunggu suatu kejadian dan kejadian tersebut hanya dapat di lakukan oleh proses lainnya, dan hal ini dapat di sebabkan karna tidak adanya komunikasi antar proses. Seperti telah disebutkan pada pengartian di atas bahwa kondisi Deadlock marupakan kondisi dimana dua atau lebih proses yang salaing menunggu. Dalam kehidupan nyata kita juga dapat melihat kondisi dimana Deadlock terjadi, sebagai gambaran kondisi deadlock adalah pemakaian jalur kerata api. Pada jalur kereta api kreta harus bergantian dalam menggunakan jalur tunggal, kondisi deadlock pada jalur kreta dapat terjadi apabila dua kereta hendak melalui jalur tunggal pada waktu yang sama.
4 kondisi yang menyebabkan deadlock

  • Mutual Exlusif dimana sebuah resource hanya dapat digunakan oleh sebuah proses pada suatu waktu tertentu. (resource yang non-shareable.)

  • Hold and Wait dimana terdapat proses yang sedang menunggu dan memegang resource.

  • Non_preemption dimana resource tidak dapat digunakan sebelum proses yang menggunakan telah selesai menggunakan dan kemudian melepaskannya.

  • Circular wait dimana proses-proses berada dalam lingkaran. Terjadi saling menunggu resource yang sedang digunakan oleh proses berikutnya dalam lingkaran tersebut.
Cara menanggulangi deadlock

  1. Mengabaikan masalah deadlock

  2. Mendeteksi dan memperbaiki

  3. Deadlock avoidance system

  4. Deadlock prevention sistem

Pada gambar di atas adalah kondisi deadlock pada jembatan. Dapat kita lihat bahwa proses terhenti akibat adanya saling menunggu antara dua proses tersebut. Mobil kuning 1 menunggu Mobil kuning 2 untuk lewat terlebih dahulu, dan Mobil kuning 2 menunggu kuning 1 untuk lewat terlebih dahulu juga. Dari hal tersebut dapat kita lihat bahwa terjadinya deadlock di atas di sebabkan karna tidak adanya komunikasi antara kedua mobil tersebut. Mobil 1 tidak memberitahu Mobil 2 bahwa ia mempersilahkan Mobil 1 untuk lewat terlebih dahulu dan hal sebaliknya juga terjadi pada mobil 2. Secara umum proses terdiri atas tiga tahap yaitu meminta, melapaskan, dan memakai. Berikut ini adalah contoh code program dalam java yang dapat menyebabkan dead lock yang terdiri dari tiga tahap tersebut.

 
Algoritma Bankir
Algoritma penjadualan ini diungkapkan oleh Dijkstra (1965) lebih dikenal dengan nama Algoritma Bankir. Model ini menggunakan suatu kota kecil sebagai percontohan dengan suatu bank sebagai sistem operasi, pinjaman sebagai sumber daya dan peminjam sebagai proses yang membutuhkan sumber daya. Deadlock akan terjadi apabila terdapat seorang peminjam yang belum mengembalikan uangnya dan ingin meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga belum mengembalikan uang pinjamannya.
Beberapa kelemahan algoritma Bankir Tanenbaum (1992), Stallings (1995) dan Deitel (1990) adalah sebagai berikut:
  1. Sulit untuk mengetahui seluruh sumber daya yang dibutuhkan proses pada awal eksekusi.
  2. Jumlah proses yang tidak tetap dan berubah-ubah.
  3. Sumber daya yang tadinya tersedia dapat saja menjadi tidak tersedia kembali.
  4. Proses-proses yang dieksekusi haruslah tidak dibatasi oleh kebutuhan sinkronisasi antar proses.
  5. Algoritma ini menghendaki memberikan semua permintaan selama waktu yang berhingga.

Tidak ada komentar:

Posting Komentar