Gaya Hidup

Semaphore dan Monitor apakah mereka sama?

Pengantar Semaphore dan Monitor

Semaphore merupakan struktur data yang digunakan untuk memastikan bahwa banyak proses tidak mengakses sumber daya umum atau bagian kritis pada saat yang bersamaan, dalam lingkungan pemrograman paralel.

Semafor digunakan untuk menghindari kunci mati dan kondisi balapan.

Monitor adalah konstruksi bahasa pemrograman yang juga digunakan untuk menghindari banyak proses mengakses sumber daya umum pada saat yang sama sehingga menjamin pengecualian bersama.

Monitor menggunakan variabel kondisional untuk mencapai tugas ini.

Apa itu Semaphore?

Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian timbal balik ke bagian kritis.

Semafor terutama mendukung dua operasi yang disebut menunggu (secara historis dikenal sebagai P) dan sinyal (secara historis dikenal sebagai V).

Operasi tunggu memblokir proses sampai semafor terbuka dan operasi sinyal mengizinkan proses lain (utas) untuk masuk.

Setiap semafor dikaitkan dengan antrian proses menunggu.

Saat operasi tunggu dipanggil oleh thread, jika semaphore terbuka, thread dapat dilanjutkan.

Jika semafor ditutup saat operasi tunggu dipanggil oleh sebuah utas, utas tersebut diblokir dan harus menunggu dalam antrean.

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 semaphore mutex dan semaphore count.

Semafor Mutex memungkinkan satu akses ke sumber daya dan menghitung semafor memungkinkan banyak 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 dengan cara yang sah.

Monitor menjamin pengecualian timbal balik 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 antrean.

Ada dua jenis monitor bernama monitor Hoare dan monitor Mesa.

Mereka terutama berbeda dalam semantik penjadwalan mereka.

Apa perbedaan antara Semaphore dan Monitor?

Meskipun semafor dan monitor digunakan untuk mencapai pengecualian bersama dalam lingkungan pemrograman paralel, keduanya berbeda dalam teknik yang digunakan untuk mencapai tugas ini.

Di monitor, kode yang digunakan untuk mencapai pengecualian bersama ada di satu tempat dan lebih terstruktur, sedangkan kode untuk semafor didistribusikan sebagai panggilan fungsi tunggu dan sinyal.

Selain itu, sangat mudah membuat kesalahan saat mengimplementasikan semaphore, sementara kecil kemungkinannya untuk membuat kesalahan saat mengimplementasikan monitor.

Selanjutnya, monitor menggunakan variabel kondisi, sedangkan semaphore tidak.