Apa itu Semaphore? Jenis Perduaan, Membilang dengan Contoh

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 Sistem Operasi (OS) ini, anda akan belajar:

  • Ciri-ciri Semaphore
  • Apa itu Semaphore?
  • Jenis Semaphores
  • Contoh Semaphore
  • Tunggu dan Operasi Isyarat di Semaphores
  • Mengira Semaphore vs Semaphore Binari
  • Perbezaan antara Semaphore vs Mutex
  • Kelebihan Semaphores
  • Kekurangan semaphores

Ciri-ciri Semaphore

Berikut adalah ciri semaphore:

  • Ini adalah mekanisme yang dapat digunakan untuk memberikan penyegerakan tugas.
  • Ini adalah mekanisme penyegerakan tahap rendah.
  • Semaphore akan sentiasa mempunyai nilai integer bukan negatif.
  • Semaphore dapat dilaksanakan dengan menggunakan operasi ujian dan gangguan, yang harus dilaksanakan menggunakan deskriptor file.

Jenis Semaphores

Dua jenis semaphore yang biasa adalah

  • Membilang semaphores
  • Semaphore perduaan.

Membilang Semaphores

Semaphore jenis ini menggunakan kiraan yang membantu tugas diperoleh atau dilepaskan berkali-kali. Sekiranya kiraan awal = 0, semaphore pengiraan harus dibuat dalam keadaan tidak tersedia.

Walau bagaimanapun, jika kiraannya> 0, semaphore dibuat dalam keadaan yang tersedia, dan jumlah token yang dimilikinya sama dengan kiraannya.

Semaphores Perduaan

Semaphore binari hampir sama dengan penghitungan semaphore, tetapi nilainya terbatas pada 0 dan 1. Dalam semaphore jenis ini, operasi tunggu hanya berfungsi jika semaphore = 1, dan operasi isyarat berjaya apabila semaphore = 0. Sangat mudah untuk laksanakan daripada mengira semaphores.

Contoh Semaphore

Program yang diberikan di bawah ini adalah implementasi langkah demi langkah, yang melibatkan penggunaan dan pengisytiharan semaphore.

Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;

Tunggu dan Operasi Isyarat di Semaphores

Kedua-dua operasi ini digunakan untuk melaksanakan penyegerakan proses. Matlamat operasi semaphore ini adalah untuk mendapatkan pengecualian bersama.

Tunggu Operasi

Jenis operasi semaphore ini membantu anda mengawal kemasukan tugas ke bahagian kritikal. Walau bagaimanapun, Sekiranya nilai penantian positif, maka nilai penantian penantian X dikurangkan. Sekiranya nilai negatif atau sifar, tidak ada operasi yang dijalankan. Ia juga dipanggil operasi P (S).

Setelah nilai semaphore diturunkan, yang menjadi negatif, perintah ditahan sehingga syarat yang diperlukan dipenuhi.

Copy CodeP(S){while (S<=0);S--;}

Operasi isyarat

Jenis operasi Semaphore ini digunakan untuk mengawal keluarnya tugas dari bahagian kritikal. Ini membantu meningkatkan nilai argumen sebanyak 1, yang dilambangkan sebagai V (S).

Copy CodeP(S){while (S>=0);S++;}

Mengira Semaphore vs Semaphore Binari

Berikut adalah beberapa perbezaan utama antara pengiraan dan semaphore binari:

Mengira Semaphore Semaphore Perduaan
Tiada pengecualian bersama Pengecualian bersama
Sebarang nilai integer Nilai hanya 0 dan 1
Lebih daripada satu slot Hanya satu slot
Sediakan satu set Proses Ia mempunyai mekanisme pengecualian bersama.

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 dan 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.

Kelebihan Semaphores

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.

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 rumit, 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.

Ringkasan:

  • Semaphore ditakrifkan sebagai pemboleh ubah yang tidak negatif dan dikongsi antara utas.
  • Ini adalah mekanisme yang dapat digunakan untuk memberikan penyegerakan tugas.
  • Menghitung semaphore menggunakan kiraan yang membantu tugas diperoleh atau dilepaskan berkali-kali.
  • Semafor binari hampir sama dengan mengira semaphores, tetapi nilainya terhad kepada 0 dan 1.
  • Tunggu operasi membantu anda mengawal kemasukan tugas ke bahagian kritikal
  • Operasi semaphore isyarat digunakan untuk mengawal keluarnya tugas dari bahagian kritikal
  • Menghitung Semaphore tidak mempunyai pengecualian bersama sedangkan Semaphore Binari mempunyai pengecualian Saling
  • Semaphore bermaksud mekanisme isyarat manakala Mutex adalah mekanisme penguncian
  • Semaphore membolehkan lebih daripada satu utas memasuki bahagian kritikal
  • Salah satu had terbesar semaphore adalah penyongsangan keutamaan.