Semaphore vs Monitor
Semaphore adalah struktur data yang digunakan untuk memastikan bahwa banyak proses tidak mengakses sumber daya umum atau bagian penting pada saat yang sama, dalam lingkungan pemrograman paralel. Semafor digunakan untuk menghindari kunci mati dan kondisi balapan. Monitor adalah konstruksi bahasa pemrograman yang juga digunakan untuk menghindari beberapa proses mengakses sumber daya bersama pada saat yang sama karena itu menjamin saling pengecualian. Monitor menggunakan variabel kondisional untuk mencapai tugas ini.
Apa itu Semaphore??
Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian timbal balik ke bagian-bagian penting. Semafor terutama mendukung dua operasi yang disebut menunggu (secara historis dikenal sebagai P) dan sinyal (secara historis dikenal sebagai V). Operasi menunggu memblokir proses sampai semafor terbuka dan operasi sinyal memungkinkan proses lain (utas) untuk masuk. Setiap semaphore dikaitkan dengan antrian proses menunggu. Ketika operasi tunggu dipanggil oleh utas, jika semafor terbuka, utas dapat dilanjutkan. Jika semaphore ditutup ketika operasi menunggu dipanggil oleh utas, utas diblokir dan harus menunggu dalam antrian. Operasi sinyal membuka semafor dan jika ada utas yang sudah menunggu dalam antrian, proses itu diizinkan untuk dilanjutkan dan jika tidak ada utas yang menunggu dalam antrian, sinyal diingat untuk utas berikutnya. Ada dua jenis semaphore yang disebut mutex semaphores dan menghitung semaphores. Semafor mutex memungkinkan akses tunggal ke sumber daya dan semafor penghitungan memungkinkan beberapa utas untuk mengakses sumber daya (yang memiliki beberapa unit 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 yang tidak terstruktur dan menjamin bahwa tapak (yang mengakses data monitor melalui prosedurnya) berinteraksi secara sah. Monitor menjamin pengecualian bersama dengan hanya mengizinkan satu utas untuk menjalankan prosedur monitor 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 bernama monitor Hoare dan monitor Mesa. Mereka terutama berbeda dalam penjadwalan semantik mereka.
Apa perbedaan antara Semaphore dan Monitor?
Meskipun semaphores 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 pengecualian bersama berada di satu tempat dan lebih terstruktur, sedangkan kode untuk semafor didistribusikan sebagai panggilan fungsi panggilan dan sinyal. Selain itu, sangat mudah untuk membuat kesalahan saat menerapkan semaphore, sementara ada sedikit kesempatan untuk melakukan kesalahan saat menerapkan monitor. Selanjutnya, monitor menggunakan variabel kondisi, sedangkan semaphore tidak.