Mutex vs Semaphore
Mutex digunakan untuk menyediakan akses serial ke bagian kode re-entrant yang tidak dapat dieksekusi secara paralel oleh lebih dari satu utas. Mutex memastikan bahwa hanya satu kode yang dapat mengakses bagian yang dikontrol pada satu waktu. Untuk mendapatkan akses, kode lain dibuat untuk menunggu hingga kode pertama keluar. Anda dapat menganggapnya seperti kunci kamar. Orang yang memiliki akses ke kunci itu terlebih dahulu berjalan terlebih dahulu. Sampai saat orang itu kembali, tidak ada orang lain yang dapat mengakses ruangan itu.
Semaphore memberikan akses ke sumber daya bersama ke sejumlah pengguna secara bersamaan. Karena jumlah pengguna yang mengakses sumber daya meningkat, jumlah semaphore berkurang. Setelah pengguna mulai melepaskan sumber daya, jumlah semaphore mulai naik lagi. Ini digunakan oleh aplikasi yang membutuhkan sinkronisasi. Jumlah pengguna bersamaan dibatasi berdasarkan batas semaphore. Semafor dapat dianggap sebagai sekelompok kunci yang mirip dengan kunci yang mirip dengan satu ruangan, tetapi jumlahnya terbatas. Orang yang memiliki kunci ini dapat berbagi ruangan.
Perbedaan antara mutex dan semaphore:
1. Mutex digunakan untuk saling pengecualian sedangkan semaphore menemukan kegunaannya di kedua acara tersebut
pemberitahuan dan saling pengecualian.
2. Mutex menyediakan akses serial ke sumber daya umum sedangkan semaphore membatasi
jumlah akses bersamaan.
3. Sebuah mutex bekerja dengan satu utas sekaligus sementara semaphore mengelola beberapa utas
bersama.
4. Mutex memiliki konsep pemilik dimana proses yang mengunci mutex hanya bisa
buka kembali itu. Tidak ada proses lain yang bisa melakukannya. Tetapi dalam kasus semaphore, seperti itu
pembatasan tidak ada.
5. Mutex adalah mekanisme penguncian sedangkan semaphore adalah mekanisme pensinyalan dengan
sehubungan dengan sinkronisasi akses ke sumber daya.
Ringkasan:
1. Secara teori dan semantik, baik mutex maupun semaphore adalah sama. Satu bisa saja
diimplementasikan menggunakan yang lain, tetapi praktis keduanya berbeda.
2. Mutex tidak lain adalah semafor dengan nilai hitung sama dengan satu.
3. Mutex adalah semaphore dengan fitur tambahan seperti kepemilikan dan inversi prioritas
perlindungan.
4. Semaphore adalah tipe data abstrak yang mengontrol akses ke sumber daya bersama
berbagai proses dalam lingkungan pemrograman paralel.
5. Semaphore menemukan penggunaannya dalam banyak sistem operasi sebagai sinkronisasi primitif.
6. Baik mutex dan semaphore adalah sumber daya kernel yang digunakan untuk tujuan
sinkronisasi.