4.6 PENANGANAN DEADLOCK
Pada sebuah sistem komputer di mana terdapat beberapa proses yang ber- jalan secara konkuren, seringkali terjadi persaingan dalam memperebut- kan sumber daya yang digunakan sehingga dapat menyebabkan seluruh proses yang terlibat tidak dapat melanjutkan eksekusinya. Kondisi ini disebut dengan deadlock, yaitu kondisi dimana dua proses atau lebih tidak dapat meneruskan eksekusinya karena saling menunggu aksi ataupun sumber daya digunakan oleh proses lainnya. Contoh sederhana dalam kehidupan sehari-hari adalah terjadinya kemacetan lalu lintas seperti pada Gambar 4.20. Masing-masing kendaraan pada persimpangan menunggu mobil di depannya lewat terlebih dahulu. Terjadinya saling See menunggu yang sirkular menyebabkan kemacetan lalu lintas sehingga tidak satupun dari mobil tersebut yang dapat bergerak maju.
Sekumpulan proses berkondisi deadlock bila setiap proses yang berada dalam kumpulan itu menunggu kejadian yang hanya dapat dipenuhi dengan selesainya eksekusi proses lain yang juga berada dalam kumpulan itu. Akibatnya kejadian yang dinantikan oleh proses-proses tersebut tidak akan pernah terjadi. Deadlock hanya terjadi ketika proses-proses hendak mengakses lebih dari satu sumber daya secara eksklusif dan terjadi persaingan memperoleh sumber daya tersebut dengan proses-proses lainnya.
Gambar 4.20 Ilustrasi kondisi deadlock pada kemacetan lalu lintas
124
Sistem Operasi
Selain deadlock, perebutan sumber daya dapat menyebabkan suatu proses mengalami starvation. Proses dikatakan mengalami starvation jika proses- proses tersebut menunggu alokasi sumber daya sampai waktu yang tak berhingga, sementara proses-proses lain yang masuk belakangan dapat memperoleh alokasi sumber daya tersebut. Starvation umumnya di- sebabkan kesalahan kebijakan atau strategi alokasi sumber daya. Kondisi ini harus dihindari karena tidak adil.
Ada empat kondisi syarat terjadinya deadlock, yaitu:
1. mutual exclusion condition, yaitu sumber daya hanya dapat digunakan oleh satu proses dalam suatu waktu;
2. hold and wait condition, yaitu proses yang sedang menggunakan satu sumber daya, menunggu untuk menggunakan sumber daya lain;
3. non-preemption condition, jika sumber daya yang sedang digunakan sebuah proses tidak dapat diambil secara paksa; dan
4. circular wait condition, terdapat rantai sirkular dari dua atau lebih proses, masing-masing menunggu sumber daya yang sedang dikuasai proses lainnya.
Deadlock dapat menghambat kerja sistem komputer sehingga perlu
ditangani dengan baik. Penanganan deadlock dapat dilakukan dengan 3
model pendekatan, yaitu:
1. Prevention dan Avoidance, mencegah dan menghindari kondisi- kondisi yang menyebabkan terjadinya deadlock,
2. Detection dan Recovery, membuat mekanisme deteksi dan pemulihan sistem terhadap keadaan deadlock, dan
3. mengabaikan masalah dan menganggap deadlock tidak pernah terjadi di sistem, misalnya pada UNIX diasumsi deadlock sangat jarang terjadi.
1. Pencegahan deadlock dapat dilakukan pada masing-masing kondisi yang menyebabkan terjadinya deadlock. Terjadinya kondisi mutual exclusion dapat dihindari dengan menerapkan kebijakan untuk hanya memakai sumber daya yang dapat digunakan secara konkuren. Namun kebijakan seperti ini tidak selalu dapat diterapkan pada setiap sumber daya. Sebagian besar sumber daya pemakaiannya bersifat mutual exclusive.
Manajemen Proses
125
2. Kondisi hold and wait dapat dihindari dengan mengalokasikan seluruh sumber daya yang diperlukan suatu proses sebelum proses tersebut mulai dieksekusi. Dengan demikian selama eksekusinya, proses tidak tergantung pada ketersediaan suatu sumber daya yang mungkin sedang digunakan proses lain.
3. Kondisi no-preemption dapat dihindari dengan mengkondisikan jika suatu proses tidak dapat mendapatkan suatu sumber daya dengan segera, sumber daya yang sedang digunakannya harus dilepas dahulu, sehingga proses lain yang sedang menunggu sumber daya tersebut dapat menggunakannya terlebih dahulu. Proses akan meneruskan eksekusinya hanya jika seluruh sumber daya yang diperlukannya sudah tersedia kembali baginya.
4. Untuk kondisi circular wait, deadlock dapat dihindari dengan mem- berikan nomor urut untuk semua sumber daya yang dialokasikan untuk proses. Jika suatu proses hendak meminta atau menunggu sumber daya yang sedang digunakan oleh proses lain, maka hal tersebut hanya diijinkan jika sumber daya yang diminta memiliki nomor urut lebih tinggi dari semua sumber daya yang sedangkan dikuasainya. Dengan mekanisme demikian kondisi circular wait dapat dihindari.
Secara prinsip, kondisi deadlock dapat dihindari dengan memastikan bahwa sistem selalu dalam status aman (safe) seperti pada Gambar 4.21. Cara ini memastikan agar setiap alokasi suatu sumber daya tidak membuat sistem menjadi tidak aman unsafe. Mekanisme penghindaran deadlock ini membutuhkan:
1. Setiap proses menyatakan jumlah maksimum setiap jenis sumber daya yang diperlukannya.
2. Algoritma deadlock-avoidance yang secara dinamis memeriksa status alokasi sumber daya untuk memastikan tidak akan ada kondisi circular-wait.
3. Status alokasi sumber daya dinyatakan dengan jumlah sumber daya yang tersedia dan yang sedang dialokasikan dan jumlah maksimum permintaan dari setiap proses.
126
Sistem Operasi
deadlock
unsafe
safe
Gambar 4.21 Kendisi sistem pada model deadlock avoidance
• Deadlock dapat pula ditangani dengan cara melakukan pendeteksian serta pemulihan dari kondisi deadlock. Mekanisme pendeteksian dan pemulih- an dapat dilakukan dengan menyediakan:
1. algoritma untuk mendeteksi terjadinya deadlock dan
2. skenario pemulihan dari keadaan deadlock
Pendeteksian deadlock dapat dilakukan dengan secara berkala memeriksa keberadaan siklus tertutup dalam resource-allocation graph seperti pada Gambar 4.22.
Setelah deadlock berhasil dideteksi maka akan dilakukan proses pemulih- an dengan cara penghentian proses, misalnya dengan cara membatalkan semua proses yang terlibat deadlock, membatalkan proses satu persatu sampai siklus tertutup deadlock hilang. Deadlock juga dapat dipulihkan dengan mengambil alih sumber daya (resource preemption) yang dikuasai oleh suatu proses sehingga circular wait dapat diputus. Proses yang diambil alih sumber dayanya akan dibatalkan atau rollback.
Manajemen Proses
P5
R
R
R
P5
P1
P2
P3
P1
P2
P3
R2
P4
R
P4
(a)
(b)
Gambar 4.22 Resource-Allocation graph pada model deadlock detection and recovery
Tidak ada komentar:
Posting Komentar