2.2.2 Vastastikune välistamine

iDevice ikoon 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 27. 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).