Perbedaan Semaphore dan Mutex

Perbedaan Semaphore dan Mutex
Perbedaan Semaphore dan Mutex

Video: Perbedaan Semaphore dan Mutex

Video: Perbedaan Semaphore dan Mutex
Video: Perbedaan Jaguar Leopard dan Cheetah Macan bertutul 2024, Juli
Anonim

Semaphore vs Mutex

Semaphore adalah struktur data yang digunakan untuk memastikan bahwa beberapa proses tidak mengakses sumber daya umum atau bagian kritis pada saat yang sama, dalam lingkungan pemrograman paralel. Semaphore digunakan untuk menghindari dead lock dan kondisi balapan. Mutex (Mutual Exclusion Object) juga digunakan untuk menghindari akses ke sumber daya yang sama secara bersamaan oleh beberapa proses bersamaan.

Apa itu Semaphore?

Semaphore adalah struktur data yang digunakan untuk memberikan pengecualian bersama ke bagian kritis. Semaphores terutama mendukung dua operasi yang disebut wait (secara historis dikenal sebagai P) dan sinyal (secara historis dikenal sebagai V). Operasi wait memblokir sebuah proses hingga semaphore terbuka dan operasi sinyal mengizinkan proses lain (thread) untuk masuk. Setiap semaphore dikaitkan dengan antrian proses menunggu. Ketika operasi wait dipanggil oleh thread, jika semaphore terbuka, thread dapat dilanjutkan. Jika semaphore ditutup saat operasi wait dipanggil oleh sebuah thread, maka thread tersebut akan diblokir dan harus menunggu dalam antrian. Operasi sinyal membuka semaphore dan jika sudah ada thread yang menunggu dalam antrian, proses tersebut diperbolehkan untuk dilanjutkan dan jika tidak ada thread yang menunggu dalam antrian sinyal akan diingat untuk thread berikutnya. Ada dua jenis semafor yang disebut semafor mutex dan semafor penghitungan. Semafor mutex memungkinkan akses tunggal ke sumber daya dan semafor penghitungan memungkinkan beberapa utas untuk mengakses sumber daya (yang memiliki beberapa unit yang tersedia).

Apa itu Mutex?

Ketika aplikasi komputer dijalankan, itu akan membuat mutex dan melampirkannya ke sumber daya. Ketika sumber daya digunakan oleh utas, itu dikunci dan utas lain tidak dapat menggunakannya. Jika utas lain ingin menggunakan sumber daya 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 yang menunggu dalam antrian, mereka diberikan akses secara bergiliran. Praktis, ketika mutex mengganti akses ke sumber daya di antara beberapa utas, itu akan terlihat karena beberapa utas menggunakan sumber daya pada saat yang sama. Tetapi secara internal hanya satu utas yang mengakses sumber daya pada waktu tertentu.

Apa perbedaan Semaphore dan Mutex?

Meskipun, objek semaphore dan mutex digunakan untuk mencapai pengecualian bersama dalam lingkungan pemrograman paralel, mereka memiliki beberapa perbedaan. Objek mutex hanya memungkinkan satu utas untuk menggunakan sumber daya atau bagian kritis, sedangkan semaphore memungkinkan sejumlah 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.

Direkomendasikan: