Algoritma Deteksi Deadlock Pendeteksian Deadlock.

BAB 3 PEMBAHASAN

3.1 Pendeteksian Deadlock.

Setelah memodelkan sistem operasi kedalam bentuk graph alokasi sumber daya, dapat dilakukan pengecekan deadlock dengan memperhatikan cycle perputaran pada graph tersebut. Jika tidak ditemukan cycle perputaran maka dapat dipastikan sistem berada dalam kondisi aman, tidak akan terjadi deadlock pada saat running. Namun jika ditemukan cycle perputaran pada graph alokasi sumber daya belum tentu terjadi deadlock, sistem dikatakan berpotensi mengalami deadlock. Hal-hal yang terjadi dalam mendeteksi adanya deadlock adalah: 1. Permintaan sumber daya dikabulkan selama mungkin. 2. Sistem operasi memeriksa adakah kondisi circular wait secara periodik. 3. Pemeriksaan adanya deadlock dapat dilakukan setiap ada sumber daya yang hendak digunakan oleh sebuah proses. 4. Memeriksa dengan algoritma tertentu. Graph alokasi sumber daya dengan simpul sumber daya R j hanya memilki satu instants dan ditemukan cycle perputaran maka dapat dipastikan sistem akan mengalami deadlock.

3.1.1 Algoritma Deteksi Deadlock

Pemeriksaan deadlock dapat dilakukan setiap kali terjadi permintaan sumber daya, tergantung pada besarnya kemungkinan deadlock akan terjadi. Pemeriksaan setiap kali adanya permintaan sumber daya memilki dua keuntungan: pemeriksaan seperti ini akan menyebabkan terjadinya deteksi lebih awal, dan algirotma relatif sederhana karena didasarkan pada perubahan Universitas Sumatera Utara incremental ke state sistem itu. Di lain pihak, pemeriksaan sesering itu akan menghabiskan waktu prosesor. Algoritma ini menggunakan matriks alokasi dan vektor yang tersedia, dan juga harus ditentukan matriks permintaan Q sehingga q ij merepresentasikan jumlah sumber daya yang berjenis j yang diminta oleh proses i. Algoritma berlangsung dengan menandai proses yang tidak ber-deadlock. Pada saat awal, semua proses tidak bertanda. Kemudian dilakukan langkah- langkah berikut ini: 1. Tandai setiap proses yang memiliki baris dalam matriks alokasi yang seluruhnya nol. 2. Inisialisasi vektor W sehingga sama dengan vektor available tersedia. 3. Temukan suatu indeks i sehingga proses i yang saat itu tidak bertanda dan baris ke-i pada Q lebih kecil atau sama dengan W. Apabila baris seperti itu tidak ditemukan, hentikan algoritma tersebut. 4. apabila baris seperti itu ditemukan, tandai proses i dan tambahkan baris matriks alokasi yang bersangkutan ke W yaitu memasang W k = W k + A ik. Kembali kelangkah 3. Deadlock dapat terdeteksi bila terdapat proses yang tidak bertanda pada akhir algoritma. Algoritma ini mencari proses yang permintaan sumber dayanya dapat dipenuhi dengan sumber daya yang tersedia, dan kemudian mengasumsikan bahwa sumber daya-sumber daya itu diberikan dan proses akan berjalan sampai selesai dan melepaskan sumber dayanya. Kemudian algoritma akan mencari proses-proses lainnya yang akan dipenuhi. Tetapi algoritma ini tidak dapat menjamin untuk mencegah deadlock, karena akan bergantung pada urutan pemberian permintaan. Bila setiap sumber daya hanya memiliki satu instans bagian, maka algoritma untuk mendeteksi deadlock dapat menggunakan graph tunggu.

3.1.2 Pendeteksian dengan Graph tunggu