Tuesday, July 2, 2019

Cara menghindari dan mencegah terjadinya deadlock



Helo sobat, pada kesempatan kali ini kita akan membahas mengenai cara untuk memulihkan sistem dari deadlock, oke semoga artikel ini dapat bermanfaat.

Deadlock merupakan suatu kondisi dimana dua atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya sampai-sampai program atau aplikasi yang kita jalankan akan stop working karna daya yang kurang didapat. Deadlock adalah efek samping dari sinkronisasi, dimana satu variabel digunakan oleh 2 proses.


Secara sederhana deadlock dapat terjadi dan menjadi hal yang merugikan, jika pada suatu saat ada suatu proses yang memakai sumber daya dan ada proses lain yang berjalan.


Pendeteksian Deadlock


Deadlock merupakan suatu kondisi dimana dua atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya. Deadlock adalah efek samping dari sinkronisasi.


Pada dasarnya kejadian deadlock sangat jarang terjadi. Apabila kondisi tersebut terjadi, masing-masing sistem operasi mempunyai mekanisme penanganan yang berbeda. Ada sistem operasi yang ketika terdapat kondisi deadlock dapat langsung mendeteksinya. 


Namun, ada pula sistem operasi yang bahkan tidak menyadari kalau dirinya sedang mengalami deadlock. Untuk sistem operasi yang dapat mendeteksi deadlock, digunakan algoritma pendeteksi. Secara lebih mendalam, pendeteksian kondisi deadlock adalah 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 mekanisme untuk memulihkan sistem dan menjadikan sistem berjalan kembali dengan normal.



Pencegahan Deadlock

Pencegahan deadlock dapat dilakukan dengan cara mencegah salah satu dari empat karakteristik terjadinya deadlock. Berikut ini akan dibahas satu per satu cara pencegahan terhadap empat karakteristik tersebut.

1.      Mutual Exclusion. 


Kondisi mutual exclusion pada sumber daya adalah sesuatu yang wajar terjadi, yaitu pada sumber daya yang tidak dapat dibagi (non-sharable).


Sedangkan pada sumber daya yang bisa dibagi tidak ada istilah mutual exclusive. Jadi, pencegahan kondisi yang pertama ini sulit karena memang sifat dasar dari sumber daya yang tidak dapat dibagi.


2.      Hold and Wait. 


Untuk kondisi yang kedua, sistem perlu memastikan bahwa setiap kali proses meminta sumber daya, ia tidak sedang memiliki sumber daya lain atau bisa dengan proses meminta dan mendapatkan sumber daya yang dimilikinya sebelum melakukan eksekusi, sehingga tidak perlu menunggu.


3.      No Preemption. 


Pencegahan kondisi ini dengan cara membolehkan terjadinya preemption. Maksudnya bila ada proses yang sedang memiliki sumber daya dan ingin mendapatkan sumber daya tambahan, namun tidak bisa langsung dialokasikan, maka akan preempted.


Sumber daya yang dimiliki proses tadi akan diberikan pada proses lain yang membutuhkan dan sedang menunggu. Proses akan mengulang kembali eksekusinya setelah mendapatkan semua sumber daya yang dibutuhkannya, termasuk sumber daya yang dimintanya terakhir.


4.      Circular Wait. 


Kondisi ini dapat ‘diputus’ dengan jalan menentukan total kebutuhan terhadap semua tipe sumber daya yang ada. Selain itu, digunakan pula mekanisme enumerasi terhadap tipe-tipe sumber daya yang ada.


Setiap proses yang akan meminta sumber daya harus meminta sumber daya dengan urutan yang menaik. Misalkan sumber daya printer memiliki nomor 1 sedangkan CD-ROM memiliki nomor 3. Proses boleh melakukan permintaan terhadap printer dan kemudian CD-ROM, namun tidak boleh sebaliknya.



Penghindaran Deadlock


Penghindaran terhadap deadlock adalah cara penanganan yang selanjutnya. Inti dari penghindaran adalah jangan sembarangan membolehkan proses untuk memulai atau meminta lagi. Maksudnya adalah, jangan pernah memulai suatu proses apabila nantinya akan menuju ke keadaan deadlock. 


Kedua, jangan memberikan kesempatan pada proses untuk meminta sumber daya tambahan jika penambahan tersebut akan membawa sistem pada keadaan deadlock. Tidak mungkin akan terjadi deadlock apabila sebelum terjadi sudah kita hindari.



Sekian pembahasan mengenai Cara menghindari dan mencegah terjadinya deadlock, dari artikel diatas kita tau bahwa Deadlock merupakan suatu kondisi dimana dua atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya. Deadlock adalah efek samping dari sinkronisasi. dan terdapat 4 cara pencegahan deadlock yang umum digunakan.


Semoga artikel ini bermanfaat untuk menambah wawasan kita semua, Terimakasih atas kunjungan kalian.
NEXT ARTICLE Next Post
PREVIOUS ARTICLE Previous Post
NEXT ARTICLE Next Post
PREVIOUS ARTICLE Previous Post
 
banner