DEADLOCK = kompi loe nge-HANG tuh..

advertisement
DEADLOCK = kompi loe nge-HANG tuh..
oleh: Arif Masmawi
mahasiswa S1 Elektronika & Instrumentasi 2007
Universitas Gadjah Mada
arifmasmawi.web.ugm.ac.id | [email protected]
1. Pendahuluan
Sering kali kita menemui kejadian dimana komputer kita tiba-tiba berhenti mendadak entah
karena apa. Kejadian ini dikenali sebagai kondisi komputer hang, atau dalam bahasa akademisi
disebut sebagai deadlock.
Deadlock berarti terkunci mati, atau suatu posisi dua/lebih objek yang saling terikat, terkunci,
dan hampir tidak dapat diuraikan kembali.
Dalam dunia komputerisasi, deadlock adalah suatu kondisi dimana proses tidak berjalan lagi
ataupun tidak ada komunikasi lagi antarproses di dalam sistem operasi. Deadlock disebabkan karena
proses yang satu menunggu sumber daya yang sedang dipegang oleh proses lain yang sedang
menunggu sumber daya yang dipegang oleh proses tersebut. [1]
2. Penyebab Deadlock
Menurut Coffman (1971) ada empat kondisi yang dapat mengakibatkan terjadinya deadlock, yaitu:
2.1. Mutual Eksklusif
hanya ada satu proses yang boleh memakai sumber daya, dan proses lain yang ingin memakai
sumber daya tersebut harus menunggu hingga sumber daya tadi dilepaskan atau tidak ada
proses yang memakai sumber daya tersebut.
2.2. Memegang dan menunggu
proses yang sedang memakai sumber daya boleh meminta sumber daya lagi maksudnya
menunggu hingga benar-benar sumber daya yang diminta tidak dipakai oleh proses lain, hal ini
dapat menyebabkan kelaparan sumber daya sebab dapat saja sebuah proses tidak mendapat
sumber daya dalam waktu yang lama
2.3 Tidak ada Preemption
sumber daya yang ada pada sebuah proses tidak boleh diambil begitu saja oleh proses lainnya.
Untuk mendapatkan sumber daya tersebut, maka harus dilepaskan terlebih dahulu oleh proses
yang memegangnya, selain itu seluruh proses menunggu dan mempersilahkan hanya proses
yang memiliki sumber daya yang boleh berjalan
2.4. Circular Wait
kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang dipegang proses
berikutnya [2]
3. Ilustrasi deadlock dalam kehidupan sehari-hari
3.1 Deadlock pada jembatan
Kendaraan dari sebelah kiri tidak dapat maju karena terhalang oleh kendaraan di depannya,
tetapi juga tidak dapat mundur karena terhalang kendaraan dibelakang yang menunggunya.
Begitu juga terjadi pada kendaraan di sebelah kanan. Kondisi ini hampir tidak mungkin terurai,
sehingga disebut sebagai dedlock.
3.2 Deadlock circular pada persimpangan jalan
Keempat arah kendaraan terhalang oleh kendaraan yang lain dan terjadi saling menunggu.
Kondisi ini merupakan deadlock circular.
4. Deadlock pada sistem operasi
Misalkan pada suatu komputer terdapat dua buah program, sebuah tape drive dan sebuah
printer. Program A mengontrol tape drive, sementara program B mengontrol printer. Setelah
beberapa saat, program A meminta printer, tapi printer masih digunakan. Berikutnya, B meminta
tape drive, sedangkan A masih mengontrol tape drive. Dua program tersebut memegang kontrol
terhadap sumber daya yang dibutuhkan oleh program yang lain. Tidak ada yang dapat melanjutkan
proses masing-masing sampai program yang lain memberikan sumber dayanya, tetapi tidak ada yang
mengalah. Kondisi inilah yang disebut Deadlock atau pada beberapa buku disebut Deadly Embrace
Deadlock yang mungkin dapat terjadi pada suatu proses disebabkan proses itu menunggu
suatu kejadian tertentu yang tidak akan pernah terjadi. Dua atau lebih proses dikatakan berada dalam
kondisi deadlock, bila setiap proses yang ada menunggu suatu kejadian yang hanya dapat dilakukan
oleh proses lain dalam himpunan tersebut.
4.1 Ilustrasi deadlock pada sistem
4.1.1 Non-deadlock
Pada gambar dia atas, tidak terjadi deadlock karena resource 1 dan 2 dapat menangani dua
permintaan proses, sehingga apabila proses 3 dan 4 selesai dikerjakan, maka proses 1 dan 2
akan dapat berjalan secara normal.
4.1.2 Deadlock
Deadlock terjadi karena resource 1 dan 2 hanya dapat
menangani satu proses, sehingga terbentuk rangkaian
melingkar yang saling menunggu.
5. Mengatasi deadlock
Ada beberapa cara untuk mengatasi deadlock yang terjadi pada sistemoperasi, antara lain dengan
cara sebagai berikut. [2]
5.1 Mengabaikan Masalah deadlock
Metode ini lebih dikenal dengan Algoritma Ostrich. Dalam algoritma ini dikatakan bahwa untuk
menghadapi deadlock ialah dengan berpura-pura bahwa tidak ada masalah apapun. Hal ini seakanakan melakukan suatu hal yang fatal, tetapi sistem operasi Unix menanggulangi deadlock dengan
cara ini dengan tidak mendeteksi deadlock dan membiarkannya secara otomatis mematikan program
sehingga seakan-akan tidak terjadi apapun. Jadi jika terjadi deadlock, maka tabel akan penuh,
sehingga proses yang menjalankan proses melalui operator harus menunggu pada waktu tertantu dan
mencoba lagi.
Strategi Ostrich
Pendekatan yang paling sederhana adalah dengan menggunakan strategi burung unta:
masukkan kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam
pendapat muncul berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama
sekali tidak dapat diterima dan semua keadaan deadlock harus ditangani. Sementara menurut
para ahli Teknik, jika komputer lebih sering mengalami kerusakkan disebabkan oleh
kegagalan hardware, error pada kompilator atau bugs pada sistem operasi. Maka ongkos yang
dibayar untuk melakukan penanganan deadlock sangatlah besar dan lebih baik mengabaikan
keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX dan MINIX. [3]
5.2 Mendeteksi dan Memperbaiki
Caranya ialah dengan cara mendeteksi jika terjadi deadlock pada suatu proses maka dideteksi sistem
mana yang terlibat di dalamnya. Setelah diketahui sistem mana saja yang terlibat maka diadakan
proses untuk memperbaiki dan menjadikan sistem berjalan kembali.
Hal-hal yang terjadi dalam mendeteksi adanya deadlock adalah:
- Permintaan sumber daya dikabulkan selama memungkinkan.
- Sistem operasi memeriksa adakah kondisi circular wait secara periodik.
- Pemeriksaan adanya deadlock dapat dilakukan setiap ada sumber daya yang hendak digunakan
oleh sebuah proses.
- Memeriksa dengan algoritma tertentu.
5.3 Ada beberapa jalan untuk kembali dari deadlock:
5.3.1 Lewat Preemption
Dengan cara untuk sementara waktu menjauhkan sumber daya dari pemakainya, dan
memberikannya pada proses yang lain. Ide untuk memberi pada proses lain tanpa diketahui
oleh pemilik dari sumber daya tersebut tergantung dari sifat sumber daya itu sendiri.
Perbaikan dengan cara ini sangat sulit atau dapat dikatakan tidak mungkin. Cara ini dapat
dilakukan dengan memilih korban yang akan dikorbankan atau diambil sumber dayanya
utuk sementara, tentu saja harus dengan perhitungan yang cukup agar waktu yang
dikorbankan seminimal mungkin. Setelah kita melakukan preemption dilakukan
pengkondisian proses tersebut dalam kondisi aman. Setelah itu proses dilakukan lagi dalam
kondisi aman tersebut.
5.3.2 Lewat melacak kembali
Setelah melakukan beberapa langkah preemption, maka proses utama yang diambil sumber
dayanya akan berhenti dan tidak dapat melanjutkan kegiatannya, oleh karena itu
dibutuhkan langkah untuk kembali pada keadaan aman dimana proses masih berjalan dan
memulai proses lagi dari situ. Tetapi untuk beberapa keadaan sangat sulit menentukan
kondisi aman tersebut, oleh karena itu umumnya dilakukan cara mematikan program
tersebut lalu memulai kembali proses. Meskipun sebenarnya lebih efektif jika hanya
mundur beberapa langkah saja sampai deadlock tidak terjadi lagi. Untuk beberapa sistem
mencoba dengan cara mengadakan pengecekan beberapa kali secara periodik dan
menandai tempat terakhir kali menulis ke disk, sehingga saat terjadi deadlock dapat mulai
dari tempat terakhir penandaannya berada.
5.3.3 Lewat membunuh proses yang menyebabkan deadlock
Cara yang paling umum ialah membunuh semua proses yang mengalami deadlock. Cara ini
paling umum dilakukan dan dilakukan oleh hampir semua sistem operasi. Namun, untuk
beberapa sistem, kita juga dapat membunuh beberapa proses saja dalam siklus deadlock
untuk menghindari deadlock dan mempersilahkan proses lainnya kembali berjalan. Atau
dipilih salah satu korban untuk melepaskan sumber dayanya, dengan cara ini maka masalah
pemilihan korban menjadi lebih selektif, sebab telah diperhitungkan beberapa
kemungkinan jika si proses harus melepaskan sumber dayanya.
Kriteria seleksi korban ialah:
1. Yang paling jarang memakai prosesor
2. Yang paling sedikit hasil programnya
3. Yang paling banyak memakai sumber daya sampai saat ini
4. Yang alokasi sumber daya totalnya tersedkit
5. Yang memiliki prioritas terkecil
6. Pengalaman penulis dalam menghadapi komputer deadlock
Pada bagian ini, penulis akan menceritakan pengalamannya dalam mengahadapi deadlock,
jadi mungkin bahasa yang akan digunakan jadi kurang formal.
Saya berpengalaman telah memakai sistem operasi windows dari windows 95, windows 98se,
windows millenium, windows XPsp2, windows vista, dan sedikit windows seven yang belum lama
muncul ini. Sedangkan untuk Linux saya menggunakan Ubuntu 8.
Berdasarkan pengalaman saya, deadlock sering terjadi ketika banyak aplikasi dijalankan
dalam satu waktu. Apalagi jika resource memory / RAM yang dipakai masih minimalis, mmaka
deadlock akan sering terjadi.
Menggunakan windows 95 atau windows 98, saya sering mengalami deadlock bahkan sampai
deadlock bisa terjadi begitu saja tanpa membuka aplikasi apapun. Namun dengan setelah berganti ke
sistem operasi windows millenium, deadlock lebih jarang terjadi, dan semakin jarang terjadi ketika
menggunakan windows xp.
Pada windows vista, windows seven, dan Ubuntu 8, saya sama sekali belum pernah menemui
kondisi deadlock, meski lebih dari 2 program aplikasi aktif berjalan.
Kondisi deadlock pada windows, rata-rata dapat diatasi dengan 'jurus' menekan tombol
ctrl+alt+del pada keyboard. Kombinasi tombol tersebut memunculkan task manager, sehingga kita
dapat meng-kill process yang menyebabkan deadlock. Apabila usaha tersebut belum berhasil, maka
gunakan jurus kedua yaitu tekan tombol reset komputernya! Jika tombol reset rusak, matikan saja
power supply-nya..! Dijamin kondisi deadlock akan hilang setelahnya.
7. Penutup
Demikianlah sedikit berbagi ilmu mengenai kondisi komputer deadlock, atau dalam bahasa gaulnya:
nge-hang. Semoga tulisan ini dapat memberi manfaat bagi umat manusia.
referensi:
[1] http://dewiwahyuni.ngeblogs.com/2009/12/15/konsep-proses/
[2] http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/2004/51/produk/SistemOperasi/c47.html
[3] http://forum.anugrahpratama.com/dunia-komputer/mengatasi-deadlock/
Download