Gjensidig utelukkelse og synkronisering

Fra IT2
Hopp til: navigasjon, søk

Vi finner mange eksempler på at prosesser utveksler informasjon, og det betyr at de kommuniserer med hverandre. Det finnes to hovedformer for kommunikasjon mellom prosesser. Dette er:

  • Gjensidig utelukkelse
  • Synkronisering

Gjensidig utelukkelse

Når flere prosesser ønsker adgang til det samme dataområdet, eller felles dataområde, kalles det gjensidig utelukkelse. For å unngå race conditions må operativsystemet gjøre slik at kun en prosess får adgang til dataområdet om gangen. Race conditions vil si at hvis prosessene slippes til på dataområdet uten styring kan man ikke forutsi hva resultatet av beregningene blir.


Synkronisering

En prosess kan ikke passere forbi et bestemt punkt i programkoden sin før en bestemt hendelse har inntruffet. Fks. At en annen prosess har plassert ei datablokk i et bestemt buffer. Et eksempel på synkronisering er for eksempel så har vi to prosesser. prosess1 henter datablokker fra et buffer mens prosess2 legger datablokker i det samme bufferet. Hvis bufferet er tomt og prosess1 prøver å kjøre vil prosess1 legges i ventekø helt til prosess2 har overført en datablokk. Hvis prosess2 går først så blir det ingen ventetid.

resultatet av synkronisering er at den ene prosessen ikke får fortsette forbi et gitt punkt før bestemte betingelser er oppfylt.