Perbedaan antara mutex dan semaphore

Perbedaan antara mutex dan semaphore

Mutex vs Semaphore

Mutex analog dengan satu kunci ke ruangan. Seseorang yang memegang kunci, yang analog dengan utas, adalah satu -satunya yang dapat memiliki akses ke ruangan. Orang dengan akses kemudian harus menyerahkan kunci ke orang berikutnya sejalan. Oleh karena itu, mutex hanya dapat dilepaskan oleh utas yang memperolehnya.

Mutex biasanya digunakan untuk membuat serialisasi akses ke bagian kode masuk kembali '"semacam kode yang tidak dapat dieksekusi oleh beberapa utas sekaligus. Hanya satu utas yang diizinkan masuk ke bagian. Ini memaksa utas lain dalam antrian untuk menunggu. Sebelum utas mendapatkan akses, ia harus menunggu sampai utas sebelum melepaskan bagian.

Menggunakan analogi yang sama di mutex, semafor adalah jumlah kunci serupa yang dapat mengakses jumlah kamar yang sama dengan kunci yang sama. Semaphore atau nilai jumlah semaphore akan tergantung pada jumlah orang (utas) yang masuk atau keluar dari ruangan. Jika ada 5 kamar dan semuanya ditempati, maka jumlah semaphore nol. Jika dua meninggalkan ruangan, maka jumlahnya adalah dua dan dua tombol diberikan kepada dua berikutnya dalam antrian.

Dengan itu dikatakan, semafor dapat ditandai secara bersamaan dengan utas atau proses apa pun dan sangat ideal untuk aplikasi yang memerlukan sinkronisasi. Namun demikian, semafor digunakan untuk secara efektif membatasi jumlah pengguna bersamaan dari sumber daya umum berdasarkan jumlah semaphore maksimum.

Jadi pada dasarnya, mutex dapat dianggap sebagai semaphore yang memiliki nilai satu.

Penurunan dan peningkatan semaphore tergantung pada apakah utas meminta akses ke sumber daya umum atau meninggalkan bagian.

Secara teori, semafor mutex dan (biner) secara semantik serupa.Implementasi mutex dapat dilakukan dengan menggunakan semafor dan begitu juga sebaliknya. Namun, dalam arti praktis, mereka bisa sedikit berbeda.

Mutex dimaksudkan untuk diterapkan hanya untuk pengecualian timbal balik dan semafor biner dimaksudkan untuk digunakan untuk pengucilan timbal balik dan pemberitahuan peristiwa. Meskipun mereka sangat mirip dalam hal implementasi dan semantik umum, mereka digunakan secara berbeda.

Ringkasan:

1. Mutex biasanya digunakan untuk membuat serialisasi akses ke sumber daya umum sementara semaphore adalah sejumlah akses bersamaan.

2. Mutex seperti semaphore dengan hitungan satu.
3. Mutex hanya memungkinkan satu utas untuk memiliki akses saat semafor dapat ditandai secara bersamaan dengan utas atau proses apa pun.

4. Semaphores sangat ideal untuk sinkronisasi dan sering digunakan untuk pemberitahuan peristiwa dan pengecualian timbal balik sementara mutex hanya diterapkan untuk eksklusi timbal balik.