DEADLOCK
Deadlock
dalam arti sebenarnya adalah kebuntuan. Kebuntuan yang dimaksud dalam
sistem operasi adalah kebuntuan proses. Jadi Deadlock ialah suatu
kondisi dimana proses tidak berjalan lagi atau tidak ada komunikasi lagi
antar proses. Deadlock disebabkan karena proses yang satu menunggu
sumber daya yang sedang dipegang oleh proses lain, proses lain itu pun
sedang menunggu sumber daya yang dipegang olehnya. Dengan kata lain
setiap proses dalam set menunggu untuk sumber yang hanya dapat
dikerjakan oleh proses lain dalam set sedang menunggu. Contoh
sederhananya ialah pada gambar berikut ini.
Gambar terjadinya deadlock pada jembatan penyeberangan.
Secara umum terdapat 4 cara untuk menangani keadaan deadlock, yaitu:
Ø Pengabaian. Maksud
dari pengabaian di sini adalah sistem mengabaikan terjadinya deadlock
dan pura-pura tidak tahu kalau deadlock terjadi. Dalam penanganan dengan
cara ini dikenal istilah ostrich algorithm. Pelaksanaan algoritma ini
adalah sistem tidak mendeteksi adanya deadlock dan secara otomatis
mematikan proses atau program
yang mengalami deadlock. Kebanyakan sistem operasi yang ada
mengadaptasi cara ini untuk menangani keadaan deadlock. Cara penanganan
dengan mengabaikan deadlock banyak dipilih karena kasus deadlock
tersebut jarang terjadi dan relatif rumit dan kompleks untuk
diselesaikan. Sehingga biasanya hanya diabaikan oleh sistem untuk
kemudian diselesaikan masalahnya oleh user dengan cara melakukan
terminasi dengan Ctrl+Alt+Del atau melakukan restart terhadap komputer.
Ø Pencegahan. Penanganan
ini dengan cara mencegah terjadinya salah satu karakteristik deadlock.
Penanganan ini dilaksanakan pada saat deadlock belum terjadi pada
sistem. Intinya memastikan agar sistem tidak akan pernah berada pada
kondisi deadlock. Akan dibahas secara lebih mendalam pada bagian
selanjutnya.
Ø Penghindaran. Menghindari
keadaan deadlock. Bagian yang perlu diperhatikan oleh pembaca adalah
bahwa antara pencegahan dan penghindaran adalah dua hal yang berbeda.
Pencegahan lebih kepada mencegah salah satu dari empat karakteristik
deadlock terjadi, sehingga deadlock pun tidak terjadi. Sedangkan
penghindaran adalah memprediksi apakah tindakan yang diambil sistem,
dalam kaitannya dengan permintaan proses akan sumber daya, dapat
mengakibatkan terjadi deadlock. Akan dibahas secara lebih mendalam pada
bagian selanjutnya.
Ø Pendeteksian
dan Pemulihan. Pada sistem yang sedang berada pada kondisi deadlock,
tindakan yang harus diambil adalah tindakan yang bersifat represif.
Tindakan tersebut adalah dengan mendeteksi adanya deadlock, kemudian
memulihkan kembali sistem. Proses pendeteksian akan menghasilkan
informasi apakah sistem sedang deadlock atau tidak serta proses mana
yang mengalami deadlock. Akan dibahas secara lebih mendalam pada bagian
selanjutnya.
STARVATION
Starvation
adalah kondisi yang biasanya terjadi setelah deadlock. Proses yang
kekurangan resource (karena terjadi deadlock) tidak akan pernah mendapat
resource yang dibutuhkan sehingga mengalami starvation (kelaparan).
Namun, starvation juga bisa terjadi tanpa deadlock. Hal ini ketika
terdapat kesalahan dalam sistem sehingga terjadi ketimpangan dalam
pembagian resouce. Satu proses selalu mendapat resource, sedangkan
proses yang lain tidak pernah mendapatkannya. Ilustrasi starvation tanpa
deadlock di dunia nyata dapat dilihat di bawah ini.Pada gambar diatas,
pada antrian kanan terjadi starvation karena resource (jembatan) selalu
dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran.
Gambar ilustrasi starvation.
Permasalahan Critical Section
Mutual Exclusion
Terdapat
sumber daya yang tak dapat dipakai bersama pada saat bersamaa, seperti
printer. Sumber daya seperti ini disebut sumber daya kritis. Bagian program
yang menggunakan sumber daya kritis disebut memasuki critical
region/section. Hanya satu program pada saat yang diijinkan masuk
critical region. Pemrogram tidak dapat bergantung pada sistem operasi
untuk memahami dan memaksakan batasan ini karena maksud program tidak
dapat diketahui.
Sistem
operasi hanya menyediakan layanan (berupa system call) untuk mencegah
proses masuk critical section yang sedang dimasuki proses lain.
Pemrogram harus menspesifikasikan bagian-bagian critical region sehingga
sistem operasi akan menjaganya dengan suatu mekanisme untuk mencegah
proses lain masuk critical region yang sedang dipakai proses lain.
inilah yang dimaksud dengan mutual exclusion.
Analogi Mutual Exclusion adalah tidak ada dua proses yang berada di critical section
pada saat yang bersamaan.
Pemaksaan adanya mutual exclusion menimbulkan dua masalah, yaitu:
-deadlock
- startvation.
-deadlock
- startvation.
Progress
Apabila
tidak ada proses yang menjalankan critical section-nya dan terdapat
beberapa proses yang akan memasuki critical section-nya, maka hanya
proses-proses itu yang tidak diproses di dalam daerah pengingat
(remainder) dapat ikut berpartisipasi di dalam keputusan proses mana
yang akan memasuki critical section selanjutnya, dan pemilihan ini tidak
dapat ditunda tiba-tiba.
Analogi
Progress adalah Jika tidak ada proses yang sedang berada di critical
section, maka proses lain yang ingin menjalankan critical section dapat
masuk ke dalam critical section tersebut.
Bounded Waiting
Terdapat
batasan jumlah waktu yang diijinkan oleh proses lain untuk memasuki
critical section setelah sebuah proses membuat permintaan untuk memasuki
critical section-nya dan sebelum permintaan dikabulkan.
Batasan – batasan itu.
- Menjamin proses dapat mengakses ke “critical section” (tidak mengalami starvation: proses se-olah berhenti menunggu request akses ke critical section diperbolehkan).
- Tidak ada asumsi mengenai kecepatan eksekusi proses proses n tersebut.
- Tidak ada proses yang menunggu selama-lamanya untuk masuk ke dalam critical
- Tidak ada asumsi lain mengenai kecepatan relatif setiap proses ataupun jumlah CPU.
0 komentar:
Posting Komentar