Perbezaan Antara Semaphore dan Monitor

Anonim

Semaphore vs Monitor

Semaphore adalah struktur data yang digunakan untuk memastikan bahawa banyak proses tidak mengakses umum sumber atau bahagian 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 penting. Semaphore 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 thread 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 pengiraan membolehkan pelbagai 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 dikongsi, prosedur (yang beroperasi pada struktur data yang dikongsi) dan penyegerakan antara prosedur serentak invocations. 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 bersama dengan hanya membenarkan satu thread untuk melaksanakan prosedur monitor pada satu masa. Jika satu lagi benang cuba menggunakan kaedah dalam monitor, manakala benang sudah melaksanakan prosedur di monitor, maka prosedur kedua disekat dan ia 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 yang selari, mereka berbeza dalam teknik yang digunakan untuk mencapai tugas ini.Dalam monitor, kod yang digunakan untuk mencapai pengecualian bersama adalah dalam satu tempat dan lebih berstruktur, manakala kod untuk semaphores diedarkan sebagai fungsi tunggu dan fungsi isyarat. Selain itu, sangat mudah untuk membuat kesilapan apabila melaksanakan semaphore, sementara ada peluang yang sangat kecil untuk membuat kesilapan ketika melaksanakan monitor. Selanjutnya, monitor menggunakan pemboleh ubah keadaan, sementara semaphore tidak.