Anda di halaman 1dari 5

Bounded Buffer (Producer-Consumer)

 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.

Readers and Writers

 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

Yohanes Dwiki Witman Gusti Made/140707748


resource). Oleh karena itu, writer harus segera melakukan prosesnya apabila sudah
ditambah di queue. Syarat baru yang dihasilkan yaitu “setiap writer yang telah masuk
kedalam queue, tidak boleh dibiarkan menunggu lebih lama dari yang dibutuhkan”.
Syarat ini biasa disebut sebagai ‘Writer’s Preference’.

 Jadi, terdapat dua variasi solusi pada masalah ini, yaitu :


1. Seorang reader tidak perlu menunggu reader lain untuk selesai hanya karena ada
writer menunggu (reader memiliki prioritas lebih tinggi dibanding dengan writer).
2. Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain yang
bekerja (writer memiliki prioritas yang lebih tinggi).

Dining Philosopher

 Pada tahun 1965, Djikstra menyelesaikan sebuah masalah sinkronisasi yang dapat
diuraikan sebagai berikut: Lima orang filosof duduk mengelilingi meja bundar, masing-

masing mempunyai sepiring sphagetti. Sphagetti tersebut sangat licin dan


membutuhkan dua sumpit untuk memakannya. Diantara sepiring spageti terdapat satu
sumpit.

 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.

Yohanes Dwiki Witman Gusti Made/140707748


 Masalah bisa dipecahkan ketika filosof mengambil sumpit kiri, periksa apakah sumpit
kanan bisa diambil. Jika sumpit kanan tidak mungkin diambil, filosof itu meletakkan
kembali sumpit kirinya, menunggu beberapa saat, lalu mengulangi proses yang sama.
Usulan tersebut juga salah. Semua filosof dapat memulai hal tersebut secara bersamaan,
mengambil sumpit kiri, melihat sumpit kanan mereka yang tidak mungkin untuk
diambil, meletakkan kembali sumpit kiri mereka, menunggu, mengambil sumpit kiri
mereka lagi secara bersamaan, dst. Situasi ini menyebabkan program terus berjalan
secara tidak terbatas tetapi tidak ada perubahan/kemajuan yang dihasilkan (starvation).

 Beberapa perbaikan yang dapat dilakukan adalah:

 Max 4 filosof secara bersamaan duduk di meja makan

 Filosof mengambil sumpit jika kedua sumpit tersedia

 Penyelesaian asimetris: Filosof ganjil mengambil sumpit di kirinya baru


kemudian yang kanan, sementara filosof genap dengan cara sebaliknya.

 Solusi :

 Array state dengan 3 kondisi.


 Kondisi: makan (eating), think (berpikir), dan lapar (hungry)
 Dengan kondisi demikian, jika filosof = 1, maka LEFT = 2, dan RIGHT = 3.

 untuk prosedur seperti ini, maka array dari semaphore hungry dapat ditahan jika
LEFT atau RIGHTnya sedang eating.

The Sleeping Barber Problem

 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.

Yohanes Dwiki Witman Gusti Made/140707748


Ketika pelanggan datang, maka pelanggan akan membangunkan tukang cukur yang
sedang tertidur (sleeping barber).
 Barber :
 Ketika customer menunggu, letakkan satu customer tsb ke kursi, lalu potong
rambutnya
 Jika sudah selesai, letakkan satu customer berikutnya
 Jika tidak ada customer, barber tidur, sampai ada cutomer yang datang
 Customer :
 Jika barber tidur, bangunkan barber
 Jika ada customer sedang potong rambut, tunggu barber, di kursi tunggu
 Jika kursi tunggu penuh, tinggalkan toko
 Solusi untuk permasalahan ini ialah dengan menggunakan 3 buah semaphore :

 Customer (tidak termasuk yg dikursi cukur)

 Barber (0 dan 1)

 Mutex (mutual exclusion) dan menggunakan 1 variable waiting

Yohanes Dwiki Witman Gusti Made/140707748


REFERENSI

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

Yohanes Dwiki Witman Gusti Made/140707748

Anda mungkin juga menyukai