Deadlock & Starvation

ilustrasi deadlock

Deadlock

Deadlock/kebuntuan adalah kondisi dimana suatu proses tidak berjalan lagi atau tidak ada lagi komunikasi antar proses.

Penyebab deadlock:

  • Kondisi mutual exclusion
    Hanya ada satu proses yang menggunakan suatu sumber daya.Proses lain yang juga ingin menggunakannya harus menunggu hingga sumber daya tersebut dilepaskan oleh proses yang telah selesai  menggunakannya.
  • Kondisi hold and wait
    Suatu proses yang memiliki minimal satu buah sumber daya melakukan request lagi terhadap  sumber daya. Tetapi, sumber daya yang dimintanya sedang dimiliki oleh proses yang lain.
  • Kondisi non-preemptive
    Sebuah sumber daya hanya dapat dilepaskan oleh proses yang memilikinya secara sukarela setelah ia selesai menggunakannya.
  • Kondisi circular wait
    Kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses berikutnya.

Ada beberapa jalan untuk kembali dari Deadlock, yaitu:

  • Lewat Preemption.
    Dengan cara menjauhkan sumber daya dari pemakainya untuk sementara waktu dan memberikannya pada proses lain
  • Lewat Melacak Kembali.
    Setelah melakukan beberapa langkah preemption, maka proses utama yang diambil sumber dayanya akan berhenti dan tidak dapat melanjutkan kegiatannya. Oleh karena itu dibutuhkan langkah untuk kembali pada keadaan aman dimana proses masih berjalan dan memulai proses lagi dari situ.
  • Lewat membunuh proses yang  menyebabkan Deadlock.
    Kriteria calon proses yang akan dibunuh/ kill:

    • Yang paling jarang memakai prosesor.
    • Yang paling sedikit hasil programnya.
    • Yang paling banyak memakai sumber daya sampai saat ini.
    • Yang alokasi sumber daya totalnya tersedikit.
    • Yang memiliki prioritas terkecil.

Cara menghindari deadlockk:

  • Jangan memulai proses apa pun jika proses tersebut akan membawa kita pada kondisi Deadlock.
  • Jangan memberi kesempatan pada suatu proses untuk meminta sumber daya lagi jika penambahan ini akan membawa kita pada suatu keadaan Deadlock.

Algoritma Bankir

Algoritma ini ibarat seorang banker yang berurusan dengan orang-orang yang ingin meminjam uang. Jadi kepada siapa dia dapat memberikan pinjamannya. Dan setiap pelanggan memberikan batas pinjaman maksimum kepada setiap peminjam dana. Deadlock akan terjadi jika seorang peminjam belum mengembalikan uangnya namun ingin meminjam kembali, padahal uang yang belum dikembalikan tadi dibutuhkan oleh peminjam lain yang juga belum mengembalikan uang pinjamannya.

algoritma bankir dapat dibagi menjadi empat struktur data:

  • Tersedia (Jumlah sumber daya/dana yang tersedia)
  • Maksimum (Jumlah sumber daya maksimum yang diminta oleh setiap proses)
  • Alokasi (Jumlah sumber daya yang dibutuhkan oleh setiap proses)
  • Kebutuhan (Maksimum-alokasi, sisa sumber daya yang dibutuhkan oleh proses setelah dikurangi dengan yang dialokasikan)

Starvation

adalah kondisi dimana ada proses yang tidak pernah dieksekusi karena tidak pernah mendapat jatah sumber daya.

Iklan

Ayo ketik komentar!

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s