Kas ir semafors?
Semafors ir vienkārši mainīgs lielums, kas nav negatīvs un tiek dalīts starp pavedieniem. Semafors ir signalizācijas mehānisms, un pavedienu, kas gaida uz semaforu, var signalizēt cits pavediens. Procesa sinhronizēšanai tiek izmantotas divas atomu darbības: 1) gaidīšana un 2) signāls.
Semafors vai nu atļauj, vai arī neļauj piekļūt resursam, kas ir atkarīgs no tā, kā tas ir izveidots.
Šajā operētājsistēmas (OS) apmācībā jūs uzzināsiet:
- Raksturīgs semaforam
- Kas ir semafors?
- Semaforu veidi
- Semaforas piemērs
- Gaidīšanas un signāla darbības semaforās
- Semafora skaitīšana pret bināro semaforu
- Atšķirība starp semaforu un Mutex
- Semaforu priekšrocības
- Semaforu trūkums
Raksturīgs semaforam
Šeit raksturīgi semafori:
- Tas ir mehānisms, ko var izmantot, lai nodrošinātu uzdevumu sinhronizāciju.
- Tas ir zema līmeņa sinhronizācijas mehānisms.
- Semafors vienmēr satur veselu skaitli, kas nav negatīvs.
- Semaforu var realizēt, izmantojot testa operācijas un pārtraukumus, kas jāizpilda, izmantojot failu aprakstus.
Semaforu veidi
Divi izplatītie semaforu veidi ir
- Semaforu skaitīšana
- Binārās semaforas.
Semaforu skaitīšana
Šāda veida semafori izmanto skaitīšanu, kas palīdz uzdevumu iegūt vai atbrīvot daudzas reizes. Ja sākotnējais skaitījums = 0, skaitīšanas semafors jāizveido nepieejamā stāvoklī.
Tomēr, ja skaitlis ir> 0, semafors tiek izveidots pieejamā stāvoklī, un tam piederošo žetonu skaits ir vienāds ar tā skaitu.
Binārās semaforas
Binārās semaforas ir diezgan līdzīgas semaforu skaitīšanai, taču to vērtība ir ierobežota ar 0 un 1. Šāda veida semaforu gaidīšanas operācija darbojas tikai tad, ja semafora = 1, un signāla darbība izdodas, kad semafora = 0. To ir viegli nevis skaitīt semaforas.
Semaforas piemērs
Zemāk dotā programma ir soli pa solim ieviešana, kas ietver semafora izmantošanu un deklarēšanu.
Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;
Gaidīšanas un signāla darbības semaforās
Abas šīs darbības tiek izmantotas, lai ieviestu procesu sinhronizāciju. Šīs semafora operācijas mērķis ir panākt savstarpēju atstumtību.
Gaidiet darbību
Šāda veida semaforu operācijas 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ā neviena darbība netiek veikta. To sauc arī par P (S) darbību.
Pēc tam, kad samazinās semafora vērtība, kas kļūst negatīva, komanda tiek turēta līdz vajadzīgo nosacījumu izpildei.
Copy CodeP(S){while (S<=0);S--;}
Signāla darbība
Šāda veida semafora operācijas tiek izmantotas, lai kontrolētu uzdevuma iziešanu no kritiskās sadaļas. Tas palīdz palielināt argumenta vērtību par 1, kas tiek apzīmēta kā V (S).
Copy CodeP(S){while (S>=0);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ārā semafora |
Nav savstarpējas izslēgšanas | Savstarpēja izslēgšana |
Jebkura vesela skaitļa vērtība | Tikai vērtība 0 un 1 |
Vairāk nekā viens slots | Tikai viena slota |
Nodrošiniet procesu kopumu | Tam ir savstarpējs izslēgšanas mehānisms. |
Atšķirība starp semaforu un Mutex
Parametri | Semafors | Mutex |
Mehānisms | Tas ir signalizācijas mehānisma veids. | Tas ir bloķēšanas mehānisms. |
Datu tips | Semafors ir vesels skaitlis. | Mutex ir tikai objekts. |
Pārveidošana | Gaidīšanas un signāla darbības var modificēt semaforu. | To modificē tikai process, kas var pieprasīt vai atbrīvot resursu. |
Resursu pārvaldība | Ja neviens resurss nav brīvs, procesam ir nepieciešams resurss, kuram jāveic gaidīšanas operācija. Būtu jāgaida, līdz semaforu skaits būs lielāks par 0. | Ja tas ir bloķēts, process ir jāgaida. Process ir jātur rindā. Tam jābūt pieejamam tikai tad, kad mutē ir atbloķēts. |
Vītne | Jums var būt vairāki programmas pavedieni. | Mutex var būt vairākas programmas pavedieni, bet ne vienlaicīgi. |
Īpašumtiesības | Vērtību var mainīt ar jebkuru procesu, atbrīvojot vai iegūstot resursu. | Objekta bloķēšanu atbrīvo tikai process, kas ir ieguvis bloķēšanu uz tā. |
Veidi | Semaforu veidi ir skaitīšanas un bināro semaforu skaitīšana un | Mutex nav apakštipu. |
Darbība | Semafora vērtība tiek modificēta, izmantojot gaidīšanas () un signāla () darbību. | Mutex objekts ir bloķēts vai atbloķēts. |
Resursu noslogojums | Tas tiek aizņemts, ja tiek izmantoti visi resursi un process, kas pieprasa resursu, veic wait () darbību un bloķē sevi, līdz semaforu skaits kļūst par> 1. | Gadījumā, ja objekts jau ir bloķēts, process, kas pieprasa resursus, gaida, un sistēma to ierindo pirms bloķēšanas atlaišanas. |
Semaforu priekšrocības
Šeit ir plusi / ieguvumi, lietojot semaforu:
- Tas ļauj vairākiem pavedieniem piekļūt kritiskajai sadaļai
- Semaforas nav atkarīgas no mašīnas.
- Semaforas tiek ieviestas no mikrodatora kodola neatkarīgi no mašīnas.
- Tie neļauj vairākiem procesiem iekļūt kritiskajā sadaļā.
- Tā kā semaforā gaidīšana ir aizņemta, nekad netiek tērēts procesa laiks un resursi.
- Tie ir neatkarīgi no mašīnām, kas būtu jādarbina mikrokoda kodā no mašīnas.
- Tie ļauj elastīgi pārvaldīt resursus.
Semaforu trūkums
Šeit ir mīnusi / semafora trūkums
- Viens no lielākajiem semafora ierobežojumiem ir prioritātes inversija.
- Operētājsistēmai ir jāseko visiem gaidīšanas zvaniem un jāsniedz signāls semaforam.
- To lietošana nekad netiek ieviesta, bet tas notiek tikai pēc vienošanās.
- Lai izvairītos no strupceļiem semaforā, operācijas Wait and Signal ir jāveic pareizā secībā.
- Semaforu programmēšana ir sarežģīta, tāpēc pastāv iespējas nesasniegt savstarpēju atstumtību.
- Tā nav arī praktiska metode liela mēroga lietošanai, jo to izmantošana noved pie modularitātes zaudēšanas.
- Semafori ir vairāk pakļauti programmētāja kļūdām.
- Programmētāja kļūdas dēļ tas var izraisīt strupceļu vai savstarpējas izslēgšanas pārkāpumu.
Kopsavilkums:
- Semafors tiek definēts kā mainīgais, 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īšana izmanto skaitīšanu, kas palīdz uzdevumu iegūt vai atbrīvot daudzas reizes.
- Binārās semaforas ir diezgan līdzīgas semaforu skaitīšanai, taču to vērtība ir ierobežota ar 0 un 1.
- Gaidīšanas operācija palīdz kontrolēt uzdevuma ievadīšanu kritiskajā sadaļā
- Signāla semaforas darbību izmanto, lai kontrolētu uzdevuma iziešanu no kritiskās sadaļas
- Semafora skaitīšanai nav savstarpējas izslēgšanas, savukārt binārajai semaforei ir savstarpēja izslēgšana
- Semafors nozīmē signalizācijas mehānismu, savukārt Mutex ir bloķēšanas mehānisms
- Semafors ļauj vairākiem pavedieniem piekļūt kritiskajai sadaļai
- Viens no lielākajiem semafora ierobežojumiem ir prioritātes inversija.