Semafori ja Mutexi erinevus

Semafori ja Mutexi erinevus
Semafori ja Mutexi erinevus

Video: Semafori ja Mutexi erinevus

Video: Semafori ja Mutexi erinevus
Video: ЛЕОПАРД НАПАДАЕТ НА ГИЕНУ? 2024, Juuli
Anonim

Semafor vs Mutex

Semafor on andmestruktuur, mida kasutatakse selleks, et paralleelsetes programmeerimiskeskkondades ei pääseks mitu protsessi samaaegselt juurde ühisele ressursile või kriitilisele jaotisele. Semafoore kasutatakse surnud lukkude ja võistlustingimuste vältimiseks. Mutexi (vastastikuse välistamise objekti) kasutatakse ka selleks, et vältida samaaegset juurdepääsu ühisele ressursile mitme samaaegse protsessi kaudu.

Mis on semafor?

Semafor on andmestruktuur, mida kasutatakse kriitiliste sektsioonide vastastikuseks välistamiseks. Semafoorid toetavad peamiselt kahte toimingut, mida nimetatakse ootamiseks (ajalooliselt tuntud kui P) ja signaaliks (ajalooliselt tuntud kui V). Ooteoperatsioon blokeerib protsessi, kuni semafor on avatud ja signaalioperatsioon lubab siseneda teisele protsessile (lõimele). Iga semafor on seotud ooteprotsesside järjekorraga. Kui lõime kutsub ooteoperatsiooni ja semafor on avatud, saab lõime jätkata. Kui semafor suletakse ootetoimingu kutsumisel lõime poolt, blokeeritakse lõim ja see peab ootama järjekorras. Signaalioperatsioon avab semafori ja kui järjekorras on juba ootel lõim, lastakse sellel protsessil edasi minna ja kui järjekorras pole ühtegi lõime, jäetakse signaal meelde järgmiste lõimede jaoks. On kahte tüüpi semafoore, mida nimetatakse mutex semaforideks ja loendussemaforideks. Mutexi semaforid võimaldavad ühe juurdepääsu ressursile ja semafooride loendamine võimaldab mitmel lõimel juurdepääsu ressursile (millel on mitu ühikut).

Mis on Mutex?

Kui arvutirakendus käivitatakse, loob see mutexi ja lisab selle ressursile. Kui lõime kasutab ressurssi, on see lukustatud ja teised lõimed ei saa seda kasutada. Kui mõni teine lõim soovib sama ressurssi kasutada, peab see esitama taotluse. Seejärel asetatakse see lõim järjekorda, kuni esimene lõim on ressursiga lõpetatud. Kui esimene lõim on ressursiga lõppenud, lukustus eemaldatakse ja järjekorras olev lõim pääseb ressursile juurde. Kui järjekorras on mitu lõime, antakse neile juurdepääs roteeruv alt. Praktiliselt, kui mutex vahetab juurdepääsu ressursile mitme lõime vahel, on see nähtav, kuna mitu lõime tarbivad ressurssi samal ajal. Kuid sisemiselt pääseb ressursile teatud ajahetkel ainult üks lõim.

Mis vahe on Semaphoril ja Mutexil?

Kuigi nii semafoore kui ka mutex-objekte kasutatakse paralleelsetes programmeerimiskeskkondades vastastikuse välistamise saavutamiseks, on neil mõningaid erinevusi. Mutexi objekt võimaldab ainult ühel lõimel tarbida ressurssi või kriitilist osa, samas kui semaforid võimaldavad piiratud arvu samaaegseid juurdepääsu ressursile (alla maksimaalse lubatud arvu). Mutexi objektide puhul peavad teised lõimed, kes soovivad ressursile juurde pääseda, ootama järjekorras, kuni praegune lõim on ressursi kasutamise lõpetanud.

Soovitan: