-->
g2QFCKwavghUp2yzjKrIFwEeG13RASCerFTCMH35

Masalah Klasik Sinkronisasi

Masalah Klasik Sinkronisasi
  • Bounded – Buffer Problem
  • Readers and Writers Problem
  • Dining Philosopers Problem

  1. 1.      Bounded – Buffer Problem
Buffer adalah tempat penampung data yang ukurannya terbatas. Bounded-Buffer problem dapat terjadi jika dua proses berbeda, yaitu produsen dan konsumen, berusaha mengakses buffer tersebut dalam waktu bersamaan.
Contoh:
Problem produsen dan konsumen
Dua proses berbagi sebuah buffer dengan ukuran yang tetap. Salah satunya produsen, meletakkan informasi ke buffer yang lainnya. Konsumen mengambil informasi dari buffer. Ini juga dapat digeneralisasi untuk masalah yang memiliki x buah produsen dan y buah konsumen, tetapi kita hanya akan memfokuskan kasus dengan satu produsen dan satu konsumen karena diasumsikan dapat menyederhanakan solusi.
Masalah akan timbul ketika produsen ingin menaruh barang yang baru tetapi buffer sudah penuh. Solusi untuk produsen adalah istirahat (sleep) dan akan dibangunkan ketika konsumen telah mengambil satu atau lebih barang dari buffer. Biasanya jika konsumen ingin mengambil barang dari buffer dan melihat bahwa buffer sedang kosong, maka konsumen istirahat (sleep) sampai produsen meletakkan barang pada buffer dan membangunkan (wake up) konsumen.
Untuk mengetahui jumlah barang di buffer, kita membutuhkan sebuah variabel kita namakan count. Jika jumlah maksimum dairi barang yang dapat ditampung buffer adalah N, kode produser pertama kali akan mencoba untuk mengetahui apakah nilai count sama dengan nilai N. Jika itu terjadi maka produsen akan istirahat (sleep), tetapi jika nilai count tidak sama dengan N, produsen akan terus menambahkan barang dan menaikkan nilai count.
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.

  1. 2.      Readers and Writers Problem
Ada dua macam Proses , antara lain :
–  Pembaca (reader)
–  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
Salah satu contoh umum dalam Readers-Writers dalam“Database”
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 ).
Contoh kondisi lain yaitu sekarang misalkan writer berdatangan terus menerus. Maka Writer tidak dapat diterima ke database  ( karena writer hanya bisa mengakses data ke database secara ekslusif, jadi writer ditangguhkan ). Penambahan reader akan menunjukkan peningkatan. ( Selama paling tidak ada satu reader yang aktif, reader berikutnya jika datang akan diterima ). Solusi masalah yaitu sebagai konsekuensi dari strategi ini, selama terdapat suplai reader yang terus-menerus, mereka akan dilayani segera sesuai kedatangan mereka ( FCFS ). Writer akan ditunda sampai tidak ada reader lagi. Jika sebuah reader baru tiba, katakan, setiap dua detik, dan masing-masing reader mendapatkan lima detik untuk melakukan tugasnya, writer tudak akan pernah mendapatkan kesempatan.

  1. 3.      Problem Dining Philosopers
            Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang beliau sebut dengan dining philisophers problem. Dining philosophers dapat diuraikan sebagai berikut: Lima orang filsuf duduk mengelilingi sebuah meja bundar. Masing-masing filsuf mempunyai sepiring sphagetti. Sphagetti-sphagetti tersebut sangat licin dan membutuhkan dua sumpit untuk memakannya. Diantara sepiring spageti terdapat satu sumpit.
Kehidupan para filsuf terdiri dari dua periode, yaitu makan atau berpikir. Ketika seorang filsuf lapar, dia berusaha untuk mendapatkan sumpit kiri dan sumpit kanan sekaligus. Jika sukses dalam mengambil dua sumpit, filsuf tersebut makan untuk sementara waktu, kemudian meletakkan kedua sumpit dan melanjutkan berpikir.
Prosedur take-fork menunggu sampai sumpit-sumpit yang sesuai didapatkan dan kemudian menggunakannya. Sayangnya dari solusi ini ternyata salah. Ketika lima orang filsuf mengambil sumpit kirinya secara bersamaan. Maka ketika mereka juga mengambil sumpit kanan mereka, dan akan terjadi deadlock.
Beberapa perbaikan yang dapat dilakukan adalah:
´  Membolehkan max 4 filsuf yang secara bersamaan duduk di meja makan
´  Membolehkan filsuf mengambil sumpit jika kedua sumpit tersedia
´  Menggunakan penyelesaian asimetris. Filsuf ganjil mengambil sumpit di kirinya baru kemudian yang kanan. Sementara filsuf genap dengan cara sebaliknya.

Sumber : ari-swaratunggadewi-fst13.web.unair.ac.id
Related Posts

Related Posts

Post a Comment