Kaj je semafor?
Semafor je preprosto spremenljivka, ki je negativna in je v skupni rabi med nitmi. Semafor je signalni mehanizem, nit, ki čaka na semaforju, pa lahko signalizira druga nit. Za sinhronizacijo procesa uporablja dve atomski operaciji, 1) čakanje in 2) signal.
Semafor omogoča ali onemogoča dostop do vira, kar je odvisno od njegove nastavitve.
V tej vadnici boste izvedeli:
- Kaj je Mutex?
- Uporaba semaforja
- Uporaba Mutexa
- Razlika med semaforjem in muteksom
- Pogoste napačne predstave o muteksu in semaforju
- Prednosti Semaphora
- Prednosti Mutexa
- Pomanjkljivost semaforjev
- Slabosti Mutexa
Kaj je Mutex?
Celotna oblika Mutexa je objekt vzajemne izključitve. To je posebna vrsta binarnega semaforja, ki se uporablja za nadzor dostopa do vira v skupni rabi. Vključuje mehanizem prednostnega dedovanja, da bi se izognili težavam z razširjeno prioritetno inverzijo. Omogoča, da so trenutne naloge z višjo prioriteto v najkrajšem možnem času v blokiranem stanju. Vendar prednostno dedovanje ne popravi inverzije prioritet, temveč le zmanjša njen učinek.
KLJUČNA RAZLIKA
- Mutex je mehanizem za zaklepanje, medtem ko je Semaphore signalni mehanizem
- Mutex je le objekt, medtem ko je Semaphore celo število
- Mutex nima podtipa, medtem ko ima Semafor dva tipa, ki štejeta semafor in binarni semafor.
- Semaphore podpira spreminjanje čakalnih in signalnih operacij, medtem ko Mutex spreminja samo postopek, ki lahko zahteva ali sprosti vir.
- Vrednost semaforja se spreminja z uporabo operacij wait () in signal (), po drugi strani pa so operacije Mutex zaklenjene ali odklenjene.
Uporaba semaforja
V primeru enega vmesnega pomnilnika lahko ločitev 4 KB ločimo na štiri vmesne pomnilnike po 1 KB. S tem štirimi odbojniki je mogoče povezati semafor. To omogoča uporabnikom in proizvajalcem, da hkrati delajo na različnih medpomnilnikih.
Uporaba Mutexa
Mutex zagotavlja medsebojno izključitev, ki je lahko proizvajalec ali potrošnik, ki ima ključ (mutex) in nadaljuje s svojim delom. Dokler proizvajalec napolni blažilnik, mora uporabnik počakati in obratno. V zaklepanju Mutex lahko ves čas samo ena nit deluje s celotnim vmesnim pomnilnikom.
Razlika med semaforjem in muteksom
Parametri | Semafor | Mutex |
---|---|---|
Mehanizem | Je vrsta signalnega mehanizma. | Je mehanizem za zaklepanje. |
Vrsta podatkov | Semafor je celoštevilčna spremenljivka. | Mutex je samo objekt. |
Sprememba | Operacije čakanja in signala lahko spremenijo semafor. | Spremeni ga samo postopek, ki lahko zahteva ali sprosti vir. |
Upravljanje virov | Če noben vir ni brezplačen, potem postopek zahteva vir, ki bi moral izvesti čakalno operacijo. Počakati mora, dokler število semaforja ne preseže 0. | Če je zaklenjen, mora postopek počakati. Postopek naj bo v čakalni vrsti. Do tega je treba dostopati šele, ko je mutex odklenjen. |
Navoj | Lahko imate več programskih niti. | V mutexu lahko imate več programskih niti, vendar ne hkrati. |
Lastništvo | Vrednost lahko spremenite s katerim koli postopkom, ki sprosti ali pridobi vir. | Zaklepanje predmeta se sprosti samo s postopkom, ki je na njem dobil zaklepanje. |
Vrste | Vrste semaforja štejejo semafor in binarni semafor. | Mutex nima podtipov. |
Delovanje | Vrednost semaforja se spremeni z uporabo funkcije wait () in signal (). | Predmet Mutex je zaklenjen ali odklenjen. |
Zasedenost virov | Zaseden je, če se uporabljajo vsi viri in postopek, ki zahteva vir, izvede operacijo wait () in se blokira, dokler število semaforja ne postane> 1. | Če je objekt že zaklenjen, postopek, ki zahteva vire, čaka in sistem ga postavi v čakalno vrsto, preden se sprosti zaklepanje. |
Splošna dejstva o muteksu in semaforju
Tu je nekaj pogostih dejstev o Mutexu in Semaforu:
- Samo ena naloga lahko pridobi mutex. Torej obstaja lastništvo, povezano z muteksom, in le lastnik ga lahko sprosti.
- Razlogi za uporabo mutexa in semaforja so različni, morda bi bili zaradi podobnosti pri njihovi izvedbi mutex imenovani binarni semafor.
- Ena zelo znanih zmot je, da so muteksi in semaforji skoraj enaki, z edino razliko, da je muteks sposoben šteti do 1, medtem ko lahko semaforji štejejo od 0 do N.
- Med binarnim semaforjem in muteksom vedno obstaja negotovost. Morda boste slišali, da je mutex binarni semafor, kar ni pravilno.
Prednosti Semaphora
Tukaj je nekaj prednosti / prednosti uporabe Semaphore:
- Omogoča dostop do kritičnega odseka več kot eni niti
- Semaforji so neodvisni od stroja.
- Semafori so vgrajeni v strojno neodvisno kodo mikrojedra.
- Ne dovolijo vstopu več procesov v kritični odsek.
- Ker je v semaforju zasedeno čakanje, procesnega časa in virov nikoli ne izgubljamo.
- So neodvisni od stroja in jih je treba zagnati v strojno neodvisni kodi mikrojedra.
- Omogočajo prožno upravljanje virov.
Prednosti Mutexa
Tu so pomembne prednosti / koristi Mutexa
- Muteksi so le preproste ključavnice, pridobljene pred vstopom v njegov kritični del in nato sprostitvijo.
- Ker je v kritičnem odseku v danem trenutku le ena nit, ni pogojev za dirko in podatki vedno ostanejo dosledni.
Pomanjkljivost semaforjev
Tu so slabosti / pomanjkljivosti semaforja
- Ena največjih omejitev semaforja je prednostna inverzija.
- Operacijski sistem mora spremljati vse klice na čakanje in signalizirati semafor.
- Njihova uporaba ni nikoli uveljavljena, ampak le po dogovoru.
- Da bi se izognili zastojem v semaforju, je treba čakanje in signal opraviti v pravilnem vrstnem redu.
- Programiranje semaforja je zapletena metoda, zato obstaja verjetnost, da ne bomo dosegli medsebojne izključenosti.
- Prav tako ni praktična metoda za široko uporabo, saj njihova uporaba vodi do izgube modularnosti.
- Semafor je bolj nagnjen k napakam programerja.
- Lahko povzroči zastoj ali kršitev medsebojnega izključevanja zaradi napake programerja.
Slabosti Mutexa
Tu so slabosti / pomanjkljivosti Mutexa
- Če nit pridobi ključavnico in preide v stanje spanja ali pa je prednostna, se druga nit morda ne bo mogla premakniti naprej. To lahko privede do stradanja.
- Ne more biti zaklenjen ali odklenjen iz drugačnega konteksta, kot je tisti, ki ga je pridobil.
- V kritičnem odseku mora biti naenkrat dovoljena samo ena nit.
- Običajna izvedba lahko privede do zasedenega čakalnega stanja, ki zapravlja procesorski čas.