Disyorkan, 2024

Pilihan Editor

Perbezaan Antara Semaphore dan Mutex

Proses penyegerakan memainkan peranan penting dalam mengekalkan konsistensi data yang dikongsi. Kedua-dua penyelesaian perisian dan perkakasan hadir untuk menangani masalah seksyen kritikal. Tetapi penyelesaian perkakasan untuk masalah seksyen kritikal agak sukar dilaksanakan. Dalam artikel hari ini, kami akan membincangkan dua penyelesaian berasaskan perisian untuk menangani masalah seksyen kritikal iaitu Semaphore dan Mutex.

Perbezaan asas antara semaphore dan mutex adalah semaphore adalah mekanisme isyarat iaitu proses melaksanakan tunggu () dan isyarat () operasi untuk menunjukkan sama ada mereka memperoleh atau melepaskan sumbernya, sementara Mutex adalah mekanisme mengunci, proses itu harus memperoleh kunci pada objek mutex jika ia mahu memperoleh sumber itu. Terdapat beberapa perbezaan antara semaphore dan mutex, marilah kita membincangkannya dengan bantuan carta perbandingan yang ditunjukkan di bawah.

Carta Perbandingan

Asas untuk PerbandinganSemaphoreMutex
AsasSemaphore adalah mekanisme isyarat.Mutex adalah mekanisme kunci.
KewujudanSemaphore adalah pembolehubah integer.Mutex adalah objek.
FungsiSemaphore membenarkan pelbagai benang program untuk mengakses sumber sumber yang terhad.Mutex membenarkan berbilang program benang untuk mengakses sumber tunggal tetapi tidak secara serentak.
PemilikanNilai semaphore boleh diubah oleh sebarang proses memperoleh atau melepaskan sumber.Kunci objek mutex dilepaskan hanya oleh proses yang telah memperoleh kunci padanya.
CategorizeSemaphore boleh dikategorikan ke dalam semaphore semaphore dan binary.Mutex tidak lagi dikategorikan.
OperasiNilai semaphore diubahsuai menggunakan operasi menunggu () dan isyarat ().Objek Mutex dikunci atau dikunci oleh proses yang meminta atau melepaskan sumber.
Sumber PendudukanSekiranya semua sumber digunakan, proses meminta sumber melakukan operasi tunggu () dan menyekatnya sehingga kiraan semaphore menjadi lebih besar daripada satu.Sekiranya objek mutex sudah terkunci, proses meminta sumber menunggu dan dihentikan oleh sistem sehingga kunci dibebaskan.

Definisi Semaphore

Semaphore adalah alat penyegerakan proses. Semaphore biasanya merupakan pembolehubah integer S yang diasaskan kepada jumlah sumber yang hadir dalam sistem dan nilai semaphore hanya boleh diubah suai oleh dua fungsi menunggu () dan isyarat () selain dari permulaan.

Operasi menunggu () dan isyarat () mengubah nilai semaphore secara berasingan. Ini bermakna apabila proses mengubah nilai semaphore, tidak ada proses lain yang dapat mengubah nilai semaphore secara serentak. Semaphore dibezakan oleh sistem operasi dalam dua kategori Menghitung semaphores dan binary semaphore .

Dalam Menghitung Semaphore, nilai semaphore S diisytiharkan kepada bilangan sumber s dalam sistem. Apabila sesuatu proses mahu mengakses sumber ia melakukan operasi menunggu () pada semaphore dan menaksir nilai semaphore oleh satu. Apabila ia melepaskan sumber, ia melakukan operasi isyarat () pada semaphore dan menaikkan nilai semaphore oleh satu. Apabila kiraan semaphore pergi ke 0, ini bermakna semua sumber diduduki oleh proses. Sekiranya proses perlu menggunakan sumber apabila kiraan semaphore adalah 0, ia melaksanakan tunggu () dan akan disekat sehingga nilai semaphore menjadi lebih besar daripada 0.

Dalam Semaphore binary, nilai semaphore antara 0 dan 1 . Ia sama dengan kunci mutex, tetapi mutex adalah mekanisme pengunci manakala semaphore adalah mekanisme isyarat. Dalam semaphore binari, jika proses ingin mengakses sumber ia melakukan operasi menunggu () pada semaphore dan menaksir nilai semaphore dari 1 hingga 0. Apabila ia melepaskan sumber, ia melakukan operasi isyarat () pada semaphore dan increments nilainya kepada 1. Jika nilai semaphore adalah 0 dan proses ingin mengakses sumber ia melakukan operasi menunggu () dan menyekat dirinya sendiri sehingga proses semasa menggunakan sumber yang mengeluarkan sumber.

Definisi Mutex

Objek Pengecualian Mutual dipanggil sebagai Mutex. Dari istilah pengecualian bersama, kita dapat memahami bahawa hanya satu proses pada satu masa dapat mengakses sumber yang diberikan. Objek mutex membolehkan pelbagai benang program menggunakan sumber yang sama tetapi satu demi satu tidak serentak.

Apabila program bermula, ia meminta sistem untuk membuat objek mutex untuk sumber yang diberikan. Sistem ini mewujudkan objek mutex dengan nama atau ID unik. Setiap kali benang program mahu menggunakan sumber yang dikuasainya pada objek mutex, menggunakan sumber dan selepas penggunaan, ia melepaskan kunci pada objek mutex. Kemudian proses seterusnya dibenarkan untuk memperoleh kunci pada objek mutex.

Sementara itu, proses telah memperoleh kunci pada objek mutex tidak ada benang / proses lain yang dapat mengakses sumber tersebut. Sekiranya objek mutex sudah dikunci, proses yang ingin mendapatkan kunci pada objek mutex harus menunggu dan disusun oleh sistem sehingga objek mutex dibuka.

Perbezaan Utama antara Semaphore dan Mutex

  1. Semaphore adalah mekanisme isyarat seperti menunggu () dan isyarat () operasi yang dilakukan pada pembolehubah semaphore menunjukkan sama ada proses memperoleh sumber atau melepaskan sumber. Di sisi lain, mutex adalah mekanisme penguncian, untuk mendapatkan sumber, satu proses perlu mengunci objek mutex dan sementara melepaskan satu proses sumber harus membuka kunci mutex objek.
  2. Semaphore biasanya merupakan pemboleh ubah integer sedangkan, mutex adalah objek .
  3. Semaphore membolehkan pelbagai benang program untuk mengakses contoh sumber yang terbatas . Di sisi lain, Mutex membolehkan beberapa benang program untuk mengakses sumber tunggal yang dikongsi tetapi satu demi satu.
  4. Nilai pembolehubah semaphor boleh diubahsuai oleh sebarang proses yang memperoleh atau mengeluarkan sumber dengan menjalankan operasi menunggu () dan isyarat (). Di sisi lain, kunci yang diperolehi pada objek mutex boleh dibebaskan hanya dengan proses yang telah memperoleh kunci pada objek mutex.
  5. Semaphore adalah daripada dua jenis mengira semaphore dan binary semafore yang agak sama dengan mutex.
  6. Nilai pembolehubah semaphore diubahsuai oleh menunggu () dan isyarat () operasi selain daripada permulaan. Walau bagaimanapun, objek bisu dikunci atau dikunci oleh proses memperoleh atau melepaskan sumber.
  7. Jika semua sumber diperolehi oleh proses itu, dan tiada sumber yang bebas maka proses yang ingin memperoleh sumber melakukan menunggu () operasi pada pembolehubah semaphore dan blok sendiri hingga count of semaphore menjadi lebih besar dari 0. Tetapi jika objek mutex sudah dikunci kemudian proses yang ingin mendapatkan sumber menunggu dan mendapatkan beratur oleh sistem sehingga sumber dibebaskan dan objek mutex akan dibuka.

Kesimpulan:

Semaphore adalah pilihan yang lebih baik sekiranya terdapat banyak contoh sumber yang ada. Dalam kes mutex sumber bersama tunggal adalah pilihan yang lebih baik.

Top