Kas ir Semafors? Binārie, skaitīšanas veidi ar piemēru

Kas ir Semafors?

Semafors ir vienkārši mainīgs, kas nav negatīvs un ir kopīgs starp pavedieniem. Semafors ir signalizācijas mehānisms, un pavedienu, kas gaida semaforā, var signalizēt ar citu pavedienu. Procesa sinhronizācijai tiek izmantotas divas atomu darbības: 1) gaidīšana un 2) signāls.

Semafors vai nu pieļauj, vai neļauj piekļūt resursam, kas ir atkarīgs no tā iestatīšanas.

Šajā operētājsistēmas (OS) apmācībā jūs uzzināsit:

Semaforam raksturīgs

Šeit ir raksturīgi semaforam:

  • Tas ir mehānisms, ko var izmantot, lai nodrošinātu uzdevumu sinhronizāciju.
  • Tas ir zema līmeņa sinhronizācijas mehānisms.
  • Semaforam vienmēr būs negatīvs vesels skaitlis.
  • Semaforu var ieviest, izmantojot testa darbības un pārtraukumus, kas jāizpilda, izmantojot failu aprakstus.

Semaforu veidi

Divi izplatītākie semaforu veidi ir

  • Semaforu skaitīšana
  • Binārie semafori.

Semaforu skaitīšana

Šāda veida semaforā tiek izmantots skaitlis, kas palīdz uzdevumu iegūt vai atbrīvot vairākas reizes. Ja sākotnējais skaitlis = 0, skaitīšanas semafors jāizveido nepieejamā stāvoklī.

Tomēr, ja skaits ir> 0, semafors tiek izveidots pieejamā stāvoklī, un žetonu skaits tam ir vienāds ar to skaitu.

Binārie semafori

Binārie semafori ir diezgan līdzīgi semaforu skaitīšanai, taču to vērtība ir ierobežota līdz 0 un 1. Šāda veida semafora gaidīšanas darbība darbojas tikai tad, ja semafors = 1, un signāla darbība izdodas, ja semafors = 0. Ir viegli īstenot, nekā skaitīt semaforus.

Semafora piemērs

Tālāk sniegtā programma ir pakāpeniska ieviešana, kas ietver semafora izmantošanu un deklarēšanu. | _+_ |

Gaidīšanas un signālu operācijas semaforos

Abas šīs darbības tiek izmantotas, lai īstenotu procesu sinhronizāciju. Šīs semafora operācijas mērķis ir panākt savstarpēju izslēgšanu.

Pagaidiet darbību

Šāda veida semafora darbība palīdz kontrolēt uzdevuma ievadīšanu kritiskajā sadaļā. Tomēr, ja gaidīšanas vērtība ir pozitīva, tad gaidīšanas argumenta X vērtība tiek samazināta. Negatīvas vai nulles vērtības gadījumā darbība netiek veikta. To sauc arī par P (S) darbību.

Pēc semafora vērtības samazināšanas, kas kļūst negatīva, komanda tiek turēta, līdz tiek izpildīti nepieciešamie nosacījumi. | _+_ |

Signāla darbība

Šāda veida semafora darbību izmanto, lai kontrolētu uzdevuma izeju no kritiskās sadaļas. Tas palīdz palielināt argumenta vērtību par 1, kas apzīmēts kā V (S). | _+_ |

Semafora skaitīšana pret bināro semaforu

Šeit ir dažas būtiskas atšķirības starp skaitīšanu un bināro semaforu:

Semafora skaitīšana Binārais semafors
Nav savstarpējas izslēgšanasSavstarpēja izslēgšana
Jebkura vesela skaitļa vērtībaVērtība ir tikai 0 un 1
Vairāk nekā viens slotsTikai viens slots
Nodrošiniet procesu kopumuTam ir savstarpējas izslēgšanas mehānisms.

Atšķirība starp Semaforu un Mutex

Parametri Semafors Mutex
MehānismsTas ir signalizācijas mehānisma veids.Tas ir bloķēšanas mehānisms.
Datu tipsSemafors ir vesels skaitlis.Mutex ir tikai objekts.
ModifikācijaGaidīšanas un signālu darbības var mainīt semaforu.To maina tikai process, kas var pieprasīt vai atbrīvot resursu.
Resursu vadībaJa neviens resurss nav brīvs, procesam ir nepieciešams resurss, kuram vajadzētu izpildīt gaidīšanas darbību. Tam jāgaida, līdz semafora skaits ir lielāks par 0.Ja tas ir bloķēts, process ir jāgaida. Process jāglabā rindā. Tam ir jāpiekļūst tikai tad, kad mutex ir atbloķēts.
VītneJums var būt vairāki programmas pavedieni.Mutex var būt vairāki programmas pavedieni, bet ne vienlaicīgi.
ĪpašumtiesībasVērtību var mainīt ar jebkuru procesu, atbrīvojot vai iegūstot resursu.Objektu bloķēšanu atbrīvo tikai process, kas ir ieguvis slēdzeni.
VeidiSemafora veidi ir skaitot semaforu un bināro semaforu unMutex nav apakštipu.
DarbībaSemafora vērtība tiek mainīta, izmantojot gaidīšanas () un signāla () darbību.Mutex objekts ir bloķēts vai atbloķēts.
Resursi AizņemšanaTas ir aizņemts, ja tiek izmantoti visi resursi un process, kas pieprasa resursu, veic gaidīšanas () darbību un bloķē sevi, līdz semaforu skaits kļūst> 1.Gadījumā, ja objekts jau ir bloķēts, resursu pieprasīšanas process gaida un sistēma ierindo rindā pirms bloķēšanas atbrīvošanas.

Semaforu priekšrocības

Šeit ir Semafora izmantošanas priekšrocības un priekšrocības:

  • Tas ļauj vairāk nekā vienam pavedienam piekļūt kritiskajai sadaļai
  • Semafors nav atkarīgs no mašīnas.
  • Semafori ir ieviesti mikrokodola no mašīnas neatkarīgajā kodā.
  • Tie neļauj vairākiem procesiem iekļūt kritiskajā sadaļā.
  • Tā kā semaforā gaidīšana ir aizņemta, nekad netiek izšķiests procesa laiks un resursi.
  • Tie nav atkarīgi no mašīnas, un tie jāpalaiž mikrokodola kodā, kas nav atkarīgs no mašīnas.
  • Tie ļauj elastīgi pārvaldīt resursus.

Semaforu trūkums

Šeit ir semafora mīnusi/trūkumi

  • Viens no lielākajiem semafora ierobežojumiem ir prioritātes inversija.
  • Operētājsistēmai ir jāseko visiem zvaniem, lai gaidītu un signalizētu par semaforu.
  • To izmantošana nekad netiek īstenota, bet tā notiek tikai pēc vienošanās.
  • Lai izvairītos no strupceļa semaforā, gaidīšanas un signāla darbības ir jāizpilda pareizā secībā.
  • Semafora programmēšana ir sarežģīta, tāpēc pastāv izredzes nepanākt savstarpēju atstumtību.
  • Tā nav arī praktiska metode plaša mēroga lietošanai, jo to izmantošana noved pie modularitātes zuduma.
  • Semafors ir vairāk pakļauts programmētāja kļūdām.
  • Tas var izraisīt strupceļu vai savstarpējas izslēgšanas pārkāpumu programmētāja kļūdas dēļ.

Kopsavilkums:

  • Semaforu definē kā mainīgu, kas nav negatīvs un ir kopīgs starp pavedieniem.
  • Tas ir mehānisms, ko var izmantot, lai nodrošinātu uzdevumu sinhronizāciju.
  • Semafora skaitīšanā tiek izmantots skaitlis, kas palīdz uzdevumu iegūt vai atbrīvot vairākas reizes.
  • Binārie semafori ir diezgan līdzīgi semaforu skaitīšanai, taču to vērtība ir ierobežota līdz 0 un 1.
  • Gaidīšanas darbība palīdz kontrolēt uzdevuma ievadīšanu kritiskajā sadaļā
  • Signāla semafora darbība tiek izmantota, lai kontrolētu uzdevuma izeju no kritiskās sadaļas
  • Semafora skaitīšanai nav savstarpējas izslēgšanas, turpretim binārajam semaforam ir savstarpēja izslēgšana
  • Semafors nozīmē signalizācijas mehānismu, turpretī Mutex ir bloķēšanas mehānisms
  • Semafors ļauj vairāk nekā vienam pavedienam piekļūt kritiskajai sadaļai
  • Viens no lielākajiem semafora ierobežojumiem ir prioritātes inversija.