Heart Under Blade Blog

Deadlock pada sistem operasi

Posted on: December 18, 2010

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.

 

Ada empat kondisi yang dapat menyebabkan terjadinya deadlock. Keempat kondisi tersebut tidak dapat berdiri sendiri, namun saling mendukung.

 

1. Mutual exclusion. 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. Hold and wait. 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.

3. No 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.

4. Circular wait. Kondisi seperti rantai, yaitu sebuah proses membutuhkan sumber daya yang

dipegang proses berikutnya.

Diagram Graf

Sebuah sistem komputer terdiri dari berbagai macam sumber-daya (resources), seperti:

•    Fisik (Perangkat, Memori)

•    Logika (Lock, Database record)

•    Sistem Operasi (PCB Slots)

•    Aplikasi (Berkas)

 

Diantara sumber-daya tersebut ada yang preemptable dan ada juga yang tidak. Sumber-daya ini akan digunakan oleh proses-proses yang membutuhkannya. Mekanisme hubungan dari proses-proses dan sumber-daya yang dibutuhkan/digunakan dapat di diwakilkan dengan graf.

Graf adalah suatu struktur diskrit yang terdiri dari vertex dan sisi, dimana sisi menghubungkan vertex- vertex yang ada. Berdasarkan tingkat kompleksitasnya, graf dibagi menjadi dua bagian, yaitu simple graf   dan   multigraf.   Simpel   graf   tidak   mengandung   sisi   paralel   (lebih   dari   satu   sisi   yang menghubungkan dua vertex yang sama). Berdasarkan arahnya graf dapat dibagi menjadi dua bagian yaitu   graf   berarah   dan   graf   tidak   berarah.   Graf   berarah   memperhatikan   arah   sisi   yang menghubungkan  dua  vertex,  sedangkan  graf  tidak  berarah  tidak  memperhatikan  arah  sisi  yang menghubungkan dua vertex.

 

Dalam hal ini akan dibahas mengenai implementasi graf dalam sistem operasi. Salah satunya dalah graf alokasi sumber daya. Graf alokasi sumber daya merupakan graf sederhana dan graf berarah. Graf  alokasi  sumber  daya  adalah  bentuk  visualisasi  dalam  mendeteksi  maupun  menyelesaikan masalah deadlock.

Solusi Penanggulangan Deadlock

Add beberapa cara untuk menanggulangi terjadinya deadlock, diantaranya adalah:

a.   Mengabaikan masalah deadlock.

b.   Mendeteksi dan memperbaiki

c. Penghindaran yang terus menerus dan pengalokasian yang baik dengan menggunakan protokol untuk memastikan  sistem tidak pernah memasuki keadaan deadlock. Yaitu dengan  deadlock avoidance sistem untuk mendata informasi tambahan tentang proses mana yang akan meminta dan menggunakan sumber daya.

d. Pencegahan yang secara struktur bertentangan dengan empat kondisi terjadinya deadlock dengan deadlock prevention sistem untuk memastikan bahwa salah satu kondisi yang penting tidak dapat menunggu.

 

 

Mengabaikan Masalah Deadlock

Untuk  memastikan  sistem  tidak  memasuki  deadlock,  sistem  dapat  menggunakan  pencegahan deadlock atau penghindaran deadlock. Penghindaran deadlock membutuhkan informasi tentang sumber daya yang mana yang akan suatu proses meminta dan berapa lama akan digunakan. Dengan informasi tersebut dapat diputuskan apakah suatu proses harus menunggu atau tidak. Hal ini disebabkan oleh keberadaan sumber daya, apakah ia sedang digunakan oleh proses lain atau tidak.

 

Metode ini lebih dikenal dengan Algoritma Ostrich. Dalam algoritma ini dikatakan bahwa untuk menghadapi Deadlock ialah dengan berpura-pura bahwa tidak ada masalah apa pun. Hal ini seakan- akan 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 apa pun. Jadi jika terjadi Deadlock, maka tabel akan penuh, sehingga proses yang menjalankan proses melalui operator harus menunggu pada waktu tertentu dan mencoba lagi.

 

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.

 

Jika sebuah sistem tidak memastikan deadlock akan terjadi, dan juga tidak didukung dengan pendeteksian deadlock serta pencegahannya, maka kita akan sampai pada kondisi deadlock yang dapat berpengaruh terhadap performance sistem karena sumber daya tidak dapat digunakan oleh proses sehingga proses-proses yang lain juga terganggu. Akhirnya sistem akan berhenti dan harus direstart.

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.

 

Ada beberapa jalan untuk kembali dari Deadlock, yaitu:

 

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 untuk 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.

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. Meski pun 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.

 

Lewat mematikan proses yang menyebabkan Deadlock

Cara yang paling umum ialah mematikan semua proses yang mengalami deadlock. Cara ini paling umum dilakukan dan dilakukan oleh hampir semua sistem operasi. Namun, untuk beberapa sistem, kita juga dapat mematikan 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 pemilihan korban ialah:

•    Yang paling jarang memakai prosesor

•    Yang paling sedikit hasil programnya

•    Yang paling banyak memakai sumber daya sampai saat ini

•    Yang alokasi sumber daya totalnya tersedkit

•    Yang memiliki prioritas terkecil

 

Menghindari Deadlock

Pada sistem kebanyakan permintaan terhadap sumber daya dilakukan sebanyak sekali saja. Sistem sudah harus dapat mengenali bahwa sumber daya itu aman atau tidak (tidak terkena deadlock), setelah itu baru dialokasikan. Ada dua cara yaitu:

1. Jangan memulai proses apa pun jika proses tersebut akan membawanya  pada kondisi deadlock, sehingga tidak mungkin terjadi deadlock karena pada saat akan menuju deadlock, proses sudah dicegah.

2.  Jangan  memberi  kesempatan  pada  suatu  proses  untuk  meminta  sumber  daya  lagi  jika penambahan ini akan membawa kita pada suatu keadaan deadlock.

Jadi diadakan dua kali penjagaan, yaitu saat pengalokasian awal, dijaga agar tidak deadlock dan ditambah dengan penjagaan kedua saat suatu proses meminta sumber daya, dijaga agar jangan sampai terjadi deadlock. Pada sistem   deadlock avoidance (penghindaran) dilakukan dengan cara memastikan bahwa program memiliki maksimum permintaan. Dengan kata lain cara sistem ini memastikan terlebih dahulu bahwa sistem akan selalu dalam kondisi aman. Baik mengadakan permintaan awal atau pun saat meminta permintaan sumber daya tambahan, sistem harus selalu berada dalam kondisi aman.

Kesimpulan

Pada sistem kebanyakan permintaan terhadap sumber daya dilakukan sebanyak sekali saja. Sistem sudah harus dapat mengenali bahwa sumber daya itu aman atau tidak( dalam arti tidak terkena deadlock), setelah itu baru dialokasikan. Pada deadlock avoidance sistem dilakukan dengan cara memastikan bahwa program memiliki maksimum permintaan. Dengan kata lain cara sistem ini memastikan terlebih dahulu bahwa sistem akan selalu dalam kondisi aman. Baik mengadakan permintaan awal ataupun saat meminta permintaan sumber daya tambahan, sistem harus selalu berada dalam kondisi aman.

 

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

KaLeNdEr!!!

December 2010
M T W T F S S
« Oct   Feb »
 12345
6789101112
13141516171819
20212223242526
2728293031  

VoTe Me!!

ArSziP!!

%d bloggers like this: