Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses untuk melepaskan sumber daya atau resources yang sedang dipakai. Nah bagi kebanyakan orang, mungkin sumber daya atau resource ini tidak bisa kita lihat langsung secara mata kita. Tidak seperti error-error lain seperti virus yang bisa kita lihat secara langsung. Namun deadlock ini memang sulit dideteksi secara langsung.
Untuk mempermudah kita dalam pemahaman mengenai deadlock ini Anda bisa membayangkan masalah dalam kehidupan kita. "Dalam kehidupan, tentunya kita membutuhkan pekerjaan. Untuk memperoleh pekerjaan, kita harus punya pengalaman. Untuk punya pengalaman, kita harus bekerja dulu. Dan seterusnya..." Itulah analogi bagaimana deadlock itu terjadi.
Lebih dalam mengenai deadlock
Seperti yang sudah saya jelaskan ditas, deadlock memang sangat sulit untuk dideteksi. Tidak semudah kita mendeteksi virus, maka dari itu tidak heran apabila sebuah OS sering membiarkan deadlock itu terjadi. Nah lalu apa contoh deadlock ? Ya salah satu contoh deadlock adalah blue screen. Namun tidak semua blue screen merupakan deadlock. Hanya sebagian error blue screen merupakan akibat dari deadlock (ingat, bluescreen dapat disebabkan oleh berbagai macam penyebab, bukan 1 penyebab saja). Maka dari itu, windows memang sengaja membiarkan blue screen itu terjadi karena memang sangat sulit untuk mendeteksi blue screen.
Lalu apa penyebabnya ?
Kalau secara kasus nyata, deadlock ini bisa disebabkan oleh banyak hal dan bukan karena 1 hal saja. Seperti yang sudah saya terangkan diatas salah satu deadlock adalah blue screen, blue screen bisa disebabkan karena driver, bios, ram,processor,dll. Untuk mengetahui dengan jelas apa penyebab blue screen Anda bisa melihat di link berikut :https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-code-reference2
Bagaimana proses terjadinya deadlock ?
Ingat, deadlock bisa terjadi karena berbagai macam penyebab, namun deadlock terjadi hanya dengan 4 kondisi berikut. Apabila 4 kondisi berikut tidak terjaid, maka hal tersebut tidak bisa dianggap sebagai deadlock.4 Kondisi yang menunjukan bahwa deadlock terjadi :
1. Mutual Exclusion, mutual exclusion terjadi ketika resource yang digunakan adalah resource yang non shareable.2. Hold and Wait, terdapat suatu proses yang menahan resource, padahal resource tersebut telah dialokasikan oleh proses yang lain
3. No Preemption, resource yang telah di alokasikan untuk sebuah proses tidak dapat didahului oleh proses lain.
4. Circular Wait, beberapa proses membentuk urutan rantai berbentuk sirkular dimana masing-masing proses menunggu proses sebelumnya untuk selesai.
4 Kondisi tersebut tidak bisa kita lihat secara langsung seperti yang sudah saya katakan diatas. Karena memang deadlock itu sulit dideteksi. Istilah yang mungkin Anda kurang tau adalah "Resource" dan "proses".
Resource adalah sumber daya yang digunakan untuk melakukan proses tertentu. Sumber daya ini bisa berupa printer, CD-room, dll
proses adalah sesuatu yang dilakukan dengan melibatkan resource sehingga apabila resource tidak tersedia, maka proses juga tidak akan dijalankan.
Penggambaran Deadlock
Mari kita lihat penggambaran deadlock berikut dengan menggunakan resource allocation graph. Apa itu resource allocation graph ? Nanti akan saya jelaskan satu per satu.1. Tidak terjadi deadlock
Nah bisa Anda lihat, kondisi diatas adalah kondisi yang tidak mengalami deadlock. Cara membacanya seperti ini :
R2 menunjuk ke P1 artinya R2 dialokasikan di P1
R2 menunjuk ke P2 artinya R2 dialokasikan di P2
P1 menunjuk ke R1 artinya P1 meminta R1 untuk menjalankan prosesnya
R4 tidak menunjuk ke siapapun maka R4 tidak digunakan
dan seterusnya..
Nah, mari kita lihat mulai dari P1. P1 ini ditunjuk oleh R2. artinya R2 sudah dialokasikan di P1. Lalu P1 menunjuk ke R1, artinya P1 meminta R1 untuk menjalankan prosesnya. Tapi sayangnya R1 sudah dialokasikan di P2 karena R1 menunjuk ke P2. Lalu R2 juga menunjuk ke P2 artinya R2 sudah di alokasikan di P2. Lalu P2 juga membutuhkan R3 untuk menjalankan prosesnya. Tapi sayangnya R3 sudah dialokasikan untuk P3. Tapi kita lihat, P3 sudah tidak meminta sana sini lagi dan bisa langsung menjalankan prosesnya dengan resource R3. Lalu P3 dijalankan. Setelah dijalankan, R3 akan dikembalikan ke tempat semula. Lalu kembali lagi P2 tadi kan meminta R3, maka R3 akan mengalokasikan diri ke P2. Lalu P2 dijalankan. Setelah selesai menjalankan P2, maka R1, R2, R3 akan lepas alias sudah bisa digunakan oleh proses lain. Nah P1 akhirnya bisa menjalankan prosesnya.
Pusing ya ? hahah..
Nah dari situ bisa kita lihat tidak ada masalah, karena semua proses bisa dijalankan dengan baik.
2. Terjadi deadlock
Gambar diatas hampir sama dengan gambar sebelumnya, hanya yang berbeda adalah P3 meminta resource di R2. Padahal sudah kita ketahui bahwa R2 saja sudah dialokasikan ke P1 dan P2, maka dari itu akan memutar-mutar terus menerus dan menimbulkan DEADLOCK.
3 Metode untuk menangani deadlock :
1. Menggunakan protocol untuk menjamin bahwa sistem tidak pernah memasuki status deadlock2. Mengijinkan sistem memasuki status deadlock dan kemudian memperbaikinya.
3. Mengabaikan permasalahan dan seakan-akan deadlock tidak pernah terjadi pada sistem. Model ini yang banyak digunakan pada sistem operasi termasuk UNIX.
Cara menghindari deadlock
Nah sebelum kita belajar bagaimana cara menghindari deadlock, ktia harus tau dulu bagaimana agar sistem tidak berpotensi mengalami deadlock. Nah jadi ada yang disebut dengan state aman dan tidak aman.- Sistem dikatakan dalam state aman jika sistem dapat mengalokasikan sumber daya untuk setiap proses secara berurutan dan menghindari deadlock.
- Sistem dikatakan dalam state tidak aman jika sistem tidak dapat mengalokasikan sumber daya untuk setiap proses secara berurutan yang dapat mengakibatkan terjadinya deadlock
Cara memastikan sistem dalam keadaan aman
1. Resource Allocation Graph Algorithm
Sebenarnya ini sudah saya jelaskan diawal tadi, namun gak papa saya jelaskan lagi.
Bisa kita lihat apabila kondisi tersebut dijalankan, maka akan terjadi deadlock. Nah tapi kondisi pada gambar tersebut sebenarnya belum sepenuhnya dijalankan.
Jadi bisa kita lihat garis yang utuh (tidak putus2) seperti pada R1 menunjuk ke P1. Artinya R1 sudah dialokasikan di P1 sedangkan P1 meminta R2 tapi dengan garis putus2. Garis putus2 ini menunjukan bahwa P1 belum meminta ke R2 tapi mencoba-coba untuk meminta R2. Nah demikian juga pada P2 yang mencoba-coba meminta R2. Ternyata saat dilakukan proses percobaan (BELUM SEPENUHNYA DIJALANKAN HANYA MENCOBA-COBA) dapat mengalami deadlock. Maka dari itu hal yang harus dilakukan adalah R2 mengalokasikan ke P1 dulu baru mengalokasikan ke P2 sehingga tidak terjadi deadlock.
Bagi Anda yang masih belum mengerti bisa lihat di video berikut :
https://www.youtube.com/watch?v=e1XKHa1YhLA
2. Banker Algorithm
Nah gambar diatas adalah salah satu tabel resource dan proses yang akan dijalankan. Lalu cara mengeceknya seperti ini
untuk lebih jelas Anda bisa lihat di video ini
https://www.youtube.com/watch?v=w0LwGqffUkg
Bagaimana Cara Memperbaiki Deadlock Pada Komputer Kita
1. Biarkan deadlock itu terjadi (contoh bluescreen)2. Tulis apa pesan error tersebut
3. Cari di internet bagaimana cara mengatasi error tersebut. Contoh kerusakan driver vga.
Ingin tau bagaimana cara lengkap untuk memperbaiki blue screen ? Yuk baca
Cara Mudah Memperbaiki Blue Screen Pada Windows
Pengen Buat Windows Kita Blue Screen ? Begini Caranya !
Semoga bermanfaat :D Jangan lupa share :)
Posting Komentar