Semaphore lwn Monitor
Semaphore ialah struktur data yang digunakan untuk memastikan berbilang proses tidak mengakses sumber biasa atau bahagian kritikal pada masa yang sama, dalam persekitaran pengaturcaraan selari. Semaphore digunakan untuk mengelakkan kunci mati dan keadaan perlumbaan. Monitor ialah binaan bahasa pengaturcaraan yang juga digunakan untuk mengelakkan pelbagai proses mengakses sumber biasa pada masa yang sama oleh itu menjamin pengecualian bersama. Pemantau menggunakan pembolehubah bersyarat untuk mencapai tugas ini.
Apakah itu Semaphore?
Semaphore ialah struktur data yang digunakan untuk memberikan pengecualian bersama kepada bahagian kritikal. Semaphore terutamanya menyokong dua operasi yang dipanggil tunggu (sejarahnya dikenali sebagai P) dan isyarat (sejarahnya dikenali sebagai V). Operasi tunggu menyekat proses sehingga semaphore dibuka dan operasi isyarat membenarkan proses lain (benang) masuk. Setiap semafor dikaitkan dengan barisan proses menunggu. Apabila operasi tunggu dipanggil oleh benang, jika semaphore dibuka, benang boleh diteruskan. Jika semaphore ditutup apabila operasi tunggu dipanggil oleh benang, benang disekat dan ia perlu menunggu dalam baris gilir. Operasi isyarat membuka semafor dan jika terdapat benang sudah menunggu dalam baris gilir, proses itu dibenarkan untuk diteruskan dan jika tiada benang menunggu dalam baris gilir isyarat diingati untuk benang seterusnya. Terdapat dua jenis semaphore yang dipanggil mutex semaphores dan counting semaphores. Semaphore Mutex membenarkan akses tunggal kepada sumber dan mengira semaphore membenarkan berbilang benang untuk mengakses sumber (yang mempunyai beberapa unit tersedia).
Apakah itu Monitor?
Monitor ialah binaan 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 permohonan prosedur serentak. Pemantau memastikan bahawa datanya tidak berhadapan dengan akses tidak berstruktur dan menjamin bahawa tapak (yang mengakses data monitor melalui prosedurnya) berinteraksi dengan cara yang sah. Monitor menjamin pengecualian bersama dengan membenarkan hanya satu utas untuk melaksanakan sebarang prosedur monitor pada masa tertentu. Jika benang lain cuba menggunakan kaedah dalam monitor, sementara benang sudah melaksanakan prosedur dalam monitor, maka prosedur kedua disekat dan ia perlu menunggu dalam baris gilir. Terdapat dua jenis monitor yang dinamakan monitor Hoare dan monitor Mesa. Mereka berbeza terutamanya dalam semantik penjadualan mereka.
Apakah perbezaan antara Semaphore dan Monitor?
Walaupun kedua-dua semaphore dan monitor digunakan untuk mencapai pengecualian bersama dalam persekitaran pengaturcaraan selari, ia 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, manakala kod untuk semaphore diedarkan sebagai panggilan fungsi tunggu dan isyarat. Juga, sangat mudah untuk membuat kesilapan apabila melaksanakan semaphore, sementara terdapat sedikit peluang untuk membuat kesilapan semasa melaksanakan monitor. Selanjutnya, monitor menggunakan pembolehubah keadaan, manakala semaphore tidak.