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

Process Explorer

Process Explorer merupakan suatu program yang digunakan untuk melakukan manajemen proses yang berjalan pada sistem operasi Windows. Program ini dibuat oleh Mark Russinovich dan saat ini dimaintain oleh Sysinternals (produk dari Microsoft). Sebenarnya pada sistem operasi Windows sudah ada program manajemen proses yang sudah kita semua tahu yaitu Task Manager. Meskipun begitu, Process Explorer menyediakan fitur-fitur yang jauh lebih lengkap lagi dari pada Task Manager bawaan Windows. Program ini bisa didownload melalui link ini . Ukurannya hanya sebesar 2.5 MB. Untuk instalasi tidak perlu repot-repot karena program ini bersifat portable alias tidak perlu proses instalasi. Cukup ekstrak zip yang sudah didownload dari link di atas ke dalam folder di komputer anda. Lokasi folder bisa bebas di mana saja. Setelah diekstrak maka kita akan mendapati beberapa file berikut. Sebelum menjalankan Process Explorer, anda perlu tahu jenis bit dari sistem operasi Windows yang anda saat ini gunakan. Jika...

File Recovery (dengan Recuva Free)

Kita pasti pernah mengalami kejadian di mana kita tidak sengaja menghapus file-file penting di komputer kita. Ketika kita menghapus file, biasanya file tersebut masih tersedia di dalam Recycle Bin (Windows) atau Trash Bin (macOS). Namun, tak jarang kita menghapus file tersebut secara permanen tanpa melalui Recycle Bin terlebih dahulu atau misalnya drive yang kita pakai terformat data-datanya. Supaya bisa mengembalikan file-file yang sudah terhapus secara permanen tersebut, kita bisa menggunakan software khusus untuk mengembalikan data yang terhapus. Salah satu software tersebut yang akan dibahas pada postingan ini yaitu Recuva versi gratis. Logo Recuva (Sumber: Wikipedia) The Basics Ketika kita membuat file, selain isi dari file tersebut yang ditulis ke disk drive (harddisk atau SSD), hal lain yang ditulis ke disk adalah informasi mengenai file tersebut mulai dari lokasi, ukuran, jenis file, tag, dan sebagainya. Ketika kita menghapus file secara permanen (tanpa melalui Recycle Bin), ma...

Function

Jika sebelumnya program yang kita buat adalah contoh contoh program yang sederhana, semakin lama maka kita akan membuat program yang lebih besar dan lebih kompleks dengan fitur lebih dari satu. Pembuatan program yang kompleks dan besar dapat dipecah menjadi sub program yang lebih kecil. Hal ini membuat program yang kita buat lebih mudah dimengerti dan lebih modular. Berikut ini contoh program sederhana untuk mencari luas segitiga. Program di atas adalah contoh yang tidak modular atau tidak memiliki fungsi. Dalam hal ini, mungkin program tersebut masih mudah dibaca dan dimengerti. Namun misalnya jika kita mau mencari luas persegi, persegi panjang, trapesium, dan sebagainya, maka jika gaya penulisan di atas tetap dipakai maka program akan terlihat lebih memusingkan dan sulit dimengerti. Berikut ini contoh program yang menggunakan fungsi untuk mencari luas segitiga. Secara logika, program di atas ekuivalen dengan contoh program yang pertama. Namun, dalam contoh di atas, kita m...