Semaphore vs Monitor
Semaphore adalah struktur data yang digunakan untuk memastikan bahawa pelbagai proses tidak mengakses sumber bersama 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 pelbagai proses mengakses sumber yang sama pada masa yang sama sehingga menjamin pengecualian bersama. Monitor menggunakan pembolehubah bersyarat untuk mencapai tugas ini.
Apa itu semaphore?
Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian bersama ke bahagian kritikal. Semaphores terutamanya menyokong dua operasi yang dipanggil Wait (sejarah yang dikenali sebagai p) dan isyarat (secara sejarah dikenali sebagai V). Operasi tunggu menghalang proses sehingga semaphore dibuka dan operasi isyarat membolehkan proses lain (benang) masuk. Setiap semaphore dikaitkan dengan barisan proses menunggu. Apabila operasi tunggu dipanggil oleh benang, jika semaphore dibuka, benang boleh diteruskan. Sekiranya semaphore ditutup apabila operasi tunggu dipanggil oleh benang, utasnya disekat dan ia perlu menunggu dalam barisan. Operasi isyarat membuka semaphore dan jika ada benang yang sudah menunggu dalam barisan, proses itu dibenarkan untuk diteruskan dan jika tidak ada benang yang menunggu dalam barisan isyarat yang diingati untuk benang seterusnya. Terdapat dua jenis semapores yang dipanggil semaphores mutex dan mengira semaphores. Semaphores mutex membenarkan akses tunggal ke semaphores sumber dan mengira membolehkan pelbagai benang mengakses sumber (yang mempunyai beberapa unit yang tersedia).
Apa itu monitor?
Monitor adalah bahasa pengaturcaraan yang digunakan untuk mengawal akses kepada data yang dikongsi. Memantau merangkumi struktur data bersama, prosedur (yang beroperasi pada struktur data yang dikongsi) dan penyegerakan antara doa prosedur serentak. Monitor memastikan bahawa datanya tidak dihadapi dengan akses yang tidak tersusun dan menjamin bahawa menginjak data monitor melalui prosedurnya) berinteraksi dengan cara yang sah. Pemantauan menjamin pengecualian bersama dengan membenarkan hanya satu benang untuk melaksanakan prosedur monitor pada masa tertentu. Sekiranya benang lain cuba menggunakan kaedah dalam monitor, sementara benang sudah melaksanakan prosedur dalam monitor, maka prosedur kedua disekat dan ia harus menunggu dalam barisan. Terdapat dua jenis monitor bernama Hoare Monitor dan Mesa Monitor. 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 berada di satu tempat dan lebih berstruktur, manakala kod untuk semaphores diedarkan sebagai panggilan menunggu dan isyarat panggilan. Juga, sangat mudah untuk membuat kesilapan ketika melaksanakan semaphores, sementara ada sedikit peluang untuk membuat kesilapan ketika melaksanakan monitor. Selanjutnya, monitor menggunakan pemboleh ubah keadaan, sementara semaphores tidak.