Semaphore vs Monitor
Semaphore adalah struktur data yang digunakan untuk memastikan bahawa banyak proses tidak mengakses sumber yang sama atau seksyen kritikal pada masa yang sama, dalam persekitaran pengaturcaraan selari. Semaphores digunakan untuk mengelakkan kunci mati dan keadaan perlumbaan. Monitor adalah bahasa pengaturcaraan yang juga digunakan untuk mengelakkan banyak proses yang mengakses sumber yang sama pada masa yang sama oleh itu menjamin pengecualian bersama. Monitor menggunakan pemboleh ubah bersyarat untuk mencapai tugas ini.
Apa itu Semaphore?
Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian bersama kepada bahagian kritikal. Semaphores terutamanya menyokong dua operasi yang disebut menunggu (sejarah dikenali sebagai P) dan isyarat (yang dikenali sebagai V). Operasi tunggu menghalang proses sehingga semaphore terbuka dan operasi isyarat membolehkan proses lain (thread) masuk. Setiap semaphore dikaitkan dengan satu barisan proses menunggu. Apabila operasi menunggu dipanggil oleh thread, jika semaphore terbuka, benang dapat diteruskan. Jika semaphore ditutup apabila operasi menunggu dipanggil oleh benang, benang disekat dan ia perlu menunggu dalam barisan. Operasi isyarat membuka semaphore dan jika ada benang yang sedang menunggu dalam barisan, proses itu dibenarkan untuk diteruskan dan jika tidak ada benang yang menunggu dalam barisan sinyal akan diingat untuk benang berikutnya. Terdapat dua jenis semaphores yang dipanggil semaphores mutex dan menghitung semaphores. Mutex semaphores membolehkan satu akses kepada semaphore sumber dan menghitung membolehkan beberapa thread untuk mengakses sumber (yang mempunyai beberapa unit tersedia).
Apa itu Monitor?
Monitor adalah bahasa pengaturcaraan yang digunakan untuk mengawal akses kepada data yang dikongsi. Monitor merangkumi struktur data yang dikongsi, prosedur (yang beroperasi pada struktur data yang dikongsi) dan penyegerakan antara prosedur serentak panggilan. Pemantau memastikan bahawa datanya tidak dihadapi dengan akses tidak terstruktur dan menjamin bahawa treads (yang mengakses data monitor melalui prosedurnya) berinteraksi dengan cara yang sah. Pemantau menjamin pengecualian salingan dengan hanya membenarkan satu thread untuk melaksanakan sebarang prosedur monitor pada satu masa tertentu. Jika satu lagi benang cuba menggunakan kaedah dalam monitor, manakala benang sudah melaksanakan prosedur di monitor, maka prosedur kedua disekat dan harus menunggu dalam barisan. Terdapat dua jenis monitor yang dinamakan monitor Hoare dan monitor Mesa. Mereka terutamanya berbeza dalam semantik penjadualan mereka.
Apakah perbezaan antara Semaphore dan Monitor??
Walaupun kedua-dua semaphores dan monitor digunakan untuk mencapai pengecualian bersama dalam persekitaran pengaturcaraan selari, mereka berbeza dalam teknik yang digunakan untuk mencapai tugas ini. Dalam monitor, kod yang digunakan untuk mencapai pengecualian bersama adalah di satu tempat dan lebih berstruktur, sementara kod untuk semaphore diedarkan sebagai panggilan tunggu dan fungsi panggilan. Juga, sangat mudah untuk membuat kesilapan apabila melaksanakan semaphores, sementara ada sedikit peluang untuk membuat kesilapan ketika melaksanakan monitor. Selanjutnya, monitor menggunakan pemboleh ubah keadaan, sementara semaphore tidak.