Semaphore vs Mutex
Semaphore adalah struktur data yang digunakan untuk memastikan bahwa banyak proses tidak mengakses sumber daya umum atau bagian kritis pada saat yang sama, di lingkungan pemrograman paralel. Semaphores digunakan untuk menghindari kunci mati dan kondisi balapan. Mutex (objek eksklusi timbal balik) juga digunakan untuk menghindari akses ke sumber daya umum pada saat yang sama dengan beberapa proses bersamaan.
Apa itu Semaphore?
Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian bersama untuk bagian kritis. Semaphores terutama mendukung dua operasi yang disebut Wait (secara historis dikenal sebagai P) dan sinyal (secara historis dikenal sebagai V). Operasi tunggu memblokir proses sampai semaphore terbuka dan operasi sinyal memungkinkan proses lain (utas) untuk masuk. Setiap semaphore dikaitkan dengan antrian proses menunggu. Saat operasi tunggu dipanggil oleh utas, jika semaphore terbuka, utas dapat dilanjutkan. Jika semaphore ditutup saat operasi tunggu dipanggil oleh utas, utas diblokir dan harus menunggu dalam antrian. Operasi sinyal membuka semaphore dan jika ada utas yang sudah menunggu dalam antrian, proses itu diizinkan untuk dilanjutkan dan jika tidak ada utas yang menunggu dalam antrian sinyal diingat untuk utas berikutnya. Ada dua jenis semafor yang disebut semafor mutex dan menghitung semafor. Semaphores mutex memungkinkan akses tunggal ke sumber daya dan penghitungan semafor memungkinkan beberapa utas untuk mengakses sumber daya (yang memiliki beberapa unit yang tersedia).
Apa itu mutex?
Saat aplikasi komputer dimulai, itu akan membuat mutex dan melampirkannya ke sumber daya. Saat sumber daya digunakan oleh utas, terkunci dan utas lainnya tidak dapat menggunakannya. Jika utas lain ingin menggunakan sumber daya yang sama, itu harus membuat permintaan. Maka utas itu akan ditempatkan dalam antrian sampai utas pertama selesai dengan sumber daya. Saat utas pertama selesai dengan sumber daya, kunci akan dihapus dan utas yang menunggu dalam antrian bisa mendapatkan akses ke sumber daya. Jika ada beberapa utas yang menunggu dalam antrian, mereka diberikan akses secara berputar. Secara praktis, ketika mutex berganti -ganti akses ke sumber daya antara beberapa utas, itu akan terlihat karena banyak utas mengonsumsi sumber daya pada saat yang sama. Tetapi secara internal hanya satu utas yang mengakses sumber daya pada waktu tertentu.
Apa perbedaan antara semaphore dan mutex?
Meskipun demikian, baik objek semaphor dan mutex digunakan untuk mencapai eksklusi timbal balik dalam lingkungan pemrograman paralel, mereka memiliki beberapa perbedaan. Objek mutex hanya memungkinkan utas tunggal untuk mengkonsumsi sumber daya atau bagian kritis, sedangkan semafor memungkinkan sejumlah akses simultan yang terbatas ke sumber daya (di bawah angka maksimum yang diizinkan). Dengan objek mutex, utas lain yang ingin mengakses sumber daya harus menunggu dalam antrian, sampai utas saat ini selesai menggunakan sumber daya.