A.
Bounded Buffer
Buffer merupakan proses
pertukaran pesan-pesan yang menggunakan antrean sementara sebagai suatu
penyangga. Buffer itu sendiri terdari dari 3 jenis berdasarkan kapasitasnya
diantaranya buffer berkapasitas 0
(kosong), buffer berkapasitas tak
hingga, dan buffer berkapasitas
terbatas. Penyangga berkapasitas terbatas terssebut sering disebut sebagai bounded buffer.
Salah satu
contoh dari masalah klasik bounded buffer ini adalah proses di antara produsen
dan konsumen. Kendala yang dari masalah ini yaitu penjadwalan (scheduling) dan mutual exclusion (mutex) seperti konsumen harus menunggu jika ada buffer kosong, produsen harus menunggu
jika buffer sedang penuh, dan hanya
satu buffer yang dapat memanipulasi buffer tersebut. Dengan kata lain,
terdapat samber daya yang terbatas dan produsen mengisikan (write) harus produknya ke dalam sumber daya
tersebut. Sedangkan, konsumen akan mengambil (read) sumber daya yang penuh tersebut dan meninggalkannya pada
sumber daya yang kosong. Kompleksitas utama dari masalah tersebut adalah menjaga
perhitungan jumlah ketersediaan sumber daya yang kosong ataupun penuh.
Untuk mengatasi
masalah tersebut, dibutuhkan semaphore
yang berfungsi sebagai penjaga agar produsen tidak mengakses sumber daya saat buffer sedang penuh. Sebaliknya, semaphore juga akan menghalangi konsumen
saat buffer kosong. Sedangkan, semaphore biner digunakan untuk menjamin
mutex ketika buffer sedang diakses. Semaphore
yang tidak penuh akan ditandakan oleh konsumen dan semaphore yang penuh
akan diisyaratkan oleh produsen.
B.
Readers and Writers
Dalam
masalah sinkronisasi ini terdapat dua macam proses, yaitu pembaca (reader) dan
penulis (writer). Permasalahan ini muncul saat ada beberapa pembaca dan penulis
yang berbagi data yang sama atau berbagi sumber daya penyimpanan yang sama.
Data yang diakses dapat berupa buffer, file, ataupun objek dari suatu
program. Dalam permasalahan ini, di
setiap proses yang berjalan, penulis yang melakukan kegiatan menulis hanya
diperbolehkan satu penulis saja. Jika sedang ada penulis yang melakukan proses
menulis, maka tidak boleh ada proses membaca. Dalam permasalahan ini
diperbolehkan ada lebih dari satu pembaca yang mengakses berkas, namun jika ada
penulis yang sedang mengakses berkas maka tidak boleh ada siapapun (pembaca dan
penulis lain) yang mengakses berkas tersebut.
Untuk
mengatasi permasalahan ini, terdapat 3 solusi yang dapat dilakukan. Pertama,
solusi dengan memprioritaskan pembaca. Solusi ini tepat digunakan jika tujuan
yang ingin dicapai adalah memperoleh throughput semaksimal mungkin. Solusi ini
bekerja dengan lebih memprioritaskan pembaca meskipun sudah banyak writer yang
mengantri. Dengan adanya solusi ini, penulis mungkin saja berada dalam antrian
untuk waktu yang tak terbatas. Kedua, solusi dengan memprioritaskan penulis. Pada
solusi ini, jika tidak ada yang mengaksess berkas maka penulis akan mengakses
berkas dan pembaca akan dibiiarkan mengantri sampai semua penulis menyelesaikan tugasnya. Keuntungan solusi ini
adalah pembaca dapat memperoleh informasi yang selau up-to-date. Namun, kedua
solusi tersebut tidak memenuhi syarat bahwa setiap thread tidak boleh dibiarkan
menunggu untuk waktu yang tidak terbatas. Solusi yang ketiga adalah pembaca dan
penulis memperoleh prioritas yang sama secara bergantian. Pada solusi ini, penulis
dan pembaca diberi giliran yang adil dalam hal pengaksesan berkas. Jika tidak
ada thread pembaca yang sedang mengakses berkas, maka penulis dapat
mengaksesnya. Dan jika selesai maka akan memberikan giliran pada pembaca untuk
mengakses berkas. Dengan solusi ini, tidak ada thread yang menunggu dalam waktu
yang tidak terbatas maka cara ini merupakan cara yang tepat untuk menyelesaikan
masalah konkurensi.
C.
Dining Philosopher
Dining Philosopher
adalah salah satu masalah klasik sinkronisasi. Dining Philosopher digambarkan
dengan 5 orang filsuf yang duduk mengelilingi sebuah meja bundar. Masing-masing
filsuf memiliki 1 piring dan diantara setiap piring terdapat 1 sumpit. Di
tengah meja bundar tersebut, terdapat 1 mangkuk berisi spageti. Kehidupan para
filsuf terdiri dari 2 periode, yaitu makan atau berpikir. Untuk makan, seorang
filsuf harus mengambil 2 sumpit di sisi kiri dan kanan dari piring yang berada
di depannya, kemudian mengambil spageti di tengah meja dan memakannya. Setelah
selesai makan, filsuf tersebut akan meletakkan masing-masing sumpit di tempat
ia mengambilnya dan akan mulai untuk berpikir.
Masalahnya, dapatkah
kita membuat program untuk masing-masing filsuf yang akan melakukan apa yang
harus mereka lakukan tanpa mengalami deadlock. Jika semua filsuf mengecek
secara bersamaan apakah di sisi kirinya terdapat sumpit, dan jika ada ia akan
mengambil sumpit tersebut, kemudian ia akan mengecek apakah di sisi kanannya
terdapat sumpit, dan jika ada ia akan mengambil sumpit tersebut. Namun karena
mereka melakukannya secara bersamaan, dapat dipastikan tidak ada filsuf yang
akan mendapatkan sumpit di sisi kanannya.
Solusinya adalah dengan
membuat 1 filsuf yang melakukan hal yang berbeda dari filsuf lainnya. Filsuf
tersebut akan memulai mengecek sumpit yang terletak disisi kanannya terlebih
dahulu, jika ada maka filsuf tersebut akan mengambil sumpit di sisi kanannya
dan kemudian mengecek sisi kirinya. Dengan cara ini, maka tidak akan terjadi
deadlock. Solusi lain yang dapat dilakukan adalah dengan mengeluarkan 1 filsuf
dari meja tersebut, sehingga dalam 1 meja akan terdapat 5 sumpit dan 4 filsuf.
Namun solusi ini masih memungkinkan untuk terjadinya starvation. Kondisi ini dapat terjadi jika program memungkinkan
filsuf untuk makan berulang kali yang akan menyebabkan filsuf lain tidak dapat
menggunakan sumpit.
D.
Sleeping Barber
Sleeping Barber adalah analogi suatu
system oeprasi menyelesaikan suatu operasi. Dalam Sebuah tempat cukur, terdapat
seorang tukang cukur , dengan 1 tempat kursi untuk pelanggan dicukur.Ketika
tidak ada pasien , maka tukang cukur akan tidur. Ketika pelanggan datang , maka
pelanggan harus membangunkan si tukang cukur. Jika saat pelanggan datang , namu
ada pelanggan lain , maka pelanggan harus menunggu. Jika pelanggan didalam
sudah selesai , baru dia bisa masuk. Jika tempat tunggu penuh, maka pelanggan
akan pergi Permasalahan tidak akan terjadi apabila antara tukang cukur dan
pelanggan tidak sedang berada dalam “race condition”. Jika salah satu saja
berada dalam “race condition” maka akan terjadi masalah. Misalnya Jika tukang
cukur baru saja selesai memangkas rambut, dan pelanggan ini masih belum keluar,
kondisi tunggu penuh , datang pelanggan baru , pelanggan ini akan pergi karena tunggu masih penuh. Untuk
menyelesaikan masalah ini diperlukan algoritma untuk memastikan komponen dari sistem
operasi agar tidak berada dalam “race condition”
Solusinya adalah dengan menggunakan 3
semaphores. Yakni tipe data untuk mengendalikan akses dari resources yang
dilakukan bersama. Semaphores pertama untuk barber dengan kondisi 0 – idle dan
1 – sibuk. kedua untuk pelanggan yang berfungsi untuk menghitung jumlah
pelanggan yangn menunggu . kemudian sebuah Semaphore mutex. Ketika tukang cukur
datang, prosedur tukang cukur memblok semaphore pelanggan sampai pelanggan datang.
Ketika Pelanggan datang, prosedur pelanggan dieksekusi dengam mendapatkan mutex
untuk masuk kedalam area kritikal. Pelanggan baru harus menunggu sampai pelanggan
pertama melepaskan mutex. Setelah mendapatkan mutex, maka pelanggan akan
memeriksa apakah jumlah pelanggan yang menunggu kurang dari jumlah kursi yang
tersedia, jika tidak , mutex dilepas dan pelanggan pergiJika ada kursi ,
variable counter tunggu diinkremen dan tukang cukur terbangun , pelanggan
melepaskan mutex, tukang cukur mengambil mutex dan memulai potong
rambut.Setelah selesai pelanggan pergi. Tukang cukur akan memeriksa apakah ada pelanggan
lain Jika tidak ada , tukang cukur
beristirahat
DAFTAR PUSTAKA
Diesburg, Sarah.
(n.d.). Semaphores and Bounded Buffer. http://www.cs.uni.edu/~diesburg/courses/cs3430_sp16/sessions/s07/s07_semaphores.pdf
.diakses 30 September 2017.
K-State Polytechnic.
(n.d.). 3.3.2. Bounded Buffer (Producers and Consumers).
http://faculty.salina.k-state.edu/tim/ossg/IPC_sync/bounded_buffer.html . siakses
30 September 2017.
MTU. (n.d.).
ThreadMentor: The Producer/Consumer (or Bounded-Buffer) Problem. https://pages.mtu.edu/~shene/NSF-3/e-Book/SEMA/TM-example-buffer.html
.diakses 30 September 2017.
Tanebaum .(n.d.). The
Sleeping Barber Problem Statement of the Problem and Solution
http://web.cecs.pdx.edu/~harry/Blitz/OSProject/p3/SleepingBarberProblem.pdf
1 Oktober 2017
Hines. (n.d.)CS 431
Introduction to Operating Systems The Sleeping Barber Problem http://sce2.umkc.edu/csee/cotterr/cs431_sp13/barber.html
diakses 1 Oktober 2017
Semaphore.http://www.csl.mtu.edu/cs4411.choi/www/Resource/Semaphore.pdf
diakses 1 Oktober 2017
Dining Philloshopher https://www.cs.indiana.edu/classes/p415-sjoh/hw/project/dining-philosophers/index.htm
diakses 1 Oktober 2017
(n.d).2008. Sync
Problems
http://nob.cs.ucdavis.edu/classes/ecs150-2008-02/handouts/sync/sync-problems.html.
Diakses 3 Oktober 2017.
Komentar
Posting Komentar
Silahkan berkomentar memberi pendapat yang berhubungan
Sampaikan pertanyaan anda apabilla ada yang ingin ditanyakan
Sampaikan Saran dan kritik yang membangun
• DILARANG Spamming
• DILARANG Menaruh link porno
• DILARANG Menaruh link Judi
• DILARANG Menaruh link MLM
untuk promosi blog silahkan gabung di https://www.facebook.com/groups/bloggerindoID/
Atas Perhatian dan kerjasamanya saya mengucapkan terimakasih