Page 100 - Sistem Operasi
P. 100
1. Ketika mengeksekusi operasi wait, maka nilai semaphore menjadi tidak positif,
pada saat itu proses memblok dirinya sendiri dan terjadi waiting queue.
2. Nunggu Pada saat beberapa proses yang lain mengeksekusi operasi signal maka
proses yang lain akan mengunggu hingga semaphore merestar. Proses tersebut akan
merestar dengan operasi wakeup dan akan merubah proses dari keadaan waiting ke
ready.
6.3. Masalah-Masalah Klasik dalam Sinkronisasi
Terdapat 3 permasalahan klasik dalam sincronisasi yaitu :
1. The Bounder-Buffer Problem
Problem ini kita upamakan dengan seorang programer yang menghasilkan sebuah
program dengan seorang user yang menggunakan program tersebut, maka batasan-
batasan yang harus dipenuhi antara lain :
Program yang dihasil programer terbatas
Program yang digunakan oleh user terbatas.
User hanya boleh menggunakan program yang dimaksud setelah programer
menghasilkan program dalam jumlah tertentu.
Programer hanya boleh menghasilkan program jika user sudah kehabisan
program.
Untuk menyelesaikan masalah bounded buffer menggunakan varilabel umum pada
semaphore antara lain : semapore full, empty, mutex. Inisialisasi varial tersebut
adalah full=0, empty=n, mutex=1, maka :
Struktur program untuk programer Struktur program untuk user
REPEAT REPEAT
....
menghasilkan item di nexttp Wait(full);
.... Wait(mutex);
Wait(empty); ...
Wait(mutx); Memindahkan item dari buffer ke nextc
... ...
Menambah nextp ke buffer Signal(mutex);
.. Signal(empty);
Signal(mutex); ...
Signal(full); Mengkonsumsi item dari nextc
UNTIL false ...
UNTIL false
86