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ā apmācībā jūs uzzināsiet:
- Kas ir Mutex?
- Semafora lietošana
- Mutex lietošana
- Atšķirība starp semaforu un Mutex
- Bieži sastopami maldīgi priekšstati par muteksu un semaforu
- Semafora priekšrocības
- Mutex priekšrocības
- Semaforu trūkums
- Mutex trūkumi
Kas ir Mutex?
Pilna Mutex forma ir savstarpējās izslēgšanas objekts. Tas ir īpašs bināro semaforu veids, ko izmanto, lai kontrolētu piekļuvi kopīgotajam resursam. Tas ietver prioritāru mantošanas mehānismu, lai izvairītos no paplašinātām prioritātes inversijas problēmām. Tas ļauj pašreizējos augstākas prioritātes uzdevumus pēc iespējas īsākā laikā turēt bloķētā stāvoklī. Tomēr prioritārā mantošana neizlabo prioritātes maiņu, bet tikai samazina tās ietekmi.
GALVENĀS ATŠĶIRĪBAS
- Mutex ir bloķēšanas mehānisms, savukārt semafors ir signalizācijas mehānisms
- Mutex ir tikai objekts, bet Semafors ir vesels skaitlis
- Mutex nav apakštipa, turpretim semaforam ir divi veidi, kas skaitot semaforu un bināro semaforu.
- Semafors atbalsta gaidīšanas un signāla darbību pārveidošanu, savukārt Mutex modificē tikai process, kas var pieprasīt vai atbrīvot resursu.
- Semaforu vērtība tiek modificēta, izmantojot gaidīšanas () un signāla () operācijas, savukārt Mutex darbības ir bloķētas vai atbloķētas.
Semafora lietošana
Viena bufera gadījumā mēs varam atdalīt 4 KB buferi četrās 1 KB buferās. Semaforu var saistīt ar šiem četriem buferiem. Tas ļauj lietotājiem un ražotājiem vienlaikus strādāt ar dažādiem buferiem.
Mutex lietošana
Mutex nodrošina savstarpēju izslēgšanu, kas var būt gan ražotājs, gan patērētājs, kam var būt atslēga (mutekss) un turpināt darbu. Kamēr ražotājs aizpilda buferi, lietotājam jāgaida un otrādi. Programmā Mutex lock visu laiku tikai viens pavediens var strādāt ar visu buferi.
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āmā un binārā semafora skaitīšana. | 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. |
Kopīgi fakti par muteksu un semaforu
Šeit ir daži izplatīti fakti par Mutex un Semaforu:
- Tikai viens uzdevums var iegūt muteksu. Tātad, ar muteksu ir saistītas īpašumtiesības, un tikai īpašnieks var atbrīvot muteksu.
- Mutex un semafora izmantošanas iemesli ir atšķirīgi, varbūt to līdzības dēļ mutex tiktu dēvēts par bināro semaforu.
- Viens ļoti pazīstams nepareizs uzskats ir tāds, ka mutēzes un semaforas ir gandrīz vienādas, ar vienīgo atšķirību ir tā, ka mutekss spēj skaitīt līdz 1, bet semafors - no 0 līdz N.
- Starp bināro semaforu un muteksu vienmēr ir nenoteiktība. Jūs varat dzirdēt, ka mutekss ir binārā semafora, kas nav pareizi.
Semafora 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.
Mutex priekšrocības
Šeit ir svarīgi Mutex plusi / ieguvumi
- Mutexes ir tikai vienkāršas slēdzenes, kas iegūtas pirms ieiešanas tās kritiskajā sadaļā un pēc tam tās atbrīvošanas.
- Tā kā tajā brīdī kritiskajā sadaļā atrodas tikai viens pavediens, sacensību apstākļu nav, un dati vienmēr paliek konsekventi.
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 metode, tāpēc pastāv iespējas nesasniegt savstarpēju izslēgšanu.
- 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.
Mutex trūkumi
Šeit ir Mutex trūkumi / trūkumi
- Ja pavediens iegūst slēdzeni un dodas gulēt vai tas tiek novērsts, otrais pavediens, iespējams, nespēj virzīties uz priekšu. Tas var izraisīt badu.
- To nevar bloķēt vai atbloķēt no cita konteksta, nekā tas, kas to ieguvis.
- Vienlaikus kritiskajā sadaļā drīkst atļaut tikai vienu pavedienu.
- Parastā ieviešana var izraisīt aizņemtu gaidīšanas stāvokli, kas tērē procesora laiku.