Sinhronizacija procesa: težava kritičnega odseka v OS

Kazalo:

Anonim

Kaj je sinhronizacija procesov?

Sinhronizacija procesov je naloga usklajevanja izvajanja procesov na način, da noben proces ne more imeti dostopa do istih skupnih podatkov in virov.

To je še posebej potrebno v večprocesnem sistemu, kadar se izvaja več procesov in več procesov poskuša hkrati pridobiti dostop do istega vira ali podatkov v skupni rabi.

To lahko privede do nedoslednosti skupnih podatkov. Sprememba, ki jo je naredil en postopek, se ni nujno odrazila, ko so drugi procesi dostopali do istih skupnih podatkov. Da bi se izognili tej vrsti neskladnosti podatkov, je treba procese sinhronizirati med seboj.

V tej vadnici o operacijskem sistemu boste izvedeli:

  • Kaj je sinhronizacija procesov?
  • Kako deluje sinhronizacija procesov?
  • Oddelki programa
  • Kaj je problem kritičnega oddelka?
  • Pravila za kritični oddelek
  • Rešitve kritičnega oddelka

Kako deluje sinhronizacija procesov?

Na primer, postopek A spreminja podatke na pomnilniškem mestu, medtem ko drugi postopek B poskuša prebrati podatke z istega pomnilniškega mesta. Obstaja velika verjetnost, da bodo podatki, prebrani v drugem postopku, napačni.

Oddelki programa

Tu so štirje bistveni elementi kritičnega oddelka:

  • Odsek za vstop: je del postopka, ki odloča o vstopu v določen postopek.
  • Kritični odsek: Ta del omogoča enemu procesu vnos in spreminjanje spremenljivke v skupni rabi.
  • Izhodni odsek: Izhodni odsek omogoča drugemu postopku, ki čaka v vstopnem odseku, vstop v kritične odseke. Preveri tudi, ali je treba postopek, ki je končal njegovo izvajanje, odstraniti prek tega oddelka.
  • Preostali odsek: Vsi drugi deli kode, ki niso v kritičnem, vstopnem in izstopnem oddelku, so znani kot odsek za preostanek.

Kaj je problem kritičnega oddelka?

Kritični odsek je segment kode, do katerega lahko v določenem trenutku dostopa signalni postopek. Odsek sestavljajo skupni podatkovni viri, do katerih so morali dostopati drugi procesi.

  • Vnos v kritični odsek obdeluje funkcija wait () in je predstavljena kot P ().
  • Izhod iz kritičnega odseka nadzoruje funkcija signal (), predstavljena kot V ().

V kritičnem odseku je mogoče izvesti samo en postopek. Drugi procesi, ki čakajo na izvedbo svojega kritičnega odseka, morajo počakati, da trenutni postopek zaključi svoje izvajanje.

Pravila za kritični oddelek

Kritični del mora uveljaviti vsa tri pravila:

  • Medsebojna izključitev: Medsebojna izključitev je posebna vrsta binarnega semaforja, ki se uporablja za nadzor dostopa do vira v skupni rabi. Vključuje mehanizem prednostnega dedovanja, da bi se izognili težavam z razširjeno prioritetno inverzijo. V kritičnem odseku lahko naenkrat izvede več kot en postopek.
  • Napredek: Ta rešitev se uporablja, kadar nihče ni v kritičnem odseku in nekdo želi noter. Nato se ti procesi, ki niso v odseku z opomniki, odločijo, kdo naj vstopi v končnem času.
  • Vezano čakanje: Ko postopek poda zahtevo za vstop v kritični odsek, obstaja določena omejitev glede števila procesov, ki lahko vstopijo v njihov kritični odsek. Torej, ko je meja dosežena, mora sistem omogočiti, da postopek vstopi v svoj kritični odsek.

Rešitve kritičnega oddelka

Pri sinhronizaciji procesov ima glavno vlogo kritični odsek, tako da je treba težavo rešiti.

Tu je nekaj široko uporabljenih metod za reševanje problema kritičnega odseka.

Petersonova rešitev

Petersonova rešitev je široko uporabljena rešitev za probleme kritičnih odsekov. Ta algoritem je razvil računalniški znanstvenik Peterson, zato je imenovan kot Petersonova rešitev.

V tej rešitvi, ko se postopek izvaja v kritičnem stanju, drugi postopek izvede le preostanek kode in lahko se zgodi ravno nasprotno. Ta metoda pomaga tudi zagotoviti, da se v kritičnem odseku ob določenem času zažene samo en postopek.

Primer

PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
  • Predpostavimo, da obstaja N procesov (P1, P2,… PN) in vsak proces v določenem trenutku zahteva vstop v kritični odsek
  • Ohrani se polje FLAG [] velikosti N, ki je privzeto false. Torej, kadar koli postopek zahteva vstop v kritični odsek, mora zastavico nastaviti kot resnično. Če Pi na primer želi vnesti, bo nastavil FLAG [i] = TRUE.
  • Druga spremenljivka, imenovana TURN, označuje številko procesa, ki jo trenutno želite vnesti v CS.
  • Postopek, ki med izhodom vstopi v kritični odsek, spremeni TURN na drugo številko s seznama pripravljenih procesov.
  • Primer: zavoj je 2, nato P2 vstopi v kritični odsek in med izhodom iz zavoja = 3 in zato P3 izbije iz čakalne zanke.

Sinhronizacijska strojna oprema

Včasih težave kritičnega odseka rešuje tudi strojna oprema. Nekateri operacijski sistemi ponujajo funkcionalnost zaklepanja, kjer proces pridobi ključavnico ob vstopu v kritični odsek in sprosti ključavnico, ko jo zapusti.

Ko torej drugi proces poskuša vstopiti v kritični odsek, ne bo mogel vstopiti, saj je zaklenjen. To lahko stori le, če je brezplačno s prevzemom same ključavnice.

Mutex ključavnice

Sinhronizacijska strojna oprema ni preprosta metoda za vsakogar, zato je bila uvedena tudi stroga programska metoda, znana kot Mutex Locks.

Pri tem pristopu se v odseku za vnos kode dobi LOCK nad kritičnimi viri, uporabljenimi znotraj kritičnega odseka. V izhodnem delu se ta ključavnica sprosti.

Rešitev za semafor

Semafor je preprosto spremenljivka, ki je negativna in je v skupni rabi med nitmi. Je še en algoritem ali rešitev problema kritičnega odseka. Gre za signalni mehanizem in nit, ki čaka na semaforju, kar lahko signalizira druga nit.

Za sinhronizacijo procesa uporablja dve atomski operaciji, 1) čakanje in 2) signal.

Primer

WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;

Povzetek:

  • Sinhronizacija procesov je naloga usklajevanja izvajanja procesov na način, da noben proces ne more imeti dostopa do istih skupnih podatkov in virov.
  • Štirje elementi kritičnega odseka so 1) Vhodni del 2) Kritični del 3) Izhodni del 4) Opomnik
  • Kritični odsek je segment kode, do katerega lahko v določenem trenutku dostopa signalni postopek.
  • Tri nujna pravila, ki jih morajo uveljavljati kritični oddelki, so: 1) Vzajemna izključitev 2) Procesna rešitev 3) Vezana čakanja
  • Vzajemna izključitev je posebna vrsta binarnega semaforja, ki se uporablja za nadzor dostopa do vira v skupni rabi.
  • Procesna rešitev se uporablja, kadar nikogar ni v kritičnem delu in nekdo želi noter.
  • Potem ko postopek zahteva zahtevo za vstop v svoj kritični odsek v omejeni čakalni rešitvi, obstaja omejitev, koliko drugih procesov lahko pride v svoj kritični odsek.
  • Petersonova rešitev je široko uporabljena rešitev za probleme kritičnih odsekov.
  • Težave kritičnega oddelka se rešujejo tudi s sinhronizacijo strojne opreme
  • Sinhronizacijska strojna oprema ni preprosta metoda za vsakogar, zato je bila uvedena tudi stroga programska metoda, znana kot Mutex Locks.
  • Semafor je še en algoritem ali rešitev problema kritičnega odseka.