Deadlock dan starvation
Banyak hal yang bisa dilakukan oleh computer. Seiring perkembangan dan kemajuan teknologi dan system computer, computer yang mulai dari generasi pertama sangat minim dan hanya bias menjalankan satu program saja,sekarang generasi-generasi penerusnya sudah canggih dan menjalankan banyak program sekaligus.Tetapi perjalanan banyak proses itu bisa saling mengganggu karena setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan oleh proses lain dalam himpunan tersebut.kondisi seperti ini dinamakan deadlock. Kondisi tersebut bila terjadi dalam waktu yang lama dapat menyebabkan terjadinya starvation. Dan tentunya kita sering mengalami hal seperti ini dalam penggunaan system informasi.maka dari itu, perlu kita ketahui tentang apa itu deadlock dan bagaimana penanganannya.
sistem operasi ialah pengelola seluruh sumber-daya yang terdapat pada system komputer dan menyediakan sekumpulan layanan (system calls) ke pemakai sehingga memudahkan dan menyamankan penggunaan serta pemanfaatan sumber-daya sistem computer yang berfungsi untuk mengatur dan mengawasi penggunaan perangkat keras oleh berbagai program aplikasi serta para pengguna dan sebagai program pengendali yang bertujuan untuk menghindari kekeliruan (error) dan penggunaan komputer yang tidak perlu. Dan apabila banyaknya proses dalam system operasi akan menyebabkan kekeliruan jalan dalam proses karena proses tersebut memegang control terhadap sumber daya yang dibutuhkan proses yang lainnya.jadi tidak ada yang melanjutkan proses masing-masing sampai proses lain memberikan sumber dayanya dan tidak ada yang mengalah.hal seperti ini dinamakan Deadlock atau pada beberapa buku disebut Deadly Embrace.
Deadlock adalah efek samping dari sinkronisasi, dimana satu variabel digunakan oleh 2 proses . Komunikasi antara proses membutuhkan place by calls untuk mengirim dan menerima data primitive. Terdapat rancangan yang berbeda-beda dalam implementasi setiap primitive. Pengiriman pesan mungkin dapat diblok (sinkron)dan yang tidak dapat diblok (asinkron). Keadaan dimana 2 atau lebih proses saling menunggu meminta resources untuk waktu yang tidak terbatas lamanya .Analoginya seperti pada kondisi jalan raya dimana terjadi kemacetan parah.
Gambar di samping adalah contoh terjadinyadeadlock pada dunia nyata. Pada gambar jelas terlihat bahwa lalu lintas (persimpangan) terhenti dan terjadi antrian pada empat arah datangnya mobil. Tidak ada mobil yang bisa melanjutkan perjalanan dan hanya menunggu saja. Permasalahan ini dapat dipecahkan dengan cara salah satu dari antrian tersebut mundur dan memberikan kesempatan antrian lain untuk berjalan terlebih dahulu. Kasus seperti ini sangat potensial untuk terjadinya starvation.
Beberapa hal yang dapat membuat deadlock pada suatu persimpangan, yaitu:
- Terdapat satu jalur pada jalan.
- Mobil digambarkan sebagai proses yang sedang menuju sumber daya.
- Untuk mengatasinya beberapa mobil harus preempt (mundur).
- Sangat memungkinkan untuk terjadinya starvation (kondisi proses tak akan mendapatkan sumber daya.
Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu suatu kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan oleh proses lain dalam himpunan tersebut.
Terdapat kaitan antara overhead dari mekanisme koreksi dan manfaat dari koreksideadlock itu sendiri. Pada beberapa kasus, overhead atau ongkos yang harus dibayar untuk membuat sistem bebas deadlock menjadi hal yang terlalu mahal dibandingkan jika mengabaikannya. Sementara pada kasus lain, seperti pada real-time process control, mengizinkan deadlock akan membuat sistem menjadi kacau dan membuat sistem tersebut tidak berguna.
Penyebab pertama terjadinya deadlock tidak lain dan tidak bukan adalah karena keterbatasan Resource yang ada, dengan kata lain Resouce lah yang menjadi rebutan para Proses, seandainya saja Resource yang tersedia melimpah (tidak terbatas) maka deadlock tidak akan terjadi. Selain itu penyebab lainya adalah manage yang kurang baik dari Sistem Operasi (Algoritma yang digunakan).
Deadlock bisa terjadi apabila keempat karakteristik terpenuhi. Empat kondisi tersebut adalah:
- i. Mutual Exclusion
Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu.
- ii. Hold and Wait
Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.
- iii. Non-pre-emptive
Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.
- iv. Circular Wait
Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.
Penanganan Deadlock
Strategi untuk menghadapi deadlock, yaitu:
- Pencegahan. Penanganan ini dengan cara mencegah terjadinya salah satu karakteristikdeadlock. Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada sistem. Intinya memastikan agar sistem tidak akan pernah berada pada kondisi deadlock.
- Pengabaian. Dikenal pula dengan istilah ostrich algorithm. Pelaksanaan algoritma ini adalah sistem tidak mendeteksi adanya deadlock dan secara otomatis mematikan proses atau program yang mengalami deadlock.
- Penghindaran. pencegahan dan penghindaran adalah dua hal yang berbeda. Pencegahan lebih kepada mencegah salah satu dari empat karakteristik deadlockterjadi, sehingga deadlock pun tidak terjadi. Sedangkan penghindaran adalah memprediksi apakah tindakan yang diambil sistem, dalam kaitannya dengan permintaan proses akan sumber daya, dapat mengakibatkan terjadi deadlock. Menghindari terjadinya deadlock disebut dengan DEADLOCK AVOIDANCE. Tujuan metode ini adalah menghindarkan kondisi-kondisi yang paling mungkin menimbulkan deadlock agar memperoleh utilisasi sumber daya lebih baik. Penghindaran ini bukan berarti menghilangkan semua kemungkinan terjadinya deadlock. Secara teoritis, deadlock memungkinkan. Sistem operasi memeriksa semua permintaan sumber daya secara hari-hati. Jika sistem operasi mengetahui bahwa alokasi sumber daya menimbulkan resiko deadlock, sistem menolak pengaksesan itu. Dengan menghindari terjadinya deadlock.
- Pendeteksian dan Pemulihan. sistem yang sedang berada pada kondisideadlock,tindakan yang harus diambil adalah tindakan yang bersifat represif. Tindakan tersebut adalah dengan mendeteksi adanya deadlock,kemudian memulihkan kembali system . Proses pendeteksian akan menghasilkan informasi apakah system sedang deadlock / tidak serta proses mana yang mengalami deadlock.
Tetapi ada juga kondisi dimana semua program terus berjalan secara tidak terbatas tetapi tidak ada perubahan/kemajuan yang dihasilkan disebut starvation.
Diatas, kita ketahui mengenai pengertian dari deadlock. Di contoh lalu lintas, terlihat bahwa kejadian deadlock yang berlangsung secara terus-menerus dan tiada akhir dapat menyebabkan terjadinya starvation. Akan tetapi, deadlock bukanlah satu-satunya penyebab terjadinya starvation. Lalu lintas yang didominasi oleh kendaraan-kendaraan dari satu arah pun dapat menyebabkan terjadinya starvation. Akibat yang terjadi adalah kendaraan dari arah lain menjadi terus menunggu giliran untuk berjalan hingga akhirnya mengalami starvation.
Starvation adalah kondisi yang biasanya terjadi setelah deadlock. Proses yang kekuranganresource (karena terjadi deadlock) tidak akan pernah mendapat resource yang dibutuhkan sehingga mengalami starvation (kelaparan). Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam pembagian resouce. Satu proses selalu mendapat resource, sedangkan proses yang lain tidak pernah mendapatkannya.
Rangkuman
Dalam menjalankan fungsinya dalam sistem operasi, dibutuhkan interaksi antara beberapa proses yang berbeda. Interaksi tersebut bertujuan agar terjadi kesinambungan antar proses yang terjadi sehingga sistem operasi dapat berjalan sebagaimana mestinya. Dalam interaksi antar proses, terkadang suatu proses saling menunggu proses yang lain sebelum melanjutkan prosesnya, sehingga proses-proses tersebut saling menunggu tanpa akhir, hal ini disebut deadlock. Jika deadlock terjadi dalam waktu lama, maka terjadilah starvation, yaitu suatu proses tidak mendapatkan resource yang dibutuhkan.
Sumber :lets1study.wordpress.com