Classical Problem
Terdapat model permasalahan serta solusi yang ada dalam sinkronisasi antara lain Bounded Buffer Problems, Reader and Writers Problems dan Diving Philosopher Problems, yang akan dibahas dibawah ini.
1. Bounded Buffer Problems
Bounded Buffer merupakan struktur data yang dapat menyimpan / menampung beberapa nilai dan dapat dikeluarkan ketika dibutuhkan namun nilai yang dapat disimpan itu terbatas. Proses - proses yang ada didalamnya berjalan secara bersamaan dan untuk dapat mengakses data yang sama. Masalah Bounded Buffer ini juga di umpamakan sebagai permasalahan produsen konsumen, dimana produsen bertugas untuk memasukkan nilai dan menghasilkan data kemudian secara bersamaan konsumen juga mengeluarkannya dari Buffer/ penyimpanan. Masalah yang dihawatirkan muncul adalah ketika ada dua proses berbeda yang dilakukan dalam waktu bersamaan.
Maka yang dapat dilakukan untuk menyelesaikan permasalahan tersebut adalah salah satu proses akan memberi nilai pada buffer dan mengisi buffer tersebut(proses ini disebut produsen), proses yang lain akan membaca nilai dan mengosongkan buffer tersebut(proses ini disebut consumen). Perhatikan gambar dibawah ini, dalam gambar ini menjelaskan tentang proses Bounded Buffer atau Prosuden konsumen.
Bounded Buffer Pictuce |
Dapat disimpulkan bahwa dalam pemasalahan Bounded Buffer adalah bisa dengan diasumsikan Produsen menghasilkan nilai dan konsumen menggunkan nilai tersebut. Namun ada batasan yang harus dipenuhi untuk Bounded Buffer Problems yaitu antara lain :
a. Nilai yang dihasilkan produsen terbatas
b. Nilai yang dapat digunakan oleh konsumen pun terbatas
c. Konsumen hanya diperkenankan menggunakan nilai yang ada setelah produsen memasukkan nilai dalam buffer dalam jumlah tertentu saja.
d. Produsen hanya diperkenankan memasukkan nilai dalam buffer ketika konsumen nila menggunakan nilai kembali.
Solusi untuk Bounded Buffer Problems adalah dengan menggunakan Semaphore menggunakan variable berikut yaitu Semaphore Full, Empety, dan Mutex.
2. Reader And Writer Problems
Reader And Writers Problem adalah salah satu permasalahan sinkronisasi klasik yang digunakan untuk membandingkan berbagai cara untuk menyesaikan berbagai masalah sinkronisasi, secara singkatnya permasalahan ini terjadi ketika pembaca dan penulis mengakses data secara bersamaan. Masalah yang sering timbul adalah dalam database dimana adanya proses untuk membaca dan menulis nilai tertentu.
Untuk menyelesaikan permasalahan di atas terdapat solusi sebagai berikut:
- Reader diprioritaskan
- Writer diprioritaskan
- Kedua jenis proses diprioritaskan
Reader Writer Problem Picture |
Penjelasan dari solusi diatas adalah
a. Reader diprioritaskan adalah dimana reader dapat membaca data yang ada meskipun ada reader lain yang lain untuk membaca pula sementara writer harus menunggu untuk menulis dan reader yang lain pun juga tidak perlu untuk menunggu apabila ingin menbaca data
b. Writer diprioritaskan adalah dimana ketika writer sedang menulis data, maka reader tidak diperkenankan untuk membaca data.
c. Pada dasarnya tidak ada prioritas utama dalam kedua proses tersebut.
3. Dining Philosopher Problems
Dining Philosopher Problems adalah suatu permasalahan sinkrinisasi dimana terdapat beberapa data yang memerlukan proses yang sama dalam waktu bersamaan namun yang menjadi kendala ialah hanya beberapa data saja yang dapat di proses. Hal ini dapat diimplimikasikan dengan wait dan signal.
Dining Philosopher Problem |
Perhatikan gambar di atas, terdapat masalah dalam melakukan proses jika hanya terdapat 5 philosopher dan hanya ada 4 sumpit untuk dapat mengambil makanan/ data yang ada, jika setiap philosopher menggunakan 2 sumpit untuk mengambil makanan maka akan ada 3 philosopher yang tidak dapat mengambil makanan, dengan demikian maka akan terjadi Deadlock.
Agar tidak terjadi Deadlock maka solusi yang dapat dilakukan adalah sebagai berikut:
a. Solusi pertama adalah mengizinkan 5 philosopher untuk duduk bersama dengan ketentuan setiap philosopher mengambil 1 sumpit untuk mengambil makanan yang terdapat ditengah meja.
b. Solusi kedua ialah setidaknya mengizinkan 2 philosopher untuk duduk bersama sehingga setiap philosopher dapat menggunakan 2 sumpit.
SEMOGA BERMANFAAT
Komentar
Posting Komentar