You are on page 1of 7

HARDVERSKA REŠENJA

za zaštitu kritične sekcije


Hardverska rešenja za Ideja je da se naprave
zaštitu kritične sekcije mašinske instrukcije koje
podrazumevaju upotrebu su u stanju da urade bar
posebnih instrukcija dve operacije bez
procesora. mogućnosti prekida.
Najčešće se za potrebe zaštite kritične sekcije koriste
sledeće tri instrukcije:

TAS (Test And Set)

FAA (Fetch And Add)

SWAP (zamena)
TAS (Test And Set) FAA (Fetch And Add) SWAP (zamena)

• Instrukcija TAS operiše sa • Instrukcija FAA operiše • SWAP operiše sa dve


dve promenljive sa dve promenljive. promenljive SWAP(A, B) i
A = TAS(B) . • Njena sintaksa je rezultat je atomična
FAA(A, B) i pri njenom zamena vrednosti
• Funkcioniše tako što se promenljivih A i B.
korišćenju se vrednost
vrednost koja se nalazi u promenljive B • Primera radi zamena se,
promenljivoj B prebacuje prebacuje u A, uz ili bez korišćenja
a vrednost B + A u pomoćne promenljive,
u promenljivu A, promenljivu B. sastoji od bar tri
a u promenljivu B se • U izrazu B + A uzima operacije.
postavlja 1. stara vrednost
promenljive A, pre
promene vrednosti.
• Postoje različita rešenja za zaštitu kritične sekcije korišćenjem
ovakvih instrukcija, ali je u osnovi ideja svih slična.

• Obično postoji jedna promenljiva kojom se štiti ulaz u kritičnu


sekciju, a procesi aktivno čekaju da se ulaz oslobodi.

• Kada se to desi, onda atomičnost ovih instrukcija omogućava


da tačno jedan proces uđe u kritičnu sekciju.
ALGORITAM ZAŠTITA KRITIČNE SEKCIJE (TAS)

• Proces i: • Mana ovakvog rešenja je činjenica


• ne_može = 1; da je to rešenje zasnovano na
hardverskoj podršci, odnosno da je
• WHILE (ne_može == 1) potrebno da procesor ima
• ne_može = TAS(zauzeto); ugrađenu tu instrukciju.
• ENDWHILE • Sa druge strane, ovo rešenje se bez
bilo kakve modifikacije može
• //Kritična sekcija primeniti na proizvoljan broj
• zauzeto = 0; procesa, ali ne postoji garancija
koliko će neki proces da čeka.
ZAŠTITA KRITIČNE SEKCIJE (SWAP)
• Brava je globalna promenljiva koja se
postavlja na 0, što označava da je prolaz
u kritičnu sekciju slobodan, tj. da je brava
otključana.
• //Brava je globalna promenljiva • Sa druge strane, procesi koji se nadmeću
inicijalizovana na 0 za pristup kritičnoj sekciji imaju promenljivu
• Proces i: ključ čija vrednost 1 govori da ključ nije u
bravi, odnosno da čekaju da uđu u
• ključ = 1; kritičnu sekciju.
• WHILE (ključ != 0) • Procesi u petlji pokušavaju da kroz SWAP
• SWAP (brava, ključ); operaciju ubace ključ u bravu, tj. ugrabe
trenutak kada je otključana, zaključaju je i
• ENDWHILE time dobiju pristup kritičnoj sekciji,
istovremeno zaključavajući je za sve
• //Kritična sekcija ostale procese.
• brava = 0; • Kada proces završi sa radom u kritičnoj
sekciji, on postavlja vrednost promenljive
brava na 0, otključavajući je za ostale
procese.

You might also like