Minggu, 31 Mei 2015

Permasalahan Klasik Sinkronisasi




Pada postinga saya kali ini, saya akan memposting mengenai permasalahan klasik yang terjadi pada proses Sinkronisasi. ada 3 masalah utama, yaitu Bounded Buffer, Reader Writer dan Dining Philosopher yang akan dijelaskan berikutini.


1. Bounded-Buffer (Producer-Consumer) Problem

 Produsen menghasilkan barang dan konsumen yang akan menggunakannya. Ada beberapa batasan yang harus dipenuhi, antara lain :

  • Barang yang dihasilkan oleh produsen terbatas
  • Barang yang dipakai konsumen terbatas
  • Konsumen hanya boleh menggunakan barang yang dimaksud setelah produsen menghasilkan barang dalam jumlah tertentu
  • Produsen hanya boleh memproduksi barang jika konsumen sudah kehabisan barang
Untuk penyelesaian permasalahan bounded buffer menggunakan semaphore menggunakan variabel umum berikut : semaphore full, empty, mutex; Inisialisasi untuk variable di atas, full = 0, empty = n, mutex = 1.
 
download .pptx here

2. Reader and Writer Problem

 Readers and Writers Problem adalah problem yang memodelkan proses yang mengakses database. Masalah ini timbul ketika ada dua proses atau lebih berbagi data yang sama. Data yang dimaksud disini bisa berbentuk buffer, file atau objek dari suatu program


Terdapat dua variasi pada masalah ini, yaitu :

  1. seorang reader tidak perlu menuggu reader lain untuk selesai hanya karena ada writer menunggu (reader memiliki prioritas lebih tinggi disbanding dengan writer)
  2. Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain yang bekerja (writer memiliki prioritas yang lebih tinggi)


Jika terdapat writer dalam critical section dan terdapat n reader yang menunggu, maka satu reader akan antri di wrt dan n-1 reader akan antri di mutex. Jika writer mengeksekusi signal(wrt), maka dapat disimpulkan bahwa eksekusi adalah menunggu reader atau menunggu satu writer.

Solusi Readers and Writers Problem

a.Pembaca di prioritaskan
b.Penulis di prioritaskan
c.Kedua jenis proses mempunyai prioritas yang sama.

Solusi Pembaca di Prioritaskan
Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer yang sedang menunggu. Dengan kata lain, Jika ada reader yang datang ketika reader lain sedang membaca dan sebuah writer sedang menunggu, maka reader yang baru datang tersebut akan langsung mendapat giliran untuk membaca. Writer akan ditunda pengerjaannya.

Solusi Penulis di Prioritaskan
Di mana suatu writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang memulai untuk membaca data.

Solusi Kedua Jenis Punya Prioritas Sama
 Tidak ada prioritas khusus yang diberikan kepada kedua jenis proses.

  
3. Dining Philosophers Prolem
Masalah ini pertama kali ditulis dan diselesaikan oleh Djikstra pada tahun 1965.Masalah ini memodelkan masalah enkapsulasi dari ketergantungan mesin dan masalah portabilitas. Dalam masalah Dining Philosophers, diketahui sejumlah (N) filusuf yang hanya memiliki tiga status, berpikir, lapar, dan makan. Semua filusuf berada di sebuah meja makan bundar yang ditata sehingga di depan setiap filusuf ada sebuah piring berisi mie dan di antara dua piring yang bersebelahan terdapat sebuah sumpit.


> Solusi Dining Philosophers Problem
Solusi Dining – Philosophers Problem ada dua, yakni :

a.Solusi Waiter
Solusi Waiter : solusi sederhana ini dilakukan dengan mengadakan seorang waiter yang senantiasa mengawasi penggunaan sumpit di meja makan. Ketika empat buah (dua pasang) sumpit sedang dipakai,orang berikutnya yang ingin memakai sumpit harus meminta izin kepada sang waiter, yang hanya dapat diberi ketika salah satu sumpit telah selesai terpakai.
b.Solusi Hierarki Resource
 Solusi Hirarki Resource: resources (sumpit) di meja makan telah diberi susunan hirarki. Setiap permintaan orang terhadap sebuah sumpit harus dilakukan pada susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam hal ini, setiap orang dapat mengambil sumpit dimanapun diatas meja. Misalkan setiap sumpit diberi nomor sebagai tingkat hirarki dari 1 sampai 5, seseorang hanya dapat mengambil sumpit dengan nomor yang paling rendah, kemudian mengambil sumpit yang setingkat lebih tinggi. Ketika ia hendak mengembalikannya, orang itu harus meletakkan sumpit dengan nomor yang lebih tinggi terlebih dahulu, lalu yang rendah.

Sekian bahasan tentang permasalahan sinkronisasi, semoga bermanfaat.

Recomended Link :


Tidak ada komentar:

Posting Komentar