Atšķirība Starp Semaforu Un Monitoru

Atšķirība Starp Semaforu Un Monitoru
Atšķirība Starp Semaforu Un Monitoru

Video: Atšķirība Starp Semaforu Un Monitoru

Video: Atšķirība Starp Semaforu Un Monitoru
Video: Калибровка монитора от А до Я. Критерии качества калибровки. Алексей Шадрин 2024, Maijs
Anonim

Semafors vs monitors

Semafors ir datu struktūra, kas tiek izmantota, lai pārliecinātos, ka vairāki procesi paralēli programmēšanas vidēs vienlaikus nepiekļūst kopīgam resursam vai kritiskai sadaļai. Semaforas tiek izmantotas, lai izvairītos no nedzīvām slēdzenēm un sacensību apstākļiem. Monitors ir programmēšanas valodas konstrukcija, kas tiek izmantota arī, lai izvairītos no vairākiem procesiem, kas vienlaikus piekļūst kopējam resursam, tādējādi garantējot savstarpēju izslēgšanu. Lai sasniegtu šo uzdevumu, monitori izmanto nosacītus mainīgos.

Kas ir semafors?

Semafors ir datu struktūra, kas tiek izmantota, lai nodrošinātu kritisko sadaļu savstarpēju izslēgšanu. Semafori galvenokārt atbalsta divas operācijas, ko sauc par gaidīšanu (vēsturiski pazīstams kā P) un signālu (vēsturiski pazīstams kā V). Gaidīšanas operācija bloķē procesu, līdz tiek atvērta semafora un signāla darbība ļauj ievadīt citu procesu (pavedienu). Katra semafora ir saistīta ar gaidīšanas procesu rindu. Kad gaidīšanas operāciju izsauc pavediens, ja semafa ir atvērta, pavediens var turpināties. Ja semafora ir aizvērta, kad gaidīšanas operāciju izsauc pavediens, pavediens tiek bloķēts un tai jāgaida rindā. Signāla darbība atver semaforu un, ja rindā jau gaida pavediens, šim procesam ir atļauts turpināties un, ja rindā nav neviena pavediena, signāls tiek atcerēts nākamajiem pavedieniem. Ir divu veidu semaforas, ko sauc par mutex semaforām un skaitīšanas semaforām. Mutex semaforas ļauj vienreiz piekļūt resursam, un skaitīšanas semaforas ļauj vairākiem pavedieniem piekļūt resursam (kurā ir pieejamas vairākas vienības).

Kas ir monitors?

Monitors ir programmēšanas valodas konstrukcija, ko izmanto, lai kontrolētu piekļuvi koplietotajiem datiem. Monitori iekapsulē koplietojamo datu struktūras, procedūras (kas darbojas ar koplietojamām datu struktūrām) un sinhronizāciju starp vienlaicīgu procedūru izsaukumiem. Monitors pārliecinās, ka tā datiem nav nestrukturētas piekļuves, un garantē, ka protektori (kas piekļūst monitora datiem, izmantojot savas procedūras) mijiedarbojas likumīgi. Monitors garantē savstarpēju izslēgšanu, ļaujot tikai vienā pavedienā izpildīt jebkuru monitora procedūru noteiktā laikā. Ja kāds cits pavediens mēģina izsaukt metodi monitorā, kamēr pavediens jau izpilda procedūru monitorā, otrā procedūra tiek bloķēta, un tai jāgaida rindā. Ir divu veidu monitori ar nosaukumu Hoare monitori un Mesa monitori. Viņi galvenokārt atšķiras pēc plānošanas semantikas.

Kāda ir atšķirība starp semaforu un monitoru?

Pat ja gan semaforas, gan monitori tiek izmantoti, lai panāktu savstarpēju izslēgšanu paralēlās programmēšanas vidēs, tie atšķiras ar paņēmieniem, kas izmantoti šī uzdevuma sasniegšanai. Monitoros kods, kas tiek izmantots savstarpējas izslēgšanas panākšanai, atrodas vienā vietā un ir strukturētāks, savukārt semaforu kods tiek izplatīts kā gaidīšanas un signāla funkciju izsaukumi. Turklāt, ieviešot semaforas, ir ļoti viegli kļūdīties, savukārt, ieviešot monitorus, ir ļoti maz iespēju kļūdīties. Turklāt monitori izmanto nosacījumu mainīgos, bet semafori to nedara.

Ieteicams: