Penghindaran Dan Pemulihan Deadlock
Pada dasarnya insiden deadlock sangatlah jarang terjadi. Apabila kondisi tersebut terjadi, masing-masing sistem operasi memiliki prosedur penanganan yang berbeda. Ada sistem operasi yang ketika terdapat kondisi deadlock sanggup eksklusif mendeteksinya. Namun, ada pula sistem operasi yang bahkan tidak menyadari kalau dirinya sedang mengalami deadlock. Untuk sistem operasi yang sanggup mendeteksi deadlock, dipakai algoritma pendeteksi. Secara lebih mendalam, pendeteksian kondisi deadlock ialah cara penanganan deadlock yang dilaksanakan apabila sistem telah berada pada kondisi deadlock. Sistem akan mendeteksi proses mana saja yang terlibat dalam kondisi deadlock. Setelah diketahui proses mana saja yang mengalami kondisi deadlock, maka diadakan prosedur untuk memulihkan sistem dan menimbulkan sistem berjalan kembali dengan normal.
Mekanisme pendeteksian ialah dengan memakai detection algorithm yang akan memberitahu sistem mengenai proses mana saja yang terkena deadlock. Setelah diketahui proses mana saja yang terlibat dalam deadlock, selanjutnya ialah dengan menjalankan prosedur pemulihan sistem.
Penghindaran terhadap deadlock ialah cara penanganan yang selanjutnya. Inti dari penghindaran ialah jangan sembarangan membolehkan proses untuk memulai atau meminta lagi. Maksudnya jangan pernah memulai suatu proses apabila nantinya akan menuju ke keadaan deadlock. Kedua, jangan memperlihatkan kesempatan pada proses untuk meminta sumber daya suplemen kalau penambahan tersebut akan membawa sistem pada keadaan deadlock. Tidak mungkin akan terjadi deadlock apabila sebelum terjadi sudah kita hindari.
Langkah lain untuk menghindari ialah dengan cara tiap proses memberitahu jumlah kebutuhan maksimum untuk setiap tipe sumber daya yang ada. Selanjutnya terdapat deadlock-avoidance algorithm yang secara rutin menyelidiki state dari sistem untuk memastikan tidak adanya kondisi circular wait serta sistem berada pada kondisi safe state. Safe state ialah suatu kondisi dimana semua proses mendapat sumber daya yang dimintanya dengan sumber daya yang tersedia. Apabila tidak sanggup langsung, ia harus menunggu selama waktu tertentu, kemudian mendapat sumber daya yang diinginkan, melaksanakan eksekusi, dan terakhir melepas kembali sumber daya tersebut. Terdapat dua jenis algoritma penghindaran yaitu resource-allocation graph untuk single instances resources serta banker's algorithm untuk multiple instances resources.
Dalam banker's algorithm, terdapat beberapa struktur data yang digunakan, yaitu:
- Available . Jumlah sumber daya yang tersedia.
- Max . Jumlah sumber daya maksimum yang diminta oleh tiap proses.
- Allocation . Jumlah sumber daya yang sedang dimiliki oleh tiap proses.
- Need . Sisa sumber daya yang masih diharapkan oleh proses, didapat dari max- allocation.
- Kemudian terdapat safety algorithm untuk menentukan apakah sistem berada pada safe state atau tidak.
Pemulihan kondisi sistem terkait dengan pendeteksian terhadap deadlock. Apabila berdasarkan algoritma pendeteksian deadlock sistem berada pada keadaan deadlock, maka harus segera dilakukan prosedur pemulihan sistem. Berbahaya apabila sistem tidak segera dipulihkan dari deadlock, alasannya ialah sistem sanggup mengalami penurunan performance dan kesudahannya terhenti.
Cara-cara yang ditempuh untuk memulihkan sistem dari deadlock ialah sebagai berikut:
1.Terminasi proses. Pemulihan sistem sanggup dilakukan dengan cara melalukan terminasi terhadap semua proses yang terlibat dalam deadlock. Dapat pula dilakukan terminasi terhadap proses yang terlibat dalam deadlock secara satu per satu hingga 'lingkaran setan' atau circular wait hilang. Seperti diketahui bahwa circular wait ialah salah satu karakteristik terjadinya deadlock dan merupakan kesatuan dengan tiga karakteristik yang lain. Untuk itu, dengan menghilangkan kondisi circular wait sanggup memulihkan sistem dari deadlock.Dalam melaksanakan terminasi terhadap proses yang deadlock, terdapat beberapa faktor yang menentukan proses mana yang akan diterminasi. Faktor pertama ialah prioritas dari proses-proses yang terlibat deadlock. Faktor kedua ialah berapa usang waktu yang diharapkan untuk sanksi dan waktu proses menunggu sumber daya. Faktor ketiga ialah berapa banyak sumber daya yang telah dihabiskan dan yang masih dibutuhkan. Terakhir, faktor utilitas dari proses pun menjadi pertimbangan sistem untuk melaksanakan terminasi pada suatu proses.
2.Rollback and Restart . Dalam memulihkan keadaan sistem yang deadlock, sanggup dilakukan dengan cara sistem melaksanakan preempt terhadap sebuah proses dan kembali ke state yang aman. Pada keadaan safe state tersebut, proses masih berjalan dengan normal, sehingga sistem sanggup memulai proses dari posisi kondusif tersebut. Untuk menentukan pada dikala apa proses akan rollback, tentunya ada faktor yang menentukan. Diusahakan untuk meminimalisasi kerugian yang timbul jawaban menentukan suatu proses menjadi korban. Harus pula dihindari keadaan dimana proses yang sama selalu menjadi korban, sehingga proses tersebut tidak akan pernah sukses menjalankan eksekusi./