Što je sinkronizacija procesa?
Sinkronizacija procesa zadatak je koordiniranja izvršavanja procesa na način da niti jedan proces ne može imati pristup istim zajedničkim podacima i resursima.
To je posebno potrebno u višeprocesnom sustavu kada se više procesa izvodi zajedno, a više od jednog procesa pokušava istovremeno pristupiti istom zajedničkom resursu ili podacima.
To može dovesti do nedosljednosti zajedničkih podataka. Dakle, promjena koju je izvršio jedan proces nije se nužno odrazila kada su drugi procesi pristupili istim zajedničkim podacima. Da bi se izbjegla ova vrsta neusklađenosti podataka, procesi se moraju međusobno sinkronizirati.
U ovom vodiču za operativni sustav naučit ćete:
- Što je sinkronizacija procesa?
- Kako funkcionira sinkronizacija procesa?
- Odjeljci programa
- Što je problem kritičnog odjeljka?
- Pravila za kritički odjeljak
- Rješenja za kritički odjeljak
Kako funkcionira sinkronizacija procesa?
Na primjer, proces A mijenja podatke na memorijskom mjestu, dok drugi postupak B pokušava pročitati podatke s istog memorijskog mjesta. Velika je vjerojatnost da će podaci pročitani u drugom postupku biti pogrešni.
Odjeljci programa
Evo četiri bitna elementa kritičnog odjeljka:
- Odjeljak za prijavu: Dio je postupka koji odlučuje o ulasku u određeni postupak.
- Kritični odjeljak: Ovaj dio omogućuje jednom procesu unos i izmjenu dijeljene varijable.
- Izlazni odjeljak: Izlazni odjeljak omogućuje drugom procesu koji čekaju u Odjeljku za ulazak da uđe u Kritične odjeljke. Također provjerava treba li postupak koji je dovršio svoje izvršenje ukloniti kroz ovaj odjeljak.
- Ostatak odjeljka: Svi ostali dijelovi Kodeksa, koji nisu u odjeljku Kritični, Ulaz i Izlazak, poznati su kao Odjeljak ostatka.
Što je problem kritičnog odjeljka?
Kritični odjeljak je segment koda kojem se u određenom trenutku može pristupiti signalnim postupkom. Odjeljak se sastoji od zajedničkih izvora podataka kojima je trebalo pristupiti drugi procesi.
- Unosom u kritični odjeljak upravlja funkcija wait (), a predstavlja se kao P ().
- Izlazom iz kritične sekcije upravlja funkcija signal (), predstavljena kao V ().
U kritičnom odjeljku može se izvršiti samo jedan postupak. Ostali procesi, koji čekaju da izvrše svoj kritični odjeljak, trebaju pričekati dok trenutni postupak ne dovrši svoje izvršavanje.
Pravila za kritički odjeljak
Kritični odjeljak mora provoditi sva tri pravila:
- Međusobno isključivanje: Međusobno isključivanje posebna je vrsta binarnog semafora koja se koristi za kontrolu pristupa zajedničkom resursu. Uključuje prioritetni mehanizam nasljeđivanja kako bi se izbjegli problemi proširene prioritetne inverzije. Ne može se istovremeno izvršiti više od jednog procesa u svom kritičnom odjeljku.
- Napredak: Ovo se rješenje koristi kada nitko nije u kritičnom odjeljku, a netko želi unutra. Tada bi oni procesi koji nisu u odjeljku podsjetnika trebali odlučiti tko treba ući u određeno vrijeme.
- Ograničeno čekanje: Kada proces podnese zahtjev za ulazak u kritični odjeljak, postoji određeno ograničenje broja procesa koji mogu ući u njihov kritični odjeljak. Dakle, kada se dosegne ograničenje, sustav mora dopustiti zahtjev da proces uđe u svoj kritični odjeljak.
Rješenja za kritički odjeljak
U sinkronizaciji procesa, kritični odjeljak igra glavnu ulogu tako da se problem mora riješiti.
Evo nekoliko široko korištenih metoda za rješavanje problema kritičnog odjeljka.
Petersonovo rješenje
Petersonovo rješenje široko se koristi za rješavanje problema kritičnih presjeka. Ovaj algoritam razvio je informatičar Peterson, zbog čega je i imenovan kao Petersonovo rješenje.
U ovom rješenju, kada se postupak izvršava u kritičnom stanju, drugi postupak izvršava samo ostatak koda, a može se dogoditi i suprotno. Ova metoda također pomaže osigurati da se samo jedan proces izvodi u kritičnom odjeljku u određeno vrijeme.
Primjer
PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
- Pretpostavimo da postoji N procesa (P1, P2, ... PN) i svaki postupak u nekom trenutku zahtijeva ulazak u kritični odjeljak
- Održava se niz FLAG [] veličine N koji je prema zadanim postavkama netačan. Dakle, kad god postupak zahtijeva ulazak u kritični odjeljak, svoju zastavicu mora postaviti kao istinitu. Na primjer, ako Pi želi ući, postavit će FLAG [i] = TRUE.
- Druga varijabla koja se naziva TURN označava procesni broj koji trenutno želi ući u CS.
- Proces koji ulazi u kritični odjeljak prilikom izlaska promijenio bi TURN u drugi broj s popisa spremnih procesa.
- Primjer: skretanje je 2, a P2 ulazi u kritični odjeljak i dok izlazi iz okreta = 3, pa P3 izbija iz petlje čekanja.
Sinkronizacijski hardver
Ponekad se problemi Kritičnog odjela rješavaju i hardverskim putem. Neki operativni sustav nudi funkciju zaključavanja kada Proces dobije zaključavanje prilikom ulaska u odjeljak Kritika i otpušta zaključavanje nakon što ga napusti.
Dakle, kada drugi postupak pokušava ući u kritični odjeljak, neće moći ući jer je zaključan. To može učiniti samo ako je besplatno preuzimanjem same brave.
Mutex brave
Hardver za sinkronizaciju nije jednostavna metoda za primjenu za sve, pa je tako stricter uvedena stroga softverska metoda poznata kao Mutex Locks.
U ovom pristupu, u ulaznom dijelu koda, dobiva se LOCK nad kritičnim resursima koji se koriste unutar kritičnog odjeljka. U izlaznom dijelu ta se brava otpušta.
Rješenje za semafor
Semafor je jednostavno varijabla koja je negativna i dijeli se između niti. To je još jedan algoritam ili rješenje problema kritičnog odjeljka. To je signalni mehanizam i nit koja čeka na semaforu, a koju može signalizirati druga nit.
Koristi dvije atomske operacije, 1) čekanje i 2) signal za sinkronizaciju procesa.
Primjer
WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;
Sažetak:
- Sinkronizacija procesa zadatak je koordiniranja izvršavanja procesa na način da niti jedan proces ne može imati pristup istim zajedničkim podacima i resursima.
- Četiri elementa kritičnog odjeljka su 1) Odjeljak za ulaz 2) Odjeljak za kritike 3) Odjeljak za izlaz 4) Odjeljak za podsjetnik
- Kritični odjeljak je segment koda kojem se u određenom trenutku može pristupiti signalnim postupkom.
- Tri pravila koja moraju provoditi kritični odjeljak su: 1) Međusobno izuzeće 2) Procesno rješenje 3) Ograničeno čekanje
- Međusobno izuzeće je posebna vrsta binarnog semafora koja se koristi za kontrolu pristupa zajedničkom resursu.
- Procesno rješenje koristi se kada nitko nije u kritičnom dijelu, a netko želi unutra.
- U vezanom rješenju za čekanje, nakon što postupak podnese zahtjev za ulazak u svoj kritični odjeljak, postoji ograničenje broja drugih procesa koji mogu ući u svoj kritični odjeljak.
- Petersonovo rješenje široko se koristi za rješavanje problema kritičnih presjeka.
- Problemi kritičnog odjeljka također se rješavaju sinkronizacijom hardvera
- Sinkronizacijski hardver nije jednostavna metoda za provedbu za sve, pa je tako introduceder uvedena stroga softverska metoda poznata kao Mutex Locks.
- Semafor je drugi algoritam ili rješenje problema kritičnog odjeljka.