Semaphore vs Monitor
Semaphore adalah struktur data yang digunakan untuk memastikan bahwa beberapa proses tidak mengakses sumber daya umum atau bagian kritis pada saat yang sama, dalam lingkungan pemrograman paralel. Semaphore digunakan untuk menghindari dead lock dan kondisi balapan. Monitor adalah konstruksi bahasa pemrograman yang juga digunakan untuk menghindari beberapa proses mengakses sumber daya yang sama pada saat yang sama sehingga menjamin pengecualian bersama. Monitor menggunakan variabel bersyarat untuk mencapai tugas ini.
Apa itu Semaphore?
Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian bersama ke bagian kritis. Semaphores terutama mendukung dua operasi yang disebut wait (secara historis dikenal sebagai P) dan sinyal (secara historis dikenal sebagai V). Operasi wait memblokir sebuah proses hingga semaphore terbuka dan operasi sinyal mengizinkan proses lain (thread) untuk masuk. Setiap semaphore dikaitkan dengan antrian proses menunggu. Ketika operasi wait dipanggil oleh thread, jika semaphore terbuka, thread dapat dilanjutkan. Jika semaphore ditutup saat operasi wait dipanggil oleh sebuah thread, maka thread tersebut akan diblokir dan harus menunggu dalam antrian. Operasi sinyal membuka semaphore dan jika sudah ada thread yang menunggu dalam antrian, proses tersebut diperbolehkan untuk dilanjutkan dan jika tidak ada thread yang menunggu dalam antrian sinyal akan diingat untuk thread berikutnya. Ada dua jenis semafor yang disebut semafor mutex dan semafor penghitungan. Semafor mutex memungkinkan akses tunggal ke sumber daya dan menghitung semafor memungkinkan beberapa utas untuk mengakses sumber daya (yang memiliki beberapa unit yang tersedia).
Apa itu Monitor?
Monitor adalah konstruksi bahasa pemrograman yang digunakan untuk mengontrol akses ke data bersama. Monitor merangkum struktur data bersama, prosedur (yang beroperasi pada struktur data bersama) dan sinkronisasi antara pemanggilan prosedur bersamaan. Monitor memastikan bahwa datanya tidak dihadapkan dengan akses tidak terstruktur dan menjamin bahwa tapak (yang mengakses data monitor melalui prosedurnya) berinteraksi dengan cara yang sah. Monitor menjamin pengecualian bersama dengan mengizinkan hanya satu utas untuk menjalankan prosedur monitor apa pun pada waktu tertentu. Jika utas lain mencoba memanggil metode di monitor, sementara utas sudah menjalankan prosedur di monitor, maka prosedur kedua diblokir dan harus menunggu dalam antrian. Ada dua jenis monitor yaitu monitor Hoare dan monitor Mesa. Mereka terutama berbeda dalam semantik penjadwalan mereka.
Apa perbedaan antara Semaphore dan Monitor?
Meskipun semaphore dan monitor digunakan untuk mencapai pengecualian bersama dalam lingkungan pemrograman paralel, mereka berbeda dalam teknik yang digunakan untuk mencapai tugas ini. Di monitor, kode yang digunakan untuk mencapai mutual exclusion berada di satu tempat dan lebih terstruktur, sedangkan kode untuk semaphore didistribusikan sebagai panggilan fungsi menunggu dan sinyal. Selain itu, sangat mudah untuk membuat kesalahan saat mengimplementasikan semaphore, sementara sangat kecil kemungkinannya untuk membuat kesalahan saat mengimplementasikan monitor. Selanjutnya, monitor menggunakan variabel kondisi, sedangkan semaphore tidak.