Semaphore vs Mutex
Semaphore adalah struktur data yang digunakan untuk memastikan bahwa banyak proses tidak mengakses sumber daya umum atau bagian penting pada saat yang sama, dalam lingkungan pemrograman paralel. Semafor digunakan untuk menghindari kunci mati dan kondisi balapan. Mutex (Mutual Exclusion Object) juga digunakan untuk menghindari akses ke sumber daya bersama pada saat yang sama oleh beberapa proses bersamaan.
Apa itu Semaphore??
Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian timbal balik ke bagian-bagian penting. Semafor terutama mendukung dua operasi yang disebut menunggu (secara historis dikenal sebagai P) dan sinyal (secara historis dikenal sebagai V). Operasi menunggu memblokir proses sampai semafor terbuka dan operasi sinyal memungkinkan proses lain (utas) untuk masuk. Setiap semaphore dikaitkan dengan antrian proses menunggu. Ketika operasi tunggu dipanggil oleh utas, jika semafor terbuka, utas dapat dilanjutkan. Jika semaphore ditutup ketika operasi menunggu dipanggil oleh utas, utas diblokir dan harus menunggu dalam antrian. Operasi sinyal membuka semafor 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 semaphore yang disebut mutex semaphores dan menghitung semaphores. Semafor mutex memungkinkan akses tunggal ke sumber daya dan semafor penghitungan memungkinkan beberapa utas untuk mengakses sumber daya (yang memiliki beberapa unit tersedia).
Apa itu Mutex??
Ketika aplikasi komputer dimulai, itu akan membuat mutex dan melampirkannya ke sumber daya. Ketika sumber daya digunakan oleh utas, ia dikunci dan utas lainnya tidak dapat menggunakannya. Jika utas lain ingin menggunakan sumber yang sama, ia harus membuat permintaan. Kemudian utas itu akan ditempatkan dalam antrian sampai utas pertama selesai dengan sumber daya. Ketika 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 menunggu dalam antrian, mereka diberi akses secara bergiliran. Secara praktis, ketika mutex mengalihkan akses ke sumber daya di antara beberapa utas, itu akan terlihat karena beberapa 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, baik objek semafor dan mutex digunakan untuk mencapai saling pengecualian dalam lingkungan pemrograman paralel, mereka memiliki beberapa perbedaan. Objek mutex hanya memungkinkan satu utas untuk mengkonsumsi sumber daya atau bagian kritis, sedangkan semafor memungkinkan sejumlah terbatas akses simultan ke sumber daya (di bawah jumlah maksimum yang diizinkan). Dengan objek mutex, utas lain yang ingin mengakses sumber daya harus menunggu dalam antrian, hingga utas saat ini selesai menggunakan sumber daya.