3.6 Monitor
Pada awal tahun 1970-an , dibuatlah monitor yang diperkenalkan oleh Brinch Hansen dan
Hoare. Monitor adalah tipe data abstrak yang mengenkapsulasi sekumpulan variabel dan
operasi yang menggunakan variabel-variabel tersebut. Setiap variabel bersifat private dan
hanya dapat diakses oleh operasi yang terdapat dalam satu monitor dengan variabel tersebut.
Hal utama pada monitor adalah hanya satu proses/thred yang dapat aktif pada satu monitor
pada satu waktu. Secara implisit, ekslusi mutual dilakukan oleh compiler bahasa pemograman
yang mendukung implementasi monitor (yaitu dengan menggunakan semafor). Dengan
demikian, programmer tidak perlu memikirkan masalah ekslusi mutual dan pemrograman
menjadi lebih mudah.
Monitor memilki sebuah vitur tambahan, yaitu Variabel kondisi (condition variable).
Variabel ini akan memblok proses yang tidak dapat dialnjutkan atau mengaktifkan proses yang
telah diblok sebelimnya yang ingin masuk ke monitor. Variabel kondisi tidak menyimpan
informasi mengenai jumlah proses yang sedang menunggu. Hal inilah yang membedakan dari
semafor.
Monitor mengikuti semantik signal1 dan wait atau signal1 dan continue. Misalnya proses
P, memanggil signal (X) kemudian proses P2 memanggil wait (X). Dengan signal dan wait, P1
akan dijalankan, dan P2 menunggu sampai P1 melepaskan monitor. Dengan signal dan
continue, P2 akan dilanjutkan, dan P1 yang menunggu. Skema signal dan continue dikemukakan
oleh Brinch Hanser. Skema ini akan memberikan kinerja yang lebih baik dibandingkan signal
dan wait karena context switch yang terjadi lebih sedikit.
Monitor lebih mudah diterapkan bila dibandingkan dengan semafor, tetapi hanya tersedia
dalam sedikit bahasa pemrograman saja, salah satunya adalah java. Setiap class pada java
memiliki properti yang menyerupai monitor bila method dideklarasikan sebagai synchronized.
Variabel kondisi tidak diberi nama, tetapi objek memiliki variabel kondisi implisit yang dapat
dimanipulasi dengan menggunkan method wait() dan notify(). Dalam hal ini digunakan
pendekatan penggunaan sinyal atau teruskan (continue).
Masalah sesungguhnya pada semafor dan monitor adalah ketergantungan mereka pada
memori bersama (shared memory) sehingga keduanya sulit diterapakan pada distributed
system.