Sinkronisasi merupakan suatu proses secara bersama-sama dan saling berbagi data bersama yang dapat mengakibatkan race condition atau inkosistensi data. Sinkronisasi di perlukan untuk menghindari terjadinya ketidak konsistenan data akibat adanya akses secara konkuren. Proses-Proses tersebut disebut konkukuren jika Proses itu ada dan berjalan pada waktu yang bersamaan.
Pada sinkronisasi terdapat beberapa masalah, diantara masalah tersebut ialah masalah klasik sinkronisasi yang dapat dibedakan menjadi 3, yaitu : 
1. Bounded – Buffer Problem
2. Readers and Writers Problem
3. Dining Philosophers Problem

Bounded–Buffer Problem
Bounded-Buffer merupakan keadaan dimana mampu menyimpan beberapa nilai dan mengeluarkannya kembali ketika diperlukan. Urutan yang terjadi pada Bounded-Buffer adalah yang menjadi proses terakhir maka akan dipanggil terlebih dahulu. Dapat diibaratkan seperti sebuah cucian piring, bila kita menaruh piring secara berurutan maka yang terambil adalah piring paling terakhir diletakkan.
Contoh Kasus Bounded - Buffer
Contoh kasus kali ini adalah produsen dan konsumer. produser akan menghasilkan suatu barang dan konsumer akan mengkonsumsi barang yang dihasilkan oleh produser. Produser dan konsumer ini akan mengakses Bounde-Buffer yang sama. Produser setelah menghasilkan suatu barang dia akan menaruh barang itu di Bounded-Buffer sebaliknya konsumer ketika membutuhkan suatu barang, dia akan mengambilkannya dari Bounded-Buffer.

Solusi Bounded – Buffer Problem
Solusi Shared Memory untuk Bounded-Buffer, mengijinkan (n-1) items di dalam buffer untuk suatu waktu tertentu.


Readers and Writers Problem
Readers and Writers Problem adalah masalah yang dalam 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

Solusi Readers and Writers Problem
1.      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.

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 diprioritaskan : Tidak ada prioritas khusus yang diberikan kepada kedua jenis proses.

Dining-Philosophers Prolem
Masalah Dining-Philosophers Problem diakibatkan oleh terjadinya enkapsulasi dari ketergantungan mesin dan masalah portabilitas. Dalam masalah Dining--Philosophers, diketahui sejumlah (N) filusuf yang hanya memiliki dua status, diantaranya : berpikir dan menulis. Semua filusuf berada di sebuah meja bundar yang ditata sehingga di depan setiap filusuf ada tiga kertas kosong dan sebuah pena.

Solusi Dining-Philosophers Problem
a.      Solusi Waiter
Solusi Waiter :  solusi sederhana ini dilakukan dengan mengadakan seorang waiter yang senantiasa mengawasi penggunaan pena di meja bundar. Ketika kedua pena sedang digunakan oleh kedua orang, orang berikutnya yang ingin memakai pena harus meminta izin kepada sang waiter, yang hanya dapat diberi ketika salah satu pena telah selesai terpakai.

b.      Solusi Hierarki Resource
Solusi Hirarki Resource : resources (pena) di meja bundar telah diberi susunan hirarki. Setiap permintaan orang terhadap sebuah pena harus dilakukan pada susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam hal ini, setiap orang dapat mengambil pena dimanapun diatas meja. Misalkan setiap pena diberi nomor sebagai tingkat hirarki dari 1 sampai 5, seseorang hanya dapat mengambil sumpit dengan nomor yang paling rendah, kemudian mengambil pena yang setingkat lebih tinggi. Ketika ia hendak mengembalikannya, orang itu harus meletakkan pena 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.


Komentar