Masalah Klasik Sinkronisasi


Masalah Klasik Sinkronisasi

Terdapat 3 masalah klasik sinkronisasi:

1. Bounded-Buffer Problem

2. Readers and writers problem

3. Dining-Philosophers Problem

1.      Bounded – Buffer Problem

Bounded buffer merupakan sebuah penampung atau struktur data  yang mampu untuk menyimpan sementara beberapa data dalam kapasitas yang terbatas dan mengeluarkannya kembali ketika diperlukan. Contoh permasalahan bounded-buffer adalah masalah produsen-konsumen : produsen menaruh data pada buffer. Jika buffer tersebut sudah terisi penuh, maka produsen tidak melakukan apa-apa dan menunggu sampai konsumen mengambil data dari buffer. Jika buffer tersebut kosong, maka konsumen tidak melakukan apa-apa dan menunggu sampai buffer tersebut diisi oleh produsen.  Masalah yang timbul yaitu jika hanya satu proses yang boleh memasuki critical section, jadi pada satu waktu buffer hanya bisa diakses oleh satu produsen atau satu konsumen. Solusi dalam Bounded Buffer problem dapat menggunakan perangkat sinkronisasi semaphore untuk mensinkronisasi proses produsen dan konsumen.




2.      Readers and Writers problem

Readers dan writers problem adalah problem yang memodelkan beberapa proses yang mengakses database yang sama dalam satu waktu sehingga dapat menyebabkan korupsi data. Data dapat berupa buffer, objek, atau file dari suatu program. Terdapat thread yang  membaca dan thread yang menulis. Thread yang membaca disebut reader, sedangkan yang menulis disebut writer. Contoh permasalahan readers and writers adalah sebuah reader sedang membaca objek, kemudian sebuah writer menulis ulang objek data tersebut maka reader akan membaca data yang tidak akurat, karena ada kemungkinan data yang terbaca adalah setengah data lama dan setengah data baru. Solusi pada permasalahan ini adalah:

- Jika terdapat satu proses menulis (mengubah) basis data, proses lain tidak boleh mengakses basis data, baik membaca atau menulis. Pada masalah ini, writers memiliki prioritas yang lebih tinggi dari pada readers. Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain yang bekerja. Writer akan memblok semua proses reading oleh readers dan melakukan proses writing. Ketika proses writing selesai, maka proses reading dapat dilanjutkan kembali oleh reader.

- 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


3.      Dining-Philosophers Problem


Dining Philosophers Problem yang ditulis dan diselesaikan oleh Djikstra dapat diilustrasikan sebagai berikut, terdapat lima orang filsuf yang sedang duduk mengelilingi sebuah meja. Terdapat lima mangkuk mie di depan masing-masing filsuf dan satu sumpit di antara masing-masing filsuf. Para filsuf menghabiskan waktu dengan berpikir (ketika kenyang) dan makan (ketika lapar). Ketika lapar, filsuf akan mengambil dua buah sumpit (di tangan kiri dan tangan kanan) dan makan. Namun adakalanya, hanya diambil satu sumpit saja. Jika ada filsuf yang mengambil dua buah sumpit, maka dua filsuf di samping filsuf yang sedang makan harus menunggu sampai sumpit ditaruh kembali. Hal ini dapat diimplementasikan dengan wait dan signal. Permasalahannya adalah pada waktu yang sama, kelima filsuf tersebut dalam keadaan lapar, dan masing-masing mengambil sumpit yang ada di sebelah kanannya. Pada saat kelima filsuf tersebut ingin mengambil sumpit yang di sebelah kiri, sumpit tersebut telah digunakan oleh filsuf lainnya. Setiap filsuf saling menunggu filsuf lain untuk melepaskan sumpit, maka terjadilah deadlock. 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, filsuf 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 filsuf terhadap sebuah sumpit harus dilakukan pada susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam hal ini, setiap filsuf dapat mengambil sumpit dimanapun diatas meja. Misalkan setiap sumpit diberi nomor sebagai tingkat hirarki dari 1 sampai 5, satu filsuf hanya dapat mengambil sumpit dengan nomor yang paling rendah, kemudian mengambil sumpit yang setingkat lebih tinggi. Ketika ia hendak mengembalikannya, filsuf itu harus meletakkan sumpit dengan nomor yang lebih tinggi terlebih dahulu, lalu yang rendah.

Contoh Kasus Dining – Philosophers Problem

Pada sebuah computer tentunya terdapat aplikasi-aplikasi yang dapat memudahkan kita untuk melakukan suatu pekerjaan. Namun disamping kemudahan yang diberikan, terdapat ancaman negative yang dapat aplikasi-aplikasi itu berikan pada computer kita jika kita tidak menggunakannya dengan benar. Suatu contoh ketika kita mengerjakan suatu tugas. Kita membuka dan menjalankan beberapa aplikasi secara bersamaan. Aplikasi yang kita gunakan misalnya ms. Word (membuka 6 file word sebagai sumber tugas), winamp untuk memainkan lagu, firefox untuk browsing internet, pidgin untuk sesekali chating, sementara itu aplikasi start up yang berjalan juga banyak dan RAM yang tersedia tidak begitu besar sehingga hal ini akan membuat computer menjalankan aplikasi itu terus-menerus jika kita tidak mematikannya. Hal ini akan membuat computer berjalan semakin lambat dan memungkinkan terjadinya starvation atau deadlock dalam beberapa waktu kemudian.


Comments