Masalah Klasik Sinkronisasi
Masalah
klasik sinkronisasi terdiri dari 3 :
-Bounded-Buffer
Problem
-Readers
And Writers Problem
-Dining
Philosophers Problem
- Bounded-Buffer Problem
Bounded-Buffer
(Producer-Consumer) Problem atau Masalah Bounded Buffer adalah suatu
struktur data untuk menampung (buffer) suatu nilai dimana kapasitasnya
tertentu/terbatas (bounded). Masalah bounded buffer merupakan salah satu
masalah yang menerangkan sinkronisasi antara proses-proses yang berjalan secara
konkuren untuk mengakses data yang sama. Oleh karena itu kita banyak mengulang
konsep sinkronisasi dalam membahas masalah bounded buffer ini.
Dalam
komputasi, masalah produsen-konsumen (juga dikenal sebagai masalah
dibatasi-buffer) adalah contoh klasik dari masalah sinkronisasi multi-proses.
Masalah ini menjelaskan dua proses, produsen
dan konsumen, yang berbagi umum, tetap ukuran buffer digunakan sebagai antrian.
Tugas produser adalah untuk menghasilkan data, memasukkannya ke dalam buffer,
dan mulai lagi. Pada saat yang bersamaan, konsumen mengkonsumsi data (yaitu,
mengeluarkannya dari buffer), satu bagian pada suatu waktu. Yang menjadi pokok
pembahasan utama dalam masalah bounded buffer adalah bagaimana jika ada dua
proses berbeda yang berusaha mengakses buffer tersebut. Salah satu proses akan
memberi nilai pada buffer dan mengisi buffer tersebut. Proses yang lain akan
membaca nilai dan mengosongkan buffer tersebut. Proses yang pertama biasa
disebut producer sedangkan yang kedua disebut consumer. 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.
Solusi untuk produsen adalah baik pergi tidur atau
membuang data jika buffer penuh. Lain kali konsumen menghapus item dari buffer,
itu akan memberitahu produser, yang mulai mengisi buffer lagi. Dengan cara yang
sama, konsumen bisa tidur jika menemukan buffer kosong. Lain kali produser
menempatkan data ke dalam buffer, itu bangun yang tidur konsumen. solusi dapat
dicapai dengan sarana komunikasi antar-proses, biasanya menggunakan Semaphore.
Sebuah solusi yang tidak memadai bisa mengakibatkan kebuntuan di mana kedua
proses sedang menunggu untuk dibangunkan. Masalahnya juga dapat digeneralisasi
untu memiliki beberapa produsen dan konsumen. Kita dapat menerapkan konsep
semaphore untuk menyelesaikan masalah tersebut. Disini kita menggunakan tiga
buah semaphore yaitu mutex, full dan empty. Mutex digunakan untuk menjamin
hanya boleh satu proses yang berjalan mengakses buffer pada suatu waktu, awalnya
dinisialisasi sebesar satu (1). Full digunakan untuk menghitung jumlah buffer
yang berisi, yang pada awalnya diinisialisasi sebesar nol (0). Sedangkan empty
digunakan untuk menghitung jumlah buffer yang kosong, yang awalnya
dinisialisasi sebesar ukuran buffer. Beriku variabel umumt :semaphore full,
empty, mutex; Inisialisasi untuk variable di atas, full = 0, empty = n, mutex =
1.
Jadi dapat disimpulkan bahwa pokok
permasalahan bounded buffer adalah bagaimana mengatur sinkronisasi dari
beberapa proses yang secara konkuren ingin mengakses buffer (mengisi dan
mengosongkan buffer). Pengaturan itu dilakukan dengan menerapkan konsep
semaphore yang menjamin hanya ada satu proses dalam suatu waktu yang boleh
mengakses buffer sehingga tidak terjadi race condition.
Masalah Readers/Writers, seperti yang telah dikatakan di atas bahwa inti dari permasalahan ini adalah adanya beberapa pembaca dan penulis yang ingin mengakses suatu berkas secara simultan. Sebagai syarat bahwa data yang terkandung dalam berkas tersebut tetap konsisten, maka setiap kali berkas tersebut ditulis, maka hanya ada boleh maksimal satu penulis yang menulisnya. Untuk pembaca, hal ini tidak perlu dikhawatirkan sebab membaca suatu berkas tidak mengubah isinya. Dengan kata lain, pada suatu saat diperbolehkan untuk beberapa pembaca untuk membaca berkas tersebut. Akan tetapi, ketika ada yang sedang menulis, tidak boleh ada satupun yang membaca. Ini berarti bahwa thread penulis menjalankan tugasnya secara eksklusif.
Untuk mengatasi masalah ini, ada tiga macam solusi yang akan dibahas. Dasar pembagian solusi ini adalah prioritas. Pertama, solusi dengan pembaca diprioritaskan akan dibahas. Kemudian dilanjutkan dengan solusi dengan penulis yang diprioritaskan. Terakhir, solusi dengan pembaca dan penulis saling bergantian akan dibahas. Pada setiap solusi akan dilihat mengenai tingkat kesuksesan solusi tersebut bila kita lihat dari sudut pandang syarat penyelesaian critical section. Implementasi dari setiap solusi yang diberikan di bawah ini adalah dengan menggunakan semafor.
- Readers and Writers Problem
Readers/Writers adalah salah satu
masalah sinkronisasi klasik yang sering digunakan untuk mendiskusikan dan
membandingkan berbagai cara untuk menyelesaikan masalah sinkronisasi. Secara
singkat, masalah ini terjadi ketika ada beberapa pembaca dan penulis ingin
mengakses suatu berkas pada saat bersamaan.
Masalah Readers/Writers, seperti yang telah dikatakan di atas bahwa inti dari permasalahan ini adalah adanya beberapa pembaca dan penulis yang ingin mengakses suatu berkas secara simultan. Sebagai syarat bahwa data yang terkandung dalam berkas tersebut tetap konsisten, maka setiap kali berkas tersebut ditulis, maka hanya ada boleh maksimal satu penulis yang menulisnya. Untuk pembaca, hal ini tidak perlu dikhawatirkan sebab membaca suatu berkas tidak mengubah isinya. Dengan kata lain, pada suatu saat diperbolehkan untuk beberapa pembaca untuk membaca berkas tersebut. Akan tetapi, ketika ada yang sedang menulis, tidak boleh ada satupun yang membaca. Ini berarti bahwa thread penulis menjalankan tugasnya secara eksklusif.
Untuk mengatasi masalah ini, ada tiga macam solusi yang akan dibahas. Dasar pembagian solusi ini adalah prioritas. Pertama, solusi dengan pembaca diprioritaskan akan dibahas. Kemudian dilanjutkan dengan solusi dengan penulis yang diprioritaskan. Terakhir, solusi dengan pembaca dan penulis saling bergantian akan dibahas. Pada setiap solusi akan dilihat mengenai tingkat kesuksesan solusi tersebut bila kita lihat dari sudut pandang syarat penyelesaian critical section. Implementasi dari setiap solusi yang diberikan di bawah ini adalah dengan menggunakan semafor.
Readers
and Writers Problem adalah problem yang memodelkan proses yang 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
Terdapat
dua variasi pada masalah ini, yaitu :
seorang reader tidak
perlu menuggu reader lain untuk selesai hanya karena
ada writer menunggu (reader memiliki prioritas
lebih tinggi disbanding dengan writer)
Jika ada writer yang
sedang menunggu, maka tidak boleh ada reader lain yang
bekerja (writer memiliki prioritas yang lebih tinggi)
Jika
terdapat writer dalam critical section dan terdapat
n reader yang menunggu, maka satu reader akan antri di
wrt dan n-1 reader akan antri di
mutex. Jika writer mengeksekusi signal(wrt), maka dapat
disimpulkan bahwa eksekusi adalah menunggu reader atau menunggu
satu writer.
Solusi
Readers and Writers Problem
a.Pembaca
di prioritaskan
b.Penulis
di prioritaskan
c.Kedua
jenis proses mempunyai prioritas yang sama.
- Dining Philosophers
Dining
Philosophers Prolem
Masalah ini
pertama kali ditulis dan diselesaikan oleh Djikstra pada tahun
1965.Masalah ini memodelkan masalah enkapsulasi dari ketergantungan mesin dan
masalah portabilitas. Dalam masalah Dining Philosophers, diketahui sejumlah (N)
filusuf yang hanya memiliki tiga status, berpikir, lapar, dan makan. Semua
filusuf berada di sebuah meja makan bundar yang ditata sehingga di depan setiap
filusuf ada sebuah piring berisi mie dan di antara dua piring yang
bersebelahan terdapat sebuah sumpit.
Solusi
Dining – Philosophers Problem ada dua, yakni :
a.Solusi
Waiter
Solusi Waiter
: solusi sederhana ini dilakukan dengan mengadakan seorang
waiter yang senantiasa mengawasi penggunaan sumpit di meja makan. Ketika empat
buah (dua pasang) sumpit sedang dipakai,orang berikutnya yang ingin memakai
sumpit harus meminta izin kepada sang waiter, yang hanya dapat diberi ketika
salah satu sumpit telah selesai terpakai.
b.Solusi
Hierarki Resource
Solusi
Hirarki Resource: resources (sumpit) di meja makan telah diberi susunan
hirarki. Setiap permintaan orang terhadap sebuah sumpit harus dilakukan pada
susunan tertentu, dan dikembalikan pada susunan sebaliknya. Dalam hal ini,
setiap orang dapat mengambil sumpit dimanapun diatas meja. Misalkan setiap
sumpit diberi nomor sebagai tingkat hirarki dari 1 sampai 5, seseorang hanya
dapat mengambil sumpit dengan nomor yang paling rendah, kemudian mengambil
sumpit yang setingkat lebih tinggi. Ketika ia hendak mengembalikannya, orang itu
harus meletakkan sumpit dengan nomor yang lebih tinggi terlebih dahulu, lalu
yang rendah.
Itulah ulasan mengenai Masalah Klasik Sinkronisasi. Semoga bermanfaat terimakasih.
Apa dampak yang mungkin terjadi jika solusi yang diimplementasikan tidak memadai dan menyebabkan kebuntuan? Kunjungi Kami Telkom University
BalasHapusorang berikutnya yang ingin memakai sumpit harus meminta izin kepada sang waiter, yang hanya dapat diberi ketika salah satu sumpit telah selesai terpakai? Tel U
BalasHapus