Szinkronizáció
A HupWiki-ből...
A rendszert alkotó folyamatok általában valamilyen közös feladatot oldanak meg és ennek érdekében együttműködnek. Az együttműködés során egymásnak jelzéseket vagy üzeneteket küldenek. Ilyenkor rendszerint vannak a folyamatoknak olyan szakaszaik, amelyekbe csak akkor léphetnek be, ha egy másik folyamattól engedélyt kaptak. Ily módon a folyamatoknak egymással szinkronban kell működniük.
A szinkronizációt megvalósító eszköz bevezetése E.W. Dijkstra nevéhez fűződik. 1968-ban publikálta a szemaforokról szóló cikkét. Tekintsük a definíciót:
Legyen S bináris szemafor két lehetséges értéke 0 (zárt) és 1 (nyitott a szemafor). Az S szemaforon értelmezett P-művelet:
P(S) ==> while S=0 do S:=0; S:=S-1;
A S szemaforon értelmezett V-művelet:
V(S) ==> S:=S+1;
Szemléletes jelentésük a következő: egy folyamat bejelenti erőforrás igényét, kiad egy P() műveletet. Ha az erőforrás foglalt (a szemafor zárt), akkor a folyamat felfüggesztődik. Amikor felszabadul az erőforrás (a szemafor kinyit), a kiadott P() művelettel lezárja a szemafort.
Mind a P(), mind a V() műveletnek oszthatatlannak (primitívnek) kell lennie, ami azt jelenti, hogy végrehajtásuk alatt a folyamattól a processzort nem szabad elvenni.