Perbezaan Antara Semaphore dan Mutex

Perbezaan Antara Semaphore dan Mutex
Perbezaan Antara Semaphore dan Mutex

Video: Perbezaan Antara Semaphore dan Mutex

Video: Perbezaan Antara Semaphore dan Mutex
Video: Perbedaan Jaguar Leopard dan Cheetah Macan bertutul 2024, Julai
Anonim

Semaphore lwn Mutex

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. Mutex (Objek Pengecualian Bersama) juga digunakan untuk mengelakkan akses kepada sumber biasa pada masa yang sama oleh beberapa proses serentak.

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 utas untuk mengakses sumber (yang mempunyai beberapa unit tersedia).

Apakah itu Mutex?

Apabila aplikasi komputer dimulakan, ia akan mencipta mutex dan melampirkannya pada sumber. Apabila sumber digunakan oleh benang, ia dikunci dan benang lain tidak boleh menggunakannya. Jika utas lain mahu menggunakan sumber yang sama, ia perlu membuat permintaan. Kemudian benang itu akan diletakkan dalam baris gilir sehingga utas pertama selesai dengan sumber. Apabila utas pertama selesai dengan sumber, kunci akan dialih keluar dan utas yang sedang menunggu dalam baris gilir boleh mendapat akses kepada sumber itu. Jika terdapat beberapa utas menunggu dalam baris gilir, mereka diberikan akses secara bergilir. Secara praktikalnya, apabila mutex menukarkan akses kepada sumber antara beberapa utas, ia akan kelihatan kerana beberapa utas sedang menggunakan sumber pada masa yang sama. Tetapi secara dalaman hanya satu urutan yang mengakses sumber pada masa tertentu.

Apakah perbezaan antara Semaphore dan Mutex?

Walaupun, kedua-dua objek semaphore dan mutex digunakan untuk mencapai pengecualian bersama dalam persekitaran pengaturcaraan selari, ia mempunyai beberapa perbezaan. Objek mutex hanya membenarkan satu utas untuk menggunakan sumber atau bahagian kritikal, manakala semaphore membenarkan bilangan akses serentak yang terhad kepada sumber (di bawah nombor maksimum yang dibenarkan). Dengan objek mutex, urutan lain yang ingin mengakses sumber perlu menunggu dalam baris gilir, sehingga urutan semasa selesai menggunakan sumber tersebut.

Disyorkan: