Topan Husain. Diberdayakan oleh Blogger.

MUTUAL EXCLUSION



Mutual Exclusion
Mutual Exclusion 
Adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses proses yang lain dilarang mengerjakan hal yang sama. 
Bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama disebut Critical Section/Region. Mutual Exclusion merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau lebih memasuki Critical Section secara bersamaan 
Kesuksesan proses - proses kongkuren memerlukan pendefinisian Critical Section dan memaksakan Mutual Exclusion di antara proses-proses kongkuren yang sedang berjalan. Pemaksaan Mutual Exclusion merupakan landasan pemrosesan kongkuren.

Masalah-Masalah Konkuren 
A. Mutual Exclusion. 
Adalah jaminan hanya satu proses yang mengakses sumber daya pada suatu interval waktu tertentu. Proses-proses yang lain dilarang mengerjakan hal yang sama.
Bagian program yang sedang mengakses memori atau sumber daya yang dipakai bersama disebut Critical Section/Region. Mutual Exclusion merupakan jaminan untuk mengatasi kondisi pacu agar tidak boleh 2 proses atau lebih memasuki Critical Section secara bersamaan. 
Kesuksesan proses- proses kongkuren memerlukan pendefinisian Critical Section dan memaksakan Mutual Exclusion di antara proses-proses kongkuren yang sedang berjalan. Pemaksaan Mutual Exclusion merupakan landasan pemrosesan kongkuren. 
Pemaksaan adanya mutual eclusion menimbulkan dua maslah, yaitu: 
- Deadlock. 
- Startvation. 

B. Deadlock. Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Karena beberapa proses itu saling menunggu, maka tidak terjadi kemajuan dalam kerja proses-proses tersebut. Deadlock adalah masalah yang biasa terjadi ketika banyak proses yang membagi sebuah resource yang hanya boleh dirubah oleh satu proses saja dalam satu waktu. 
Di kehidupan nyata, deadlock dapat digambarkan dalam gambar berikut.Pada gambar diatas, deadlock dianalogikan sebagai dua antrian mobil yang akan menyeberangi jembatan. Dalam kasus diatas, antrian di sebelah kiri menunggu antrian kanan untuk mengosongkan jembatan (resource), begitu juga dengan antrian kanan. Akhirnya tidak terjadi kemajuan dalam kerja dua antrian tersebut.Misal ada proses A mempunyai resource X, proses B mempunyai resource Y. 
Kemudian kedua proses ini dijalankan bersama, proses A memerlukan resource Y dan proses B memerlukan resource X, tetapi kedua proses tidak akan memberikan resource yang dimiliki sebelum proses dirinya sendiri selesai dilakukan. Sehingga akan terjadi tunggu-menunggu. 

C. 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 starvationkarena resource (jembatan) selalu dipakai oleh antrian kiri, dan antrian kanan tidak mendapatkan giliran. 

D. Sinkronisasi. 
Adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan. Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsistensi data karena pengaksesan oleh beberapa proses yang berbeda (mutual exclusion) serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan terhindar dari deadlock atau starvation.

(pada hari Sabtu, 28 April 2013  ----  20.10 WIB)




(pada hari Sabtu, 28 April 2013  ----  20.10 WIB)


(pada hari Sabtu, 28 April 2013  ----  20.10 WIB)
 

(pada hari Sabtu, 28 April 2013  ----  20.10 WIB)
 


 

DETEKSI DEADLOCK DAN PENCEGAHANNYA


PENDETEKSIAN, PENCEGAHAN,
DAN CARA MENGATASI DEADLOCK

Metode Pendeteksian Deadlock

Deadlock akan terjadi, jika dan hanya jika grafik tunggu memiliki siklus di dalamnya.Untuk mendeteksi deadlock, sistem harus memiliki grafik tunggu dan menjalankan algoritma deteksi deadlock secara periodik. Hal yang harus diperhatikan adalah seberapa sering algoritma deteksi harus dipanggil. Hal ini tergantung dari dua faktor:

1.      Frekuensi terjadinya deadlock pada umumnya
2.      Jumlah proses yang akan terpengaruh ketika deadlock terjadi.


Pencegahan deadlock

Jika pada awal kita membahas tentang ke-empat hal yang menyebabkan terjadinya deadlock. Maka pada bagian ini, kita akan membahas cara menanggulangi keempat penyebab deadlock itu, sehingga dengan kata lain kita mengadakan pencegahan terhadap deadlock.
·         Masalah Kondisi Mutual Eksklusif (Mutual exclusion)
Masalah ini tidak dapat dilarang, jika aksesnya perlu bersifat spesial untuk satu proses, maka hal ini harus di dukung oleh kemampuan sistem operasi. Jadi diusahakan agar tidak mempergunakan kondisi spesial tersebut sehingga sedapat mungkin deadlock dapat dihindari.

·         Masalah Kondisi Menunggu dan Memegang (Hold and wait condition)
Penanggulangan deadlock dari kondisi ini lebih baik dan menjanjikan, asalkan kita dapat menahan proses yang memegang sumber daya untuk tidak menunggu sumber daya laun, kita dapat mencegah deadlock. Caranya ialah dengan meminta semua sumber daya yang ia butuhkan sebelum proses berjalan. Tetapi masalahnya sebagian proses tidak mengetahui keperluannya sebelum ia berjalan. Jadi untuk mengatasi hal ini, kita dapat menggunakan algoritma bankir. Yang mengatur hal ini dapat sistem operasi ataupun sebuah protokol. Hasil yang dapat terjadi ialah sumber daya lebih di-spesifikasi dan kelaparan sumber daya, atau proses yang membutuhkan sumber daya yang banyak harus menunggu sekian lama untuk mendapat sumber daya yang dibutuhkan.

·         Masalah tidak ada Preemption (No preemption condition)
Hal ketiga ialah jangan sampai ada preemption pada sumber daya yang telah dialokasikan. Untuk memastikan hal ini, kita dapat menggunakan protokol. Jadi jika sebuah proses meminta sumber daya yang tidak dapat dipenuhi saat itu juga, maka proses mengalami preempted. Atau dengan kata lain ada sumber daya dilepaskan dan diberikan ke proses yang menunggu, dan proses itu akan menunggu sampai kebutuhan sumber dayanya dipenuhi.
Jalan lain kita harus mencek sumber daya yang dimaui oleh proses di cek dahulu apakah tersedia. Jika ya maka kita langsung alokasikan, sedangkan jika tidak tersedia maka kita melihat apakah ada proses lain yang menunggu sumber daya juga. Jika ya, maka kita ambil sumber daya dari proses yang menunggu tersebut dan memberikan pada proses yang meminta tersebut. Jika tidak tersedia juga, maka proses itu harus menunggu. Dalam menunggu, beberapa dari sumber dayanya dapat saja di preempted, tetapi jika ada proses yang memintanya. Cara ini efektif untuk proses yang menyimpan dalam memory atau register.

·         Masalah Circular Wait
Masalah ini dapat ditangani oleh sebuah protokol yang menjaga agar sebuah proses tidak membuat lingkaran siklus yang dapat mengakibatkan deadlock

Atau kita harus mencek sumber daya yang dimaui oleh proses di cek dahulu apakah tersedia. Jika ya maka kita langsung alokasikan, sedangkan jika tidak tersedia maka kita melihat apakah ada proses lain yang menunggu sumber daya juga. Jika ya, maka kita ambil sumber daya dari proses yang menunggu tersebut dan memberikan pada proses yang meminta tersebut. Jika tidak tersedia juga, maka proses itu harus menunggu. Dalam menunggu, beberapa dari sumber dayanya bisa saja di preempted, tetapi jika ada proses yang memintanya. Cara ini efektif untuk proses yang menyimpan dalam memory atau register


Mengatasi Deadlock dan Dining Philosophers
Bila deadlock terjadi maka algoritma deteksi harus sering dipanggil. Resource yang dialokasikan ke proses-proses yang mengalami deadlock tidak akan digunakan sampai kondisi deadlock diatasi. Bila deadlock tidak segera diatasi maka jumlah proses yang terlibat dalam deadlock akan semakin bertambah. Salah satu ciri terjadinya deadlock adalah ketika beberapa proses mengajukan permohonan untuk resource, tetapi permohonan ini tidak dapat dipenuhi dengan segera. Sistem dapat saja memanggil algoritma deteksi setiap kali permohonan untuk resource tidak dapat diperoleh dengan segera. Namun,semakin sering algoritma deteksi dipanggil, maka waktu overhead yang dibutuhkan untuk komputasi menjadi semakin besar.

Banyak cara untuk menanggulangi deadlock:
1.      Mengabaikan masalah deadlock.
2.      Mendeteksi dan memperbaiki
3.      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 men- data informasi tambahan tentang proses mana yang akan meminta dan menggunakan sumber daya.
4.      Pencegahan yang secara struktur bertentangan dengan 4 kondisi terjadinya deadlockdengan deadlock prevention sistem untuk memasti- kan bahwa salah satu kondisi yang penting tidak dapat menunggu.

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 seakan-akan melakukan suatu hal yang fatal, tetapi sistem operasi Unix menanggulangideadlock dengan cara ini dengan tidak mendeteksi deadlock dan membiarkannya secara otomatis mematikan program sehingga seakan-akan tidak terjadi apapun. Jadi jika terjadideadlock, maka tabel akan penuh, sehingga proses yang menjalankan proses melalui operator harus menunggu pada waktu tertantu 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. Ada beberapa jalan untuk kembali dari deadlock:
-          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 bisa dikatakan tidak mungkin. Cara ini bisa 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.
-          Lewat melacak kembali
setelah kita lakukan 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.
-          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. 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 :
a.       Yang paling jarang memakai prosesor
b.      Yang paling sedikit hasil programnya
c.       Yang paling banyak memakai sumber daya sampai saat ini
d.      Yang alokasi sumber daya totalnya tersedkit
e.       Yang memiliki prioritas terkecil

Kondisi Aman
Saat kondisi aman, maka suatu sistem bisa mengalokasikan sumber daya pada setiap proses (sampai pada batas maksimumnya) dengan urutan tertentu.

Jika sistem dalam state aman maka tidak terjadi deadlock, sedangkan jika sistem
dalam state tidak aman (unsafe state) maka kemungkinan terjadi deadlock seperti
Gambar 6-4. Metode menghindari deadlock menjamin bahwa sistem tidak pernah
memasuki state tidak aman.

SUMBER :
 (pada hari Miggu, 29 April 2013  ----  20.10 WIB
(pada hari Miggu, 29 April 2013  ----  20.15 WIB
(pada hari Miggu, 29 April 2013  ----  20.29 WIB