Skip to main content

Mengatasi Deadlock

Deadlock merupakan kodisi di mana beberapa proses meminta resource yang sedang digunakan oleh proses lain sedangkan proses yang sedang menggunakan resource yang diminta tersebut juga sedang menunggu proses lain yang sedang menggunakan resource yang juga diperlukan oleh proses itu. Setiap resource yang diminta hanya bisa diakses oleh satu proses dalam satu waktu. Misalnya program A ingin menggunakan resource 1 yang sedang digunakan oleh program B namun program B juga ingin menggunakan resource 2 yang sedang dipegang oleh program A. Program A dan B sama-sama menunggu untuk menggunakan resource yang diperlukan sehingga terjadi deadlock karena tidak ada yang bisa melakukan tugasnya.


Berikut ini merupakan beberapa solusi yang digunakan untuk mengatasi deadlock yang terjadi pada suatu sistem.

Ostrich Algorithm

Disebut ostrich (burung unta) karena sebenarnya algoritma ini hanya mengabaikan kondisi deadlock yang terjadi. Burung unta jika ada badai maka akan memasukkan kepalanya ke dalam pasir/tanah dan menganggap sedang tidak terjadi apa-apa. Dalam kasus ini sistem tidak peduli dengan deadlock yang terjadi karena deadlock yang sangat jarang terjadi atau terlalu sulit untuk diatasi sehingga upaya yang perlu dilakukan untuk mengatasi/memperbaiki/menghindari deadlock terasa tidak diperlukan alias overkill. Mengapa harus melakukan deteksi dan perbaikan deadlock jika deadlock jarang terjadi dan jika pun terjadi hal yang diperlukan hanyalah dengan melakukan restart sistem?

Penjadwalan Preempetive dan Non Preempetive

Penjadwalan preempetive merupakan jenis penjadwalan proses berdasarkan prioritasnya. Penjadwalan jenis ini akan menghentikan sementara proses yang sedang berjalan ketika ada proses lain yang baru masuk namun mempunyai prioritas yang lebih tinggi. Jadi misalnya ada proses A dan B yang memiliki prioritas yang sama. Sistem memutuskan untuk menjalankan proses A terlebih dahulu dan proses B menunggu untuk berjalan hingga proses A selesai. Ketika proses A masih berjalan, proses C yang memiliki prioritas yang lebih tinggi masuk. Sistem lalu menunda pemrosesan pada proses A, meletakkannya pada daftar tunggu seperti proses B lalu menjalankan proses C hingga proses C selesai. Ketika proses C selesai maka proses A akan dilanjutkan kembali hingga selesai dan seterusnya hingga semua proses dijalankan dan selesai. Penjadwalan jenis ini memungkinkan sistem untuk merespon event-event yang lebih penting dan melakukan penghentian sementara terhadap proses yang dianggap tidak terlalu penting untuk menjalankan pemrosesan event-event tersebut.

Sementara itu penjadwalan non preempetive merupakan jenis penjadwalan di mana sistem tidak pernah melakukan context switch dari proses yang sedang berjalan ke proses yang lain. Dengan kata lain, proses yang sedang berjalan tidak akan dihentikan sementara ketika ada proses lain yang memiliki prioritas yang lebih tinggi mau dijalankan. Sekian.

Comments

Popular posts from this blog

Sejarah Software Komputer

Software adalah perangkat yang dibuat untuk mengendalikan hardware komputer. Secara bahasa software dapat diartikan sebagai perangkat lunak. Software merupakan bagian yang wajib ada dalam suatu sistem komputer. Tanpa software, komputer bagaikan tubuh tanpa nyawa. Berikut ini adalah era-era software komputer dan penjelasannya. 1. Era Pioneer Pada era ini bentuk software komputer pada awalnya adalah sambungan-sambungan kabel ke antar bagian dalam komputer, Cara dalam mengakses komputer adalah menggunakan punched card yaitu kartu yang di lubangi sehingga dapat merepresentasikan angka 0 dan 1. Di era ini software komputer masih sangat mengikat dengan hardware komputer. 2. Era Stabil Pada Era ini software komputer yang dijalankan bukan lagi satu software untuk satu komputer seperti di era sebelumnya, tapi sudah banyak proses yang di lakukan secara bersamaan (multi tasking). Di era ini jugalah mulai di kenal sistem basis data, yang memisahkan antara program dan data yang d...

Array

Array merupakan suatu jenis variable yang memungkinkan kita untuk menyimpan lebih dari satu data berjenis sama (integer, float, char, dsb) dalam satu variable yang sama. Setiap nilai yang tersimpan di array bisa diakses dengan indeks. Jika dianalogikan dengan kompleks perumahan, variable array adalah kompleks perumahan, nilai-nilai yang tersimpan di array adalah rumah-rumahnya, dan indeks array adalah nomor setiap rumah. Setiap indeks di array dimulai dari angka 0, bukan 1. Berikut ini adalah contoh definisi array pada bahasa Java dan Python. Perlu diingat bahwa array hanya menyimpan tipe data yang sejenis,  misalnya float dan integer tidak bisa disimpan dalam sebuah variable array yang sama. Di bahasa Java, array bersifat statis. Artinya, setelah pertama kali dideklarasi, ukuran array tidak bisa ditambah ataupun dikurangi. Jika ingin melakukan perubahan pada ukuran array, satu-satunya cara adalah dengan mendeklarasi array baru dengan ukuran yang diinginkan. Berikut me...

Solid State Drive

 Solid state drive (SSD) adalah perangkat penyimpanan yang menggunakan sirkuit elektronik, yang disebut juga memory flash, untuk menyimpan data secara permanen, berbeda dengan harddisk yang menggunakan piringan disk. SSD dikenal sebagai media penyimpanan yang lebih cepat dibandingkan harddisk serta lebih tahan terhadap guncangan ketika sedang digunakan. Solid State Drive (Sumber: unixplus.com) SSD menyimpan data menggunakan sel semikonduktor yang mana setiap selnya bisa menampung data sebanyak 1 hingga 4 bit. SSD yang menyimpan 1 bit di setiap sel dianggap sebagai yang paling durable, cepat, dan mahal dibandingkan dengan yang menyimpan data sebanyak 2-4 bit di setiap sel. Ada juga SSD yang dibuat dari RAM yang menyimpan data secara permanen menggunakan baterai sehingga RAM tersebut tetap meyimpan data walaupun arus listrik utama dimatikan. Yang terakhir ada teknologi gabungan antara SSD dan HDD yang dinamai SSHD yang bekerja dengan prinsip jika suatu data diakses lebih sering maka ...