Mutex vs Semaphore: Apa Perbezaannya?

Isi kandungan:

Anonim

Apa itu Semaphore?

Semaphore hanyalah pemboleh ubah yang tidak negatif dan dikongsi antara utas. Semaphore adalah mekanisme isyarat, dan utas yang menunggu di semaphore dapat ditandakan oleh utas lain. Ia menggunakan dua operasi atom, 1) menunggu, dan 2) isyarat untuk penyegerakan proses.

Semaphore sama ada membenarkan atau melarang akses ke sumber, yang bergantung pada cara penyediaannya.

Dalam tutorial ini, anda akan belajar:

  • Apa itu Mutex?
  • Penggunaan Semaphore
  • Penggunaan Mutex
  • Perbezaan antara Semaphore vs Mutex
  • Kesalahpahaman Umum mengenai Mutex dan Semaphore
  • Kelebihan Semaphore
  • Kelebihan Mutex
  • Kekurangan Semaphores
  • Kekurangan Mutex

Apa itu Mutex?

Bentuk penuh Mutex adalah Objek Pengecualian Bersama. Ini adalah jenis semaphore binari khas yang digunakan untuk mengawal akses ke sumber yang dikongsi. Ini termasuk mekanisme pewarisan keutamaan untuk mengelakkan masalah penyimpangan keutamaan yang diperpanjang. Ia membolehkan tugas-tugas keutamaan yang lebih tinggi sekarang disimpan dalam keadaan tersekat untuk waktu sesingkat mungkin. Walau bagaimanapun, pewarisan keutamaan tidak membetulkan pembalikan keutamaan tetapi hanya mengurangkan kesannya.

PERBEZAAN UTAMA

  • Mutex adalah mekanisme penguncian sedangkan Semaphore adalah mekanisme isyarat
  • Mutex hanyalah objek sementara Semaphore adalah bilangan bulat
  • Mutex tidak mempunyai subtipe sedangkan Semaphore mempunyai dua jenis, iaitu menghitung semaphore dan semaphore binari.
  • Semaphore menyokong pengubahsuaian operasi tunggu dan isyarat, sedangkan Mutex hanya diubah oleh proses yang mungkin meminta atau melepaskan sumber.
  • Nilai Semaphore diubah menggunakan operasi tunggu () dan isyarat (), sebaliknya, operasi Mutex dikunci atau dibuka.

Penggunaan Semaphore

Sekiranya terdapat buffer tunggal, kita dapat memisahkan buffer 4 KB menjadi empat buffer 1 KB. Semaphore boleh dikaitkan dengan keempat penyangga ini. Ini membolehkan pengguna dan pengeluar mengerjakan penyangga yang berbeza pada masa yang sama.

Penggunaan Mutex

Mutex memberikan pengecualian bersama, yang boleh menjadi pengeluar atau pengguna yang dapat memiliki kunci (mutex) dan meneruskan pekerjaan mereka. Selagi pengeluar mengisi buffer, pengguna perlu menunggu, dan sebaliknya. Dalam kunci Mutex, sepanjang masa, hanya satu utas yang dapat berfungsi dengan keseluruhan penyangga.

Perbezaan antara Semaphore vs Mutex

Parameter Semaphore Mutex
Mekanisme Ini adalah sejenis mekanisme isyarat. Ini adalah mekanisme penguncian.
Jenis data Semaphore adalah pemboleh ubah integer. Mutex hanyalah objek.
Pengubahsuaian Operasi tunggu dan isyarat boleh mengubah semaphore. Ia diubah hanya dengan proses yang mungkin meminta atau melepaskan sumber.
Pengurusan sumber Sekiranya tidak ada sumber yang percuma, maka proses tersebut memerlukan sumber yang harus menjalankan operasi tunggu. Ia mesti menunggu sehingga jumlah semaphore lebih besar daripada 0. Sekiranya terkunci, prosesnya mesti menunggu. Proses harus disimpan dalam barisan. Ini hanya perlu diakses apabila mutex dibuka.
Benang Anda boleh mempunyai banyak utas program. Anda boleh mempunyai banyak utas program dalam mutex tetapi tidak serentak.
Pemilikan Nilai boleh diubah dengan proses melepaskan atau mendapatkan sumber. Kunci objek dilepaskan hanya dengan proses, yang telah memperoleh kunci di atasnya.
Jenis-Jenis Jenis Semaphore adalah mengira semaphore dan semaphore binari. Mutex tidak mempunyai subtipe.
Operasi Nilai semaphore diubah menggunakan operasi tunggu () dan isyarat (). Objek Mutex dikunci atau tidak dikunci.
Penghunian Sumber Ia digunakan jika semua sumber digunakan dan proses meminta sumber melakukan operasi tunggu () dan menyekat dirinya sehingga jumlah semafore menjadi> 1. Sekiranya objek sudah terkunci, proses meminta sumber menunggu dan diatur oleh sistem sebelum kunci dilepaskan.

Fakta Umum mengenai Mutex dan Semaphore

Berikut adalah beberapa fakta umum mengenai Mutex dan Semaphore:

  • Hanya satu tugas yang dapat memperoleh mutex. Jadi, ada hak milik yang dikaitkan dengan mutex, dan hanya pemilik yang dapat melepaskan mutex.
  • Sebab untuk menggunakan mutex dan semaphore berbeza mungkin kerana kesamaan dalam pelaksanaannya, mutex akan disebut sebagai semaphore binari.
  • Salah tanggapan yang sangat terkenal adalah bahawa Mutexes dan Semaphores hampir sama, dengan satu-satunya perbezaan adalah bahawa Mutex mampu mengira hingga 1, sementara Semaphores dapat membilang dari 0 hingga N.
  • Selalu ada ketidakpastian antara semaphore binari dan mutex. Anda mungkin mendengar bahawa mutex adalah semaphore binari, yang tidak betul.

Kelebihan Semaphore

Berikut adalah kebaikan / faedah menggunakan Semaphore:

  • Ia membolehkan lebih daripada satu utas memasuki bahagian kritikal
  • Semaphores tidak bergantung kepada mesin.
  • Semaphores dilaksanakan dalam kod mikrokernel bebas mesin.
  • Mereka tidak membenarkan beberapa proses memasuki bahagian kritikal.
  • Oleh kerana sibuk menunggu di semaphore, tidak ada pembaziran masa dan sumber proses.
  • Mereka tidak bergantung pada mesin, yang harus dijalankan dalam kod mikrokernel bebas mesin.
  • Mereka membenarkan pengurusan sumber yang fleksibel.

Kelebihan Mutex

Berikut adalah kebaikan / faedah penting Mutex

  • Mutexes hanyalah kunci mudah yang diperoleh sebelum memasuki bahagian kritikalnya dan kemudian melepaskannya.
  • Oleh kerana hanya satu utas yang berada di bahagian kritikal pada waktu tertentu, tidak ada syarat perlumbaan, dan data selalu konsisten.

Kekurangan Semaphores

Berikut, terdapat kekurangan / kekurangan semaphore

  • Salah satu had terbesar semaphore adalah penyongsangan keutamaan.
  • Sistem operasi harus mengawasi semua panggilan untuk menunggu dan memberi isyarat semaphore.
  • Penggunaannya tidak pernah ditegakkan, tetapi hanya berdasarkan konvensi.
  • Untuk mengelakkan kebuntuan di semaphore, operasi Tunggu dan Isyarat perlu dilaksanakan dengan urutan yang betul.
  • Pengaturcaraan Semaphore adalah kaedah yang kompleks, jadi ada kemungkinan tidak mencapai pengecualian bersama.
  • Ini juga bukan kaedah praktikal untuk penggunaan skala besar kerana penggunaannya menyebabkan hilangnya modulariti.
  • Semaphore lebih terdedah kepada kesalahan pengaturcara.
  • Ini boleh menyebabkan kebuntuan atau pelanggaran pengecualian bersama kerana kesalahan pengaturcara.

Kekurangan Mutex

Berikut, terdapat kekurangan / kekurangan Mutex

  • Sekiranya benang memperoleh kunci dan tidur atau ia dipratentukan, benang yang lain mungkin tidak dapat bergerak ke hadapan. Ini boleh menyebabkan kebuluran.
  • Ia tidak dapat dikunci atau dibuka dari konteks yang berbeza daripada yang memperolehnya.
  • Hanya satu utas yang dibenarkan dalam bahagian kritikal pada satu masa.
  • Pelaksanaan normal boleh menyebabkan keadaan menunggu yang sibuk, yang membuang masa CPU.