Semaphore vs Monitor
Semaphore adalah struktur data yang digunakan untuk memastikan bahwa beberapa proses tidak mengakses sumber daya yang sama 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 bersama pada saat yang sama oleh karena itu menjamin pengecualian timbal balik. Pengawas menggunakan variabel bersyarat untuk mencapai tugas ini.
Apa itu Semaphore?
Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian timbal balik ke bagian kritis. Semaphore terutama mendukung dua operasi yang disebut menunggu (secara historis dikenal sebagai P) dan sinyal (secara historis dikenal sebagai V). Operasi menunggu memblokir proses hingga semafor terbuka dan operasi sinyal memungkinkan proses lain (utas) masuk. Setiap semaphore dikaitkan dengan antrian proses menunggu. Ketika operasi menunggu dipanggil oleh utas, jika semafor terbuka, utas dapat melanjutkan. Jika semaphore ditutup ketika operasi menunggu dipanggil oleh sebuah thread, maka thread tersebut akan diblokir dan harus menunggu dalam antrian. Operasi sinyal membuka semaphore 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 count semaphore. Semaphore mutex memungkinkan satu akses ke sumber daya dan semaphore penghitungan memungkinkan beberapa utas 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 pada akses yang tidak terstruktur dan jaminan bahwa tapak (yang mengakses data monitor melalui prosedurnya) berinteraksi dengan cara yang sah. Monitor menjamin pengecualian timbal balik 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 yang diberi nama 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 timbal balik dalam lingkungan pemrograman paralel, mereka berbeda dalam teknik yang digunakan untuk mencapai tugas ini. Di monitor, kode yang digunakan untuk mencapai saling pengecualian 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 kecil kemungkinannya untuk membuat kesalahan saat mengimplementasikan monitor. Selanjutnya, monitor menggunakan variabel kondisi, sedangkan semaphore tidak.