Masalah Klasik Sinkronisasi
Masalah Klasik Sinkronisasi
Terdapat 3 masalah klasik sinkronisasi:
1. Bounded-Buffer Problem
2. Readers and writers problem
3. Dining-Philosophers Problem
1. Bounded – Buffer
Problem
Bounded buffer merupakan sebuah penampung atau struktur
data yang mampu untuk menyimpan sementara beberapa data dalam kapasitas
yang terbatas dan mengeluarkannya kembali ketika diperlukan. Contoh
permasalahan bounded-buffer adalah masalah produsen-konsumen : produsen menaruh
data pada buffer. Jika buffer tersebut sudah terisi penuh, maka produsen tidak
melakukan apa-apa dan menunggu sampai konsumen mengambil data dari buffer. Jika
buffer tersebut kosong, maka konsumen tidak melakukan apa-apa dan menunggu
sampai buffer tersebut diisi oleh produsen. Masalah yang
timbul yaitu jika hanya satu proses yang boleh memasuki critical section, jadi
pada satu waktu buffer hanya bisa diakses oleh satu produsen atau satu
konsumen. Solusi dalam Bounded Buffer problem dapat menggunakan perangkat
sinkronisasi semaphore untuk mensinkronisasi proses produsen dan konsumen.
2. Readers and Writers
problem
Readers dan writers problem adalah problem yang memodelkan
beberapa proses yang mengakses database yang sama dalam satu waktu sehingga
dapat menyebabkan korupsi data. Data dapat berupa buffer, objek, atau file dari
suatu program. Terdapat thread yang membaca dan thread yang menulis.
Thread yang membaca disebut reader, sedangkan yang menulis disebut writer.
Contoh permasalahan readers and writers adalah sebuah reader sedang membaca
objek, kemudian sebuah writer menulis ulang objek data tersebut maka reader
akan membaca data yang tidak akurat, karena ada kemungkinan data yang terbaca
adalah setengah data lama dan setengah data baru. Solusi pada permasalahan ini
adalah:
- Jika terdapat satu proses menulis (mengubah) basis
data, proses lain tidak boleh mengakses basis data, baik membaca atau menulis.
Pada masalah ini, writers memiliki prioritas yang lebih tinggi dari pada readers.
Jika ada writer yang sedang menunggu, maka tidak boleh ada reader lain yang
bekerja. Writer akan memblok semua proses reading oleh readers dan melakukan
proses writing. Ketika proses writing selesai, maka proses reading dapat
dilanjutkan kembali oleh reader.
- 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
3. Dining-Philosophers
Problem
Dining Philosophers Problem yang ditulis dan
diselesaikan oleh Djikstra dapat diilustrasikan sebagai berikut, terdapat lima
orang filsuf yang sedang duduk mengelilingi sebuah meja. Terdapat lima mangkuk
mie di depan masing-masing filsuf dan satu sumpit di antara masing-masing filsuf.
Para filsuf menghabiskan waktu dengan berpikir (ketika kenyang) dan makan
(ketika lapar). Ketika lapar, filsuf akan mengambil dua buah sumpit (di tangan
kiri dan tangan kanan) dan makan. Namun adakalanya, hanya diambil satu sumpit
saja. Jika ada filsuf yang mengambil dua buah sumpit, maka dua filsuf di
samping filsuf yang sedang makan harus menunggu sampai sumpit ditaruh kembali.
Hal ini dapat diimplementasikan dengan wait dan signal.
Permasalahannya adalah pada waktu yang sama, kelima filsuf tersebut dalam
keadaan lapar, dan masing-masing mengambil sumpit yang ada di sebelah kanannya.
Pada saat kelima filsuf tersebut ingin mengambil sumpit yang di sebelah kiri,
sumpit tersebut telah digunakan oleh filsuf lainnya. Setiap filsuf saling
menunggu filsuf lain untuk melepaskan sumpit, maka terjadilah deadlock. 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, filsuf 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 filsuf terhadap sebuah
sumpit harus dilakukan pada susunan tertentu, dan dikembalikan pada susunan
sebaliknya. Dalam hal ini, setiap filsuf dapat mengambil sumpit dimanapun
diatas meja. Misalkan setiap sumpit diberi nomor sebagai tingkat hirarki dari 1
sampai 5, satu filsuf hanya dapat mengambil sumpit dengan nomor yang paling
rendah, kemudian mengambil sumpit yang setingkat lebih tinggi. Ketika ia hendak
mengembalikannya, filsuf itu harus meletakkan sumpit 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.
Comments
Post a Comment