Semaphore vs Mutex
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. Mutex (objek pengecualian bersama) juga digunakan untuk mengelakkan akses kepada sumber bersama pada masa yang sama dengan beberapa proses serentak.
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 mutex?
Apabila aplikasi komputer dimulakan, ia akan membuat mutex dan melampirkannya ke sumber. Apabila sumber digunakan oleh benang, ia dikunci dan benang lain tidak dapat menggunakannya. Sekiranya utas lain mahu menggunakan sumber yang sama, ia perlu membuat permintaan. Kemudian benang itu akan diletakkan dalam barisan sehingga benang pertama selesai dengan sumbernya. Apabila utas pertama selesai dengan sumber, kunci akan dikeluarkan dan benang yang sedang menunggu dalam barisan boleh mendapatkan akses ke sumber. Sekiranya terdapat banyak benang yang menunggu dalam barisan, mereka diberi akses secara berputar. Secara praktiknya, apabila mutex menggantikan akses kepada sumber antara beberapa benang, ia akan dapat dilihat kerana pelbagai benang memakan sumber pada masa yang sama. Tetapi secara dalaman hanya satu benang yang mengakses sumber pada masa tertentu.
Apakah perbezaan antara Semaphore dan Mutex?
Walaupun, kedua -dua objek semaphores dan mutex digunakan untuk mencapai pengecualian bersama dalam persekitaran pengaturcaraan selari, mereka mempunyai beberapa perbezaan. Objek Mutex hanya membenarkan benang tunggal untuk menggunakan sumber atau seksyen kritikal, sedangkan semaphores membenarkan bilangan akses serentak yang terhad kepada sumber (di bawah nombor maksimum yang dibenarkan). Dengan objek mutex, benang lain yang ingin mengakses sumber harus menunggu dalam barisan, sehingga benang semasa selesai menggunakan sumber.