Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara Semaphore dan Mutex

Sinkronisasi proses memainkan peran penting dalam menjaga konsistensi data bersama. Baik perangkat lunak dan solusi perangkat keras hadir untuk menangani masalah bagian kritis. Tetapi solusi perangkat keras untuk masalah bagian kritis cukup sulit untuk diterapkan. Pada artikel hari ini, kita akan membahas dua solusi berbasis perangkat lunak untuk menangani masalah bagian kritis yaitu Semaphore dan Mutex.

Perbedaan mendasar antara semaphore dan mutex adalah bahwa semaphore adalah mekanisme pensinyalan yaitu proses melakukan wait () dan signal () operasi untuk menunjukkan apakah mereka memperoleh atau melepaskan sumber daya, sementara Mutex adalah mekanisme penguncian, proses harus mendapatkan kunci pada objek mutex jika ingin memperoleh sumber daya. Ada beberapa perbedaan lagi antara semaphore dan mutex, mari kita bahas dengan bantuan grafik perbandingan yang ditunjukkan di bawah ini.

Grafik perbandingan

Dasar untuk PerbandinganTiang sinyalMutex
DasarSemaphore adalah mekanisme pensinyalan.Mutex adalah mekanisme penguncian.
AdanyaSemaphore adalah variabel integer.Mutex adalah sebuah objek.
FungsiSemaphore memungkinkan beberapa utas program untuk mengakses sumber daya yang terbatas.Mutex memungkinkan beberapa utas program untuk mengakses sumber daya tunggal tetapi tidak secara bersamaan.
KepemilikanNilai semaphore dapat diubah dengan proses apa pun yang memperoleh atau melepaskan sumber daya.Kunci objek Mutex dilepaskan hanya oleh proses yang telah memperoleh kunci di atasnya.
MengkategorikanSemaphore dapat dikategorikan ke dalam penghitungan semaphore dan binary semaphore.Mutex tidak dikategorikan lebih lanjut.
OperasiNilai semaphore dimodifikasi menggunakan operasi wait () dan signal ().Objek mutex dikunci atau dibuka oleh proses yang meminta atau melepaskan sumber daya.
Sumber Daya DidudukiJika semua sumber daya digunakan, proses yang meminta sumber daya melakukan menunggu () operasi dan memblokir sendiri sampai jumlah semaphore menjadi lebih besar dari satu.Jika objek mutex sudah dikunci, proses meminta sumber daya menunggu dan antri oleh sistem sampai kunci dilepaskan.

Definisi Semaphore

Semaphore adalah alat sinkronisasi proses. Semaphore biasanya merupakan variabel integer S yang diinisialisasi ke jumlah sumber daya yang ada dalam sistem dan nilai semaphore dapat dimodifikasi hanya dengan dua fungsi tunggu () dan sinyal () terpisah dari inisialisasi.

Operasi wait () dan signal () mengubah nilai semaphore secara terpisah . Ini berarti bahwa ketika suatu proses memodifikasi nilai semaphore, tidak ada proses lain yang secara bersamaan dapat mengubah nilai semaphore. Semaphore dibedakan oleh sistem operasi dalam dua kategori Semaphore penghitungan dan seminaryore biner .

Dalam Menghitung Semaphore, nilai S semaphore diinisialisasi ke jumlah sumber daya yang ada dalam sistem. Setiap kali suatu proses ingin mengakses sumber daya itu melakukan operasi menunggu () pada semaphore dan mengurangi nilai semaphore oleh satu. Ketika melepaskan sumber daya, ia melakukan operasi sinyal () pada semaphore dan meningkatkan nilai semaphore oleh satu. Ketika jumlah semaphore menjadi 0, itu berarti semua sumber daya ditempati oleh proses. Jika suatu proses perlu menggunakan sumber daya ketika jumlah semaphore adalah 0, itu mengeksekusi tunggu () dan diblokir sampai nilai semaphore menjadi lebih besar dari 0.

Di Binary semaphore, nilai semaphore berkisar antara 0 dan 1 . Ini mirip dengan kunci mutex, tetapi mutex adalah mekanisme penguncian sedangkan, semaphore adalah mekanisme pensinyalan. Dalam semaphore biner, jika suatu proses ingin mengakses sumber daya, ia melakukan operasi wait () pada semaphore dan menurunkan nilai semaphore dari 1 menjadi 0. Ketika melepaskan sumber daya, ia melakukan operasi sinyal () pada semaphore dan penambahan nilainya menjadi 1. Jika nilai semaphore adalah 0 dan suatu proses ingin mengakses sumber daya itu melakukan operasi tunggu () dan memblokir sendiri sampai proses saat ini memanfaatkan sumber daya melepaskan sumber daya.

Definisi Mutex

Obyek Pengecualian Saling disebut sebagai Mutex. Dari istilah saling pengecualian, kita dapat memahami bahwa hanya satu proses pada satu waktu dapat mengakses sumber daya yang diberikan. Objek mutex memungkinkan beberapa utas program untuk menggunakan sumber daya yang sama tetapi satu per satu tidak secara bersamaan.

Ketika sebuah program dijalankan, ia meminta sistem untuk membuat objek mutex untuk sumber daya yang diberikan. Sistem membuat objek mutex dengan nama atau ID unik. Setiap kali utas program ingin menggunakan sumber daya yang diduduki kunci pada objek mutex, memanfaatkan sumber daya dan setelah digunakan, ia melepaskan kunci pada objek mutex. Kemudian proses selanjutnya diizinkan untuk mendapatkan kunci pada objek mutex.

Sementara itu, suatu proses telah mendapatkan kunci pada objek mutex tidak ada thread lain / proses dapat mengakses sumber daya itu. Jika objek mutex sudah dikunci, proses yang ingin mendapatkan kunci pada objek mutex harus menunggu dan antri oleh sistem sampai objek mutex dibuka.

Perbedaan Kunci Antara Semaphore dan Mutex

  1. Semaphore adalah mekanisme pensinyalan ketika operasi wait () dan signal () dilakukan pada variabel semaphore menunjukkan apakah suatu proses memperoleh sumber daya atau melepaskan sumber daya. Di sisi lain, mutex adalah mekanisme penguncian, karena untuk memperoleh sumber daya, suatu proses perlu mengunci objek mutex dan sementara melepaskan proses sumber daya harus membuka kunci objek mutex.
  2. Semaphore biasanya merupakan variabel integer sedangkan, mutex adalah objek .
  3. Semaphore memungkinkan beberapa utas program untuk mengakses sumber daya hingga yang terbatas . Di sisi lain, Mutex memungkinkan beberapa utas program untuk mengakses satu sumber daya bersama tetapi satu per satu.
  4. Nilai variabel semaphore dapat dimodifikasi oleh setiap proses yang memperoleh atau melepaskan sumber daya dengan melakukan operasi wait () dan signal (). Di sisi lain, kunci yang diperoleh pada objek mutex hanya bisa dilepaskan dengan proses yang telah mendapatkan kunci pada objek mutex.
  5. Semaphore terdiri dari dua jenis semaphore dan binary semaphore yang sangat mirip dengan mutex.
  6. Nilai variabel semaphore dimodifikasi oleh operasi wait () dan signal () terlepas dari inisialisasi. Namun, objek bisu dikunci atau dibuka oleh proses memperoleh atau melepaskan sumber daya.
  7. Jika semua sumber daya diperoleh oleh proses, dan tidak ada sumber daya gratis maka proses yang ingin memperoleh sumber daya melakukan menunggu () operasi pada variabel semaphore dan memblokir dirinya sendiri hingga jumlah semaphore menjadi lebih besar dari 0. Tetapi jika objek mutex sudah terkunci maka proses yang ingin memperoleh sumber daya menunggu dan mendapatkan antrian oleh sistem sampai sumber daya dilepaskan dan objek mutex akan dibuka.

Kesimpulan:

Semaphore adalah pilihan yang lebih baik jika ada beberapa contoh sumber daya yang tersedia. Dalam kasus mutex sumber daya bersama tunggal adalah pilihan yang lebih baik.

Top