Perbedaan Bounded-Buffer, Readers and Writers, Dining Philosophers Problem
1. Bounded-Buffer
Bounded buffer merupakan suatu struktur data yang mampu untuk menyimpan beberapa nilai dan mengeluarkannya kembali ketika diperlukan . Jika dianalogikan bounded buffer ini akan mirip dengan sebuah tumpukan piring. Kita menaruh piring dan menaruh lagi sebuah piring, ketika ingin mengambil piring maka tumpukan yang paling atas yang akan terambil.Jadi piring terakhir yang dimasukan akan pertama kali diambil.
>Contoh Kasus Bounded - Buffer
Pokok pembahasan utama dalam masalah bounded buffer adalah bagaimana jika ada dua proses berbeda yang berusaha mengakses buffer tersebut. Salah satu proses akan memberi nilai pada buffer dan mengisi buffer tersebut. Proses yang lain akan membaca nilai dan mengosongkan buffer tersebut. Proses yang pertama biasa disebut producer sedangkan yang kedua disebut consumer.
Karena ada dua proses yang bekerja, maka harus dihindari adanya race condition. Race condition adalah situasi dimana beberapa proses mengakses dan memanipulasi data secara bersamaan. Jika hal ini terjadi maka producer akan menghasilkan dan mengisi buffer terus menerus meskipun buffer sudah penuh dan belum sempat untuk dibaca oleh consumer. Untuk menghindari race condition, kita harus dapat mesinkronisasikan proses tersebut, dengan memberikan perintah tertentu supaya hanya ada satu proses yang berjalan.
>Solusi Bounded – Buffer
Solusi shared-memory pada problem bounded buffer memungkinkan paling banyak n-1 item dalam buffer pada waktu yang sama. Jadi, ketika buffer kosong, producer akan mengisi buffer hingga paling banyak n-1 item dalam buffer. Jika buffer tersebut sudah terisi n-1 item, akan terjadi proses switch sehingga consumer akan mengosongkan buffer tersebut. Selama consumer bekerja, producer tidak melakukan apa-apa dan menunggu hingga buffer tersebut kosong lagi. Jika buffer tersebut sudah kosong, maka akan terjadi proses switch lagi, sementara consumer tidak melakukan apa-apa dan menunggu hingga buffer tersebut diisi oleh producer.
2.Readers and Writers 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.
>Ada dua macam Proses , antara lain : 1.Pembaca (reader)
2.Penulis (writer)
Kedua jenis proses tersebut berbagi sumber daya penyimpanan yang sama. Syarat kondisi writers-readers :
- Proses-proses pembaca dapat membaca sumber daya secara simultan
- Hanya boleh ada satu penulis menulis pada setiap saat
- Bila ada yang menulis, tidak boleh ada yang membaca
Contoh Readers and Writers Problem yaitu sebuah sistem pemesanan sebuah perusahaan penerbangan, dimana banyak proses berkompetisi berharap untuk membaca (read) dan menulis (write). Hal ini dapat diterima bahwa banyak proses membaca database pada saat yang sama, tetapi jika suatu proses sedang menulis database, tidak boleh ada proses lain yang mengakses database tersebut, termasuk membaca database tersebut. Solusi dalam readers-writers problem : Pertama-tama pembaca mengakses database kemudian melakukan DOWN pada semaphore db. Langkah selanjutnya readers hanya menaikkkan nilai sebuah counter.
Hasil dari pembaca nilai counter diturunkan dan nilai terakhir dilakukan UP pada semaphore, mengizinkan memblok writer Dalam kondisi lain, misalkan selama sebuah reader menggunakan database, reader lain terus berdatangan. Karena ada dua reader pada saat bersamaan bukanlah sebuah masalah, maka reader yang kedua diterima, reader yang ketiga juga dapat diterima jika terus berdatangan reader-reader baru. Pencegahan masalah yaitu dengan program dapat ditulis agak sedikit berbeda. Misalnya ketika reader tiba dan writer menunggu, reader ditunda dibelakang writer yang justru diterima dengan segera ( dengan cara ini, writer tidak harus menunggu reader yang sedang aktif menyelesaikan pekerjaannya, tapi tidak perlu menunggu reader lain yang datang berturut-turut setelah itu ).
1.Pembaca di prioritaskan : Reader tidak akan menunggu reader(s) lain yang sedang membaca, walaupun ada writer yang sedang menunggu. Dengan katalain, 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.
2.Penulis di prioritaskan : Di mana suatu writer sedang dijalankan oleh sistem, maka tidak boleh ada reader yang memulai untuk membaca data.
3. Kedua jenis proses mempunyai prioritas yang sama : Tidak ada prioritas khusus yang diberikan kepada kedua jenis proses
Dining Philosophers Problem merupakan salah satu masalah klasik dalam sinkronisasi. Dining Philosohers Problem 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.
>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.
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.