2.2.2 Vastastikune välistamine

Vastastikuse välistamise probleem on kriitilise tähtsusega
operatsioonisüsteemide arendamises. See tagab, et korraga saab ainult üks
protsess mingit spetsiifilist ressurssi kasutada. Vastastikuse välistamise
vajadus on hädavajalik sellistel ressurssidel, mida ei saa kasutada jagatud
juurdepääsuga või kui ressursi samaaegne kasutus toob kaasa ettearvamatuid
tagajärgi. Näiteks kui üks protsess loeb mingilt mäluaadressilt andmeid samal
ajal kui teine sinna aadressile andmeid kirjutab, siis esimene protsess võib
saada vigased andmed. Üldiselt ei saa kirjutatavad ressursid olla jagatud ilma
piiranguteta.
Protsessid, mis töötavad jagunevad:
- Sõltumatud protsessid: ressursside kasutamisel võistlevad protsessid, mis ei ole teadlikud üksteisest janende vahel puudub infovahetus ning OS peab reguleerima nende juurdepääsu ressurssidele
- Seotud protsessid: koopereeruvad protsessid, mis on disainitud koos töötama ja kommunikeerivadomavahel infot protsessi ID kaudu. Koopereeruvad protsessid suhtlevad andmete vahetamiseks (protsessisisene kommunikatsioon) ja toimingute õiges järjekorras teostamiseks (sünkronisatsioon).
Ressurss, mida mitu protsessi soovivad kasutada on kriitiline ressurss ja programmikood, mis kasutust nõuab on kriitiline sektsioon.Vastastikune välistamine tagab, et erinevate protsesside kriitiliste sektsioonide samaaegset käivitust ei toimuks.
Joonis 2‑7. Protsesside vastastikune välistamine (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))
Ressursijagamise probleemi lahendamiseks kasutatakse jagatud ressursside
haldamist semaforiga (Semaphor) ehk
OS'i poolt rakendatud andmestruktuuriga, mis koordineerib seadmele juurdepääsu
spetsiaalse API kaudu. Kui protsess nõuab juurdepääsu ressursile kutsutakse
välja semafori funktsioon:
- Kui ressurss on vaba („roheline semafor"), siis OS muudab selle värvi keelavaks („punane semafor") ja laseb protsessil ressurssi kasutada
- Kui ressurss on hõivatud siis OS paneb protsessi semafori järjekorda ja seab protsessi ooteseisundisse
Kui ressurss vabaneb, kontrollitakse semafori funktsiooniga kas seadme järjekorras on teisi protsesse:
- Kui on siis seatakse järjekorras programm täitmiseks valmis staatusesse, jättes semafori oleku hõivatuks
- Kui järjekord on tühi seatakse semafori olek roheliseks.
Olukorda, kui mitu protsessi ootavad vastastikku teineteise kasutuses oleva ressursi vabanemist, et lõpetada enda toiming, nimetatakse ummikuks (Deadlock).