Proses berbagi sebuah buffer antara produsen (meletakkan informasi ke buffer) dan
konsumen (mengambil informasi dari buffer). Terdiri atas m buah produsen dan n buah
konsumen. Masalah timbul ketika produsen ingin menaruh barang yang baru tetapi
buffer penuh.
Solusinya adalah membiarkan produsen istirahat (sleep) dan akan dibangunkan ketika
konsumen telah mengambil satu/lebih barang dari buffer. Jika konsumen ingin
mengambil barang dari buffer saat buffer kosong, maka konsumen istirahat (sleep)
sampai produsen menaruh barang ke buffer dan membangunkan (wake up) consumer.
Solusi lainnya: buat variabel count untuk mengetahui jumlah barang di buffer. Jumlah
maksimum barang di buffer adalah N. Produser mengecek apakah nilai count sama
dengan nilai N. Jika benar maka produsen akan istirahat (sleep), tetapi jika nilai tidak
sama, produsen akan terus menambah barang dan menaikkan nilai count.
Problem yang memodelkan proses akses database. Banyak proses berkompetisi untuk
membaca (read) dan menulis (write). Banyak proses membaca database pada saat yang
sama dibolehkan, tetapi jika ada proses menulis database, tidak boleh ada proses lain
yang mengakses database termasuk membaca database.
Solusi: misalkan reader datang dan diproses database. Saat reader diproses dan writer
menunggu dibelakangnya, dan ada reader lain di belakang writer, maka reader lain
dibelakang writer itu justru yang akan diterima dengan segera. Sehingga tidak ada
satupun reader yang menunggu baru writer boleh diproses. Selama paling tidak ada satu
reader yang aktif, maka reader berikutnya jika baru datang akan diterima, segera sesuai
kedatangan mereka. Konsekuensinya, writer tidak akan pernah mendapatkan
kesempatan di database.
Solusi tersebut belum optimal. Sangat tidak efisien jika reader lainnya langsung
melakukan reading sebelum writers melaksanakan proses writing-nya. Jika kasus ini
terjadi berulang kali, writer akan mengalami starvation (kelaparan/kekurangan
Dining Philosopher
Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang dapat
diuraikan sebagai berikut: Lima orang filosof duduk mengelilingi meja bundar, masing-
Kehidupan para filosof hanya makan atau berpikir. Ketika seorang filosof lapar, dia
berusaha mendapatkan 2 sumpit (sumpit kiri dan sumpit kanan sekaligus). Jika berhasil,
filosof makan sementara waktu, setelah selesai, ia meletakkan kedua sumpit dan
melanjutkan berpikir.
Dilanjutkan dengan prosedur take-fork yaitu menunggu sumpit yang sesuai baru
diambil. Sayangnya dari solusi ini ternyata salah. Lima orang filosof mengambil sumpit
kirinya bersamaan. Ketika lima orang tersebut mengambil sumpit kanan mereka, maka
yang terjadi adalah deadlock.
Solusi :
untuk prosedur seperti ini, maka array dari semaphore hungry dapat ditahan jika
LEFT atau RIGHTnya sedang eating.
Barber shop terdiri dari satu orang tukang cukur, 1 buah kursi untuk cukur rambut,
dan n kursi tempat tunggu antrian. Ketika tidak ada pelanggan, atau tidak ada yang
sedang mengantri di kursi tunggu, maka tukang cukur akan tidur dikursi cukur.
Barber (0 dan 1)
http://abdu-syakur-fst13.web.unair.ac.id/artikel_detail-115916-Sistem%20Operasi-
Masalah%20Klasik%20Sinkronisasi.html
https://asripujiastuti.files.wordpress.com/2012/07/modul-7_proses_sinkronisasi.ppt
http://opensource.telkomspeedy.com/repo/abba/v06/Kuliah/SistemOperasi/2003/44/produ
k/SistemOperasi/c45.html