Zastoj u Operating sustav: Što je, kružno čekanje (primjeri)

⚡ Pametni sažetak

Zastoj u operativnom sustavu nastaje kada je skup procesa blokiran jer svaki drži resurs i čeka drugi koji drži drugi proces, stvarajući kružni lanac u kojem nijedan proces ne može nastaviti.

  • 🔒 Definicija: Zastoj zamrzava procese koji drže resurs dok čekaju jedan na drugi.
  • 🧩 Četiri uvjeta: Međusobno isključenje, zadržavanje i čekanje, bez preempcije i kružno čekanje moraju se držati zajedno.
  • 🔁 Kružno čekanje: Procesi tvore zatvoreni lanac, svaki čeka resurs koji drži sljedeći.
  • 🛡️ Prevencija: Kršenje bilo kojeg od četiri uvjeta sprječava stvaranje zastoja.
  • 🏦 Izbjegavanje: Bankarski algoritam provjerava zahtjeve za resursima kako bi sustav bio u sigurnom stanju.
  • 🤖 Kut umjetne inteligencije: Strojno učenje otkriva obrasce zastoja, a Copilot pomaže u pisanju i pregledu koda za zaključavanje.

Zastoj u Operating sustav

Što je Deadlock?

Zastoj je situacija koja se događa u operativni sustav kada proces uđe u stanje čekanja jer drugi proces koji čeka drži traženi resurs. Zastoj je čest problem u multiprocesiranju, gdje nekoliko procesa dijeli određenu vrstu međusobno isključivog resursa poznatog kao meka brava ili softverska brava.

Kada dođe do zastoja, nijedan od uključenih procesa ne može nastaviti, pa se pogođeni rad zaustavlja dok operacijski sustav ne intervenira.

Primjer zastoja

  • Primjer iz stvarnog svijeta bio bi promet koji ide samo u jednom smjeru.
  • Ovdje se most smatra resursom.
  • Dakle, kada dođe do zastoja, može se riješiti ako se jedan automobil vrati unatrag (preuzme resurse i vrati se unatrag).
  • Nekoliko automobila će možda morati biti rezervno u slučaju zastoja.
  • Dakle, gladovanje je moguće.

Primjer zastoja

Primjer zastoja

Što je kružno čekanje?

Jedan proces čeka resurs koji drži drugi proces, koji također čeka resurs koji drži treći proces i tako dalje. To se nastavlja sve dok posljednji proces ne čeka resurs koji drži prvi proces. Time se stvara kružni lanac.

Na primjer, Procesu A se dodjeljuje Resurs B dok zahtijeva Resurs A. Na isti način, Procesu B se dodjeljuje Resurs A dok zahtijeva Resurs B. To stvara kružnu petlju čekanja.

Primjer kružnog čekanja

Na primjer, računalo ima tri USB pogona i tri procesa. Svaki od tri procesa posjeduje jedan od USB pogona. Dakle, kada svaki proces zatraži drugi pogon, tri procesa dođu do zastoja, jer svaki od njih čeka da se oslobodi USB pogon dok je još uvijek u upotrebi. To rezultira kružnim lancem.

Primjer kružnog čekanja

Primjer kružnog čekanja

Detekcija zastoja u OS-u

Pojavu zastoja može otkriti raspoređivač resursa. Raspoređivač resursa pomaže OS-u da track svih resursa koji su dodijeljeni različitim procesima. Nakon što se otkrije zastoj, može se riješiti preuzimanjem resursa, vraćanjem procesa unatrag ili prekidom jednog ili više procesa u zastoju.

Prevencija zastoja u OS-u

Važno je spriječiti zastoj prije nego što se dogodi. Sustav provjerava svaku transakciju prije nego što se izvrši kako bi se osiguralo da ne dovede do zastoja. Čak ni mala operacija koja bi u budućnosti mogla uzrokovati zastoj nikada se ne smije izvršiti.

Sprječavanje zastoja je skup metoda kojima se osigurava da barem jedan od četiri potrebna uvjeta ne može biti ispunjen.

Nema preuzimanja

Resurs može osloboditi samo dobrovoljno proces koji ga drži, nakon što je taj proces završio svoj zadatak.

  • Ako proces koji drži neke resurse zatraži drugi resurs koji mu se ne može odmah dodijeliti, tada se svi njegovi resursi oslobađaju.
  • Preemptirani resursi dodaju se na popis resursa koje proces čeka.
  • Proces se ponovno pokreće tek kada može ponovno dobiti stare resurse, kao i nove koje traži.

Međusobno isključivanje

Međusobno isključivanje je puni oblik Mutexa. To je posebna vrsta binarnog programa. semafor koji se koristi za kontrolu pristupa dijeljenom resursu. Uključuje mehanizam nasljeđivanja prioriteta kako bi se izbjegli problemi s produženom inverzijom prioriteta i blokiraju zadaci višeg prioriteta na najkraće moguće vrijeme.

Dijeljeni resursi poput datoteka samo za čitanje nikada ne dovode do zastoja, ali resursi poput pisača i magnetskih traka trebaju ekskluzivan pristup od strane jednog procesa.

Stani i čekaj

U ovom stanju, procesi moraju biti zaustavljeni od držanja jednog ili više resursa dok istovremeno čekaju jedan ili više drugih.

Kružno čekanje

Ova metoda nameće potpuno uređenje svih vrsta resursa. Sprječavanje kružnog čekanja također zahtijeva da svaki proces zahtijeva resurse u rastućem redoslijedu nabrajanja.

Izbjegavanje zastoja Algorithms

Bolje je izbjeći zastoj nego poduzimati mjere nakon što se zastoj dogodio. Izbjegavanje zahtijeva dodatne informacije, poput toga kako će se resursi koristiti. Izbjegavanje zastoja je koristan model u kojem svaki proces deklarira maksimalan broj resursa svake vrste koji mu mogu biti potrebni.

Izbjegavanje Algorithms

Algoritam za izbjegavanje zastoja dinamički procjenjuje stanje alokacije resursa tako da se nikada ne može dogoditi situacija kružnog čekanja.

Za jednu instancu tipa resursa:

  • Koristite graf raspodjele resursa.
  • Ciklus u grafu je nužan i dovoljan za zastoj.

Za više instanci tipa resursa:

Razlika između gladovanja i slijepe ulice

Evo nekih važnih razlika između zastoja i gladovanja:

Zastoj Gladovanje
Do zastoja dolazi kada se jedan od procesa blokira. Gladovanje je situacija u kojoj se svi procesi niskog prioriteta blokiraju dok se procesi visokog prioriteta izvršavaju.
Zastoj je beskonačan proces. Izgladnjivanje je dugo čekanje, ali ne i beskonačan proces.
Svaka zastoja uvijek ima glad. Svako gladovanje ne mora nužno imati zastoj.
Do zastoja dolazi zbog međusobnog isključivanja, zadržavanja i čekanja, bez preempcije i kružnog čekanja koje se javljaju zajedno. To se događa zbog nekontroliranog određivanja prioriteta i lošeg upravljanja resursima.

Prednosti Deadlock-a

Evo prednosti korištenja metode rješavanja zastoja:

  • Ova situacija dobro funkcionira za procese koji izvode jedan nalet aktivnosti.
  • Za zastoj nije potrebna preempcija.
  • To je prikladna metoda kada se primjenjuje na resurse čije se stanje može lako spremiti i vratiti.
  • Izvedivo je provesti provjere tijekom kompajliranja.
  • Ne zahtijeva računanje tijekom izvođenja, budući da je problem riješen u dizajnu sustava.

Nedostaci zastoja

Evo nedostataka korištenja metode rukovanja zastojem:

  • To odgađa početak procesa.
  • Procesi moraju unaprijed znati svoje buduće potrebe za resursima.
  • Preduhitriva češće nego što je potrebno.
  • Onemogućuje inkrementalne zahtjeve za resursima.
  • Ima inherentne gubitke zbog preempcije.

Pitanja i odgovori

Zastoj zahtijeva četiri Coffmanova uvjeta da bi se održao istovremeno: međusobno isključivanje, čekanje i čekanje, bez preempcije i kružno čekanje. Uklanjanje bilo kojeg od ovih uvjeta sprječava nastanak zastoja.

Prevencija unaprijed uklanja jedan od četiri uvjeta tako da se zastoj nikada ne može formirati. Izbjegavanje dopušta uvjete, ali koristi provjere tijekom izvođenja, kao što je Bankarski algoritam, kako bi se sustav održao u sigurnom stanju.

U zastoju, blokirani procesi se potpuno zaustavljaju i nikada ne mijenjaju stanje. livelock, procesi stalno mijenjaju stanje i koriste CPU, ali i dalje ne napreduju. Livelock je poseban slučaj nedostatka resursa.

Većina sustava opće namjene, uključujući Windows i Linux, koristite nojev algoritam i jednostavno ignorirajte rijetke zastoje jer je prevencija skupa. Baze podataka i sustavi u stvarnom vremenu umjesto toga pokreću aktivne rutine otkrivanja i oporavka.

Graf alokacije resursa mapira procese i resurse kao čvorove povezane rubovima zahtjeva i dodjele. Ciklus u grafu signalizira moguću blokadu; kod resursa s jednom instancom, ciklus uvijek znači da postoji blokada.

Ne. Prava blokada je trajna jer blokirani procesi nikada sami ne oslobađaju svoje resurse. Operativni sustav mora je prekinuti preuzimanjem resursa, vraćanjem na prethodno stanje ili prekidom jednog od procesa.

Modeli strojnog učenja uče obrasce zahtjeva za resursima kako bi predvidjeli i označili zastoje prije nego što se dogode. AI planeri mogu promijeniti redoslijed zahtjeva ili podesiti pravila zaključavanja, što je korisno u bazama podataka, cloud platformama i distribuiranim sustavima.

Da. GitHub Copilot može uočiti rizičan redoslijed zaključavanja, predložiti dosljedno preuzimanje zaključavanja i generirati testove koji otkrivaju zastoje. Tretira njegov izlaz kao prvi prolaz i dalje provjerava logiku konkurentnosti s odgovarajućim alatima za analizu.

Sažmite ovu objavu uz: