Logo ms.removalsclassifieds.com

Perbezaan Antara Mutex dan Semaphore (Dengan Jadual)

Isi kandungan:

Anonim

Menguruskan integriti maklumat yang dikongsi sangat bergantung pada penyegerakan proses. Untuk menangani masalah bahagian kritikal, kedua-dua penyelesaian perisian dan perkakasan tersedia. Penyelesaian perkakasan untuk masalah bahagian kritikal, sebaliknya, amat sukar untuk dilaksanakan. Mari kita periksa dan bezakan Mutex dan Semaphore, dua penyelesaian aplikasi untuk menangani masalah bahagian kritikal.

Mutex vs Semaphore

Perbezaan antara mutex dan Semaphore ialah semaphore ialah proses isyarat, yang bermaksud proses menggunakan wait() dan signal() untuk menandakan sama ada mereka memperoleh atau akan melepaskan sumber, manakala mutex ialah kaedah yang boleh dikunci, yang bermaksud bahawa jika operasi ingin mendapatkan sumber, ia mesti memperoleh kunci pada objek mutex terlebih dahulu.

Mutex adalah singkatan dari Mutual Exclusion Object. Ia adalah sejenis semafor binari yang digunakan untuk menyekat akses kepada sumber yang dikongsi. Untuk mengelakkan kebimbangan penyongsangan keutamaan yang berpanjangan, ia menampilkan mekanisme pewarisan keutamaan. Ia membenarkan kerja keutamaan yang lebih tinggi sedia ada disekat untuk tempoh masa yang paling singkat. Warisan keutamaan, sebaliknya, tidak menetapkan penyongsangan keutamaan; sebaliknya, ia mengurangkan kesannya.

Semaphore ialah pembolehubah bukan negatif yang dikekalkan antara benang. Semafor ialah mekanisme isyarat, dan benang lain boleh memberi isyarat kepada benang yang sedang menunggu semafor. Untuk penyegerakan proses, ia menggunakan dua prosedur atom: () tunggu dan () isyarat. Bergantung pada cara ia disediakan, semaphore sama ada mendayakan atau menghalang akses kepada sumber.

Jadual Perbandingan Antara Mutex dan Semaphore

Parameter Perbandingan

Mutex

Semafor

Mekanisme

Ia adalah sistem penguncian. Ia adalah sejenis sistem isyarat.
tujuan

Benang diwakili oleh mutex. Proses diwakili oleh semaphore.
alam semula jadi

Mutex biasanya atom dan tunggal. Semaphore bersifat atom, tetapi tidak tunggal.
Jenis data

Mutex tidak lebih daripada sekeping perisian. Semaphore ialah pembolehubah dengan nilai integer.
Jenis

Mutex tidak mempunyai sebarang subjenis. Membilang dan semafor binari adalah dua jenis semafor.
Pengubahsuaian

Hanya proses yang boleh meminta atau mengeluarkan sumber boleh mengubah suainya. Semaphore boleh diubah suai menggunakan fungsi tunggu dan isyarat.

Apa itu Mutex?

Pengecualian Bersama ialah istilah yang digunakan untuk menggambarkan situasi Mutex ialah nama pendek untuk objek tersebut. Kita boleh menyimpulkan daripada perkataan pengecualian bersama bahawa hanya satu program pada satu-satu masa mempunyai akses kepada sumber tertentu. Objek mutex membenarkan banyak utas aplikasi mengakses sumber yang sama pada masa yang sama, hanya satu demi satu.

Setiap kali program meminta sistem untuk sumber, sistem mencipta objek mutex dengan identiti atau ID unik. Akibatnya, pada bila-bila masa program ingin menggunakan sumber itu, ia memerlukan kunci pada objek. Program ini kemudian menggunakan sumber sebelum akhirnya melepaskan objek mutex. Objek mutex kemudiannya boleh dibuat dan digunakan oleh program lain dengan cara yang sama.

Dengan mengunci objek, sumber khusus itu diperuntukkan kepada proses khusus itu dan tiada proses lain boleh menggunakannya. Akibatnya, tiada program lain dibenarkan menggunakan sumber sistem di kawasan penting. Objek mutex boleh digunakan untuk mencapai penyegerakan proses dengan cara ini.

Mutex membenarkan pengecualian bersama; sama ada sebagai pengeluar atau pengguna boleh memiliki kunci (mutex) dan terus bekerja. Pengguna mesti menunggu selagi penimbal pengeluar diisi, dan begitu juga sebaliknya.

Apa itu Semaphore?

Semaphore ialah pembolehubah integer S yang digunakan untuk penyegerakan proses dan dimulakan dengan bilangan sumber dalam sistem. Untuk mengubah suai nilai S, ia menggunakan dua fungsi utama: tunggu() dan isyarat (). Kedua-dua fungsi ini digunakan untuk menukar nilai semaphore, tetapi ia hanya membolehkan satu atur cara untuk melakukannya pada satu masa, oleh itu tiada dua kaedah boleh mengubah nilai semaphore pada masa yang sama. Membilang semafor dan semafor binari adalah dua jenis semafor.

Pembolehubah semaphore mula-mula dimulakan dengan bilangan sumber yang tersedia semasa mengira semaphore. Kaedah wait() kemudiannya dilaksanakan pada bila-bila masa proses memerlukan sumber, dan nilai pembolehubah semaphore dikurangkan dengan satu. Proses kemudian menggunakan sumber, selepas itu ia memanggil kaedah isyarat(), yang meningkatkan nilai pembolehubah semaphore sebanyak satu. Apabila nilai pembolehubah semaphore mencapai 0, iaitu, apabila program telah menggunakan semua sumber dan tidak ada yang tinggal untuk digunakan, Kemudian, jika proses lain perlu menggunakan sumber, ia perlu menunggu masanya. Kami mewujudkan penyegerakan proses dengan cara ini.

Dalam Binary Semaphores, nilai pembolehubah semaphore adalah sama ada 0 atau 1. Apabila proses ingin menggunakan sumber, kaedah tunggu() digunakan, dan nilai semaphore diselaraskan kepada 0 daripada 1. Proses itu kemudiannya membuat penggunaan sumber, dan selepas ia selesai, kaedah isyarat() dipanggil, dan nilai pembolehubah semaphore ditetapkan kepada 1. Jika nilai pembolehubah semaphore ialah 0 pada titik masa tertentu, dan program lain mahu untuk mengakses sumber yang sama, ia mesti menunggu program sebelumnya untuk membebaskan rekursus. Penyegerakan proses boleh dilakukan dengan cara ini. Ia setanding dengan mutex, tetapi ia tidak mengunci apa-apa.

Perbezaan Utama Antara Mutex dan Semaphore

Kesimpulan

Jika terdapat beberapa contoh sumber yang tersedia, Semaphore ialah alternatif yang lebih baik. Mutex ialah pilihan yang lebih baik apabila terdapat hanya satu sumber yang dikongsi. Semaphore membolehkan banyak utas untuk mengakses rantau yang penting. Mesin tidak menjejaskan semaphore. Semaphore dikendalikan dalam kod bebas mesin mikrokernel. Tidak pernah ada pembaziran masa atau sumber proses kerana sentiasa sibuk menunggu di semaphore. Mereka juga membenarkan fleksibiliti pengurusan sumber manakala Mutexes tidak lebih daripada kunci mudah yang mesti diperoleh sebelum mencapai kawasan penting dan kemudian dilepaskan tetapi Dalam Mutex kaedah standard mungkin mengakibatkan keadaan menunggu yang sibuk, membuang masa CPU. Selain itu, Ia tidak boleh dikunci atau dibuka kunci daripada konteks selain konteks di mana ia diperoleh.

Rujukan

Perbezaan Antara Mutex dan Semaphore (Dengan Jadual)