Mutex është një version i thjeshtë i semaforëve, kur nuk përdoren semaforët e tjerë. Mutex është i mirë vetëm për menaxhim të përjashtimeve të dyanshme për një pjesë kodi të përbashkët. Ata janë të thjeshtë në implementim, gjë kjo që i bën të përdorshëm në thread-ed në zonen e përdoruesit.
Mutex është një variabël që mund të jetë në njërën nga dy gjendjet : i hapur ose i kyçur. Shihet qartë që nevojitet vetëm një bit për të ruajtur vlerën e tij, por shpesh në praktikë përdoret një numër i plotë, për të cilin 0 paraqet gjendjen e hapur dhe një numër tjetër i ndryshëm nga 0 paraqet gjendjen të kyçur. Një proçes thërret proceduren mutex_lock kur i duhet akses në pjesën kritike. Kur mutex është i hapur ( gjë që do të thotë se pjese kritike mund të aksesohet) thirrja ka sukses dhe proçesi mund të hyje në pjesën e tij kritike. Puna ndryshon kur mutex është i kyçur. Në këtë rast proçesi bllokohet derisa proçesi tjetër që është një pjesën kritike del dhe thërret proceduren mutex_unlock.
Me paketat e thread-eve në zonë n e përdoruesit nuk është problem që disa thread-e të kenë akses në të njëjtin mutex, përderisa të gjithë thread-ed veprojnë në një zone të përbashkët. Në shumicën e zgjidhjeve të tilla si algoritmi i Peterson ose semaforët ka një supozim që disa proçese kanë akses në një pjesë të përbashkët memorjeje. Nqs proçeset kanë zona të veçuara adresash, siç e kemi thëne ne, atëherë si mund të kenë të përbashkët variablin turn në algoritmin e Peterson, ose semaforët, ose buffer-at?
Për ketë ka dy përgjigje. Së pari, disa nga strukturat e përbashkëta, si psh semaforët, mund të ruhen në kernel dhe mund të aksesohen duke përdorë thirrje të sistemit. Kjo eliminon problemin. E dyta mundësi : shumë sisteme shfrytëzimi moderne, duke përfshirë këtu UNIX dhe Windows, ofrojnë një mundësi që proçeset të kenë të përbashkët një pjesë të zonave të adresave. Në këtë mënyrë buffer-at dhe struktura të tjera mund të jenë të përbashkët për dy ose me shumë proçese. Rasti më i keq, kur asnjëra nga zgjidhjet më lart është e mundur, mund të përdoret një
skedar i përbashkët.
Në rastin kur dy ose me shumë proçese kane të përbashkët një pjese të madhe të zonës së adresave, ose komplet këtë zonë , atëherë nuk bë het i qartë dallimi mes proçeseve dhe thread-eve. Por nuk duhet harruar se gjithsesi dy proçese kanë cilësi të tjera që janë veçanta për dy proçeset, dhe që thread-ed i kanë të përbashkëta. Gjithashtu disa proçese që kanë një pjese të zonës së adresave të përbashkët nuk janë aq eficiente sa thread-ed e përdoruesit.
Bazuar në librin Modern Operating Systems, me autor A.Tanenbaum
Vitet e fundit kanë nisur programe të reja studimi, Bachelor dhe Master, me fokus Inteligjencë…
Dega e studimit Informatike është aktualisht mjaft e kërkuar nga maturantët dhe nga tregu i…
Një nga programet e studimit më të kërkuara aktualisht janë Shkenca Kompjuterike. Po cili është…
Këtë vit kam nisë të mbaj shënime dhe të organizoj projektet freelance me një aplikacion…
Komponent kryesor i një aplikacioni në Java është lidhja dhe ndërveprimi me një bazë të…
Në këtë blog po përmbledh gjuhët e programimit më të preferuara, të cilat kryesojnë listën…