3.3 Pemulihan dari Deadlock
3.3.1 Terminasi Proses
Untuk  melakukan  terminasi  proses,  terdapat  dua  metode.  Pada  kedua  metode  ini,  sistem  akan mengambil kembali seluruh sumber daya yang sedang dipegang oleh proses yang diterminasi.
1. Menghentikan  seluruh  proses  yang  mengalami  deadlock.  Metode  ini  akan  memecahkan
siklus  deadlock,  tetapi  memiliki  cost  kerugian  yang  cukup  besar.  Ada  kemungkinan bahwa  proses  yang  dihentikan  merupakan  proses  yang  telah  dikomputasi  untuk  waktu
lama sehingga ketika proses dihentikan, hasil komputasi tersebut menjadi hilang. 2.
Menghentikan  proses  satu  per  satu  sampai  siklus  deadlock  terpecahkan.  Metode  ini memerlukan  waktu  overhead  tambahan  yang  cukup  lama  karena  setiap  kali  proses
dihentikan, algoritma deteksi harus dipanggil untuk menentukan apakah masih ada siklus yang menyebabkan deadlock.
3.3.2 Menyela Penggunaan Sumber daya
Untuk memulihkan sistem dari deadlock, maka sumber daya-sumber daya yang sedang dipegang oleh  proses-proses  yang  mengalami  deadlock  akan  disela,  dan  diberikan  pada  proses  lain.  Tiga
hal ini yang harus dipertimbangkan untuk menyela penggunaan sumber daya: 1.
Pemilihan Sumber daya Urutan  sumber  daya  yang  akan  disela  harus  dipilih  untuk  meminimalkan  cost
kerugian.  Faktor  yang  mempengaruhi  cost  kerugian  antara  lain  adalah  jumlah sumber daya yang dimiliki proses dan lamanya proses telah berjalan.
2. Eksekusi kembali rollback
Universitas Sumatera Utara
Bila  sumber  daya  disela  dari  proses,  maka  proses  tidak  dapat  melanjutkan eksekusinya. Proses harus dikembalikan ke keadaan aman terakhirnya, dan dijalankan
kembali  dari  keadaan  tersebut.  Untuk  itu  sistem  harus  mempertahankan  informasi mengenai  keadaan  setiap  proses.  Karena  tidak  mudah  untuk  menentukan  letak
keadaan  aman,  maka  solusi  yang  paling  mudah  adalah  dengan  menjalankan  kembali proses dari awal.
3. Starvasi
Bila pemilihan sumber daya yang akan disela hanya didasarkan pada cost kerugian, maka  proses  dengan  prioritas  rendah  dapat  terus-menerus  mengalami  penyelaan.
Untuk  mengatasi  masalah  ini,  setiap  proses  harus  dibatasi  supaya  hanya  dapat  disela sejumlah  tertentu  saja.  Untuk  itu,  maka  jumlah  eksekusi  kembali  rollback  harus
disertakan sebagai faktor untuk menghitung cost kerugian proses. Setelah deadlock terdeteksi, maka diperlukan beberapa strategi untuk keperluan pemulihan.
Pendekatan-pendekatan yang diterapkan dan berdasarkan peningkatan kecanggihannya: 1.
Gagalkan semua proses yang ber-deadlock. Pendekatan ini, merupakan salah satu solusi yang paling umum digunakan.
2. Buatlah  back-up  proses  ber-deadlock  ke  checkpoint  yang  telah  ditetapkan
sebelumnya, dan mulailah lagi semua proses. 3.
Batalkan  proses-proses  ber-deadlock  secara  berurutan  sampai deadlock tidak  ada lagi.  Urutan  pemilihan  proses  untuk  pembatalan  harus  didasarkan  pada  berbagai
kriteria yang berisiko terkecil. Setiap kali pembatalan dilakukan, algoritma deteksi harus dilakukan untuk mengetahui apakah deadlock masih ada atau tuidak.
4. Melakukan Preemption sumber daya secara  berurutan sampai  deadlock tidak ada
lagi. Seperti pada pendekatan tiga, perlu digunakan pemilihan berdasarkan risiko, dan  pemanggilan  algoritma  deteksi  setelah  setiap  kali  preemption  diperlukan.
Suatu  proses  yang  memiliki  sumber  daya  yang  diambil  ahli  darinya  harus  di rollback ke titik sebelum sumber daya itu diperoleh.
Bagi  pendekatan  tiga  dan  empat,  pemilihan  kriteria  harus  merupakan  salah  satu  dari  yang disebutkan dibawah ini. Pilihlah proses yang
Universitas Sumatera Utara
1. Paling sedikit menghabiskan waktu prosesor sejauh ini.
2. Paling sedikit jumlah output yang dihasilkannya sejauh ini.
3. Diperkiraan paling banyak memiliki sisa waktu.
4. Paling sedikit jumlah sumber daya yang dialokasikan sejauh ini.
5. Memiliki prioritas paling rendah. Sebagian  kuantitas-kuantitas  diatas  lebih  mudah  diukur  bila  dibandingkan  kuantitas
lainnya.  Waktu  estimasi  yang  tersisa  merupakan  kuantitas  yang  paling  mudah  diukur.  Selain ukuran prioritas, tidak ada indikasi risiko bagi pengguna sebagai kebalikan dari risiko bagi sistem
secara keseluruhan.
3.4 Penghindaran Deadlock