Kas yra aklavietė operacinėje sistemoje: sąlygos ir aptikimo algoritmas

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Pagrindinis operacinės sistemos tikslas yra užtikrinti tinkamą aparatinės ir programinės įrangos išteklių ryšį, taip pat teikti bendras paslaugas programoms. Kai operacinės sistemos procesas nori pasiekti bet kurį šaltinį, jis pirmiausia išsiunčia užklausą tam tikram ištekliui, prie kurio jis nori prisijungti, tada jis panaudoja išteklius ir, galiausiai, išleidžia jį naudodamas. Tarkime, kad daugybė procesų bando pasiekti vieną šaltinį tuo pačiu metu, tampa sunku pateikti vieną šaltinį visiems procesams vienu metu tokioje situacijoje, kai atsiranda sąvoka, vadinama aklaviete. Taigi šiame straipsnyje aprašoma, kaip įvyksta aklavietė ir kaip įveikti šią aklavietę.

Kas yra aklavietė operacinėje sistemoje?

Apibrėžimas: „Dead-Lock“ yra situacija, kai du ar daugiau procesorių laukia, kol įvyks koks nors įvykis, tačiau tokie įvykiai, kurie neįvyksta, yra aklavietė, ir sakoma, kad procesoriai yra aklavietėje. Pvz., Tarkime, realaus laiko scenarijų, kai yra du automobiliai A ir B, kuriuos vairuoja du pavieniai vairuotojai vienpusiu keliu. Dabar susidaro situacija, kai „A“ automobilio vairuotojas sako, kad juda į šiaurę yra teisinga kryptimi, o „B“ automobilio vairuotojas sako, kad juda į pietų pusę. Bet nė vienas iš jų nejuda atgal, kad kitas automobilis galėtų judėti į priekį, ši sąlyga vadinama aklaviete.




Automobilis-pavyzdys

automobilis-pavyzdys

Norėdami geriau suprasti, apsvarstykime kitą pavyzdį, kur yra du ištekliai R1, R2 ir du procesai P1 ir P2, kur R1 priskiriamas P1, o R2 priskiriamas P2. Dabar, jei P1 nori prisijungti prie R2, kaip mes jau žinome, kad R2 yra P2, o dabar P2 nori pasiekti R1, o tai yra P1 vykdo tik tada, kai gauna prieigą prie R2, taip pat P2 vykdo tik tada, kai gauna prieigą prie R1, šią situaciją yra aklavietė.



Procesoriaus pavyzdys

procesoriaus pavyzdys

„Dead-lock“ sąlygos

Toliau pateikiamos keturios svarbios aklavietės sąlygos, atsirandančios, jei visos sąlygos įvyksta vienu metu, yra tam tikros galimybės aklavietei įvykti.

Abipusė atskirtis

Tai reiškia, kad bet koks šaltinis, kurį mes naudojame, turi būti naudojamas vienas kitą išskiriančiu būdu. Kai tik vienas procesas vienu metu naudoja tik vieną išteklius. Pavyzdžiui, vyksta spausdinimo procesas ir staiga kitas procesas bando pertraukti spausdinimo procesą. Taigi, esant abipusės atskirties situacijai, tik atlikus spausdinimo užduotį, apdorojama tik kita užduotis. Abipusę atskirtį galima pašalinti tuo pačiu metu dalijantis ištekliais, o tai praktiškai neįmanoma.

Abipusė atskirtis

abipusė atskirtis

Nėra išankstinio pasirinkimo

Pagal išankstinis pagrįstais algoritmais, jei yra prioritetinė užduotis, bandanti nutraukti dabartinę užduotį. Pirminis algoritmas, kuriuo jis laiko dabartinę užduotį, pirmiausia vykdo prioritetinę užduotį ir grįžta prie savo pirmosios užduoties. Pagal aukščiau pateiktą pavyzdį paaiškinta situacija, kai procesas išteklius laiko tol, kol jis yra vykdomas, ty P1 gali paleisti R1 tik įvykdęs, panašiai kaip P2 išleisti R2 tik po vykdymo. Jei pirmenybės nėra, gali įvykti aklavietė.


Nėra išankstinio pavyzdžio

be išankstinio pavyzdžio

Laikyk ir palauk

Procesas turi tam tikrus išteklius ir laukia papildomų išteklių, tačiau tuos išteklius įsigyja kitas procesas. Remiantis aukščiau pateiktu pavyzdžiu, P1 laiko R1 ir laukia R2, kur R2 įsigyja P2, o P2 laiko R2 ir laukia R1, kur R1 gauna P1 yra sulaikymo ir laukimo situacijos sistemoje gali atsirasti aklavietė.

Laikyk ir lauk - pavyzdys

sulaikymo ir laukimo pavyzdys

Žiedinis laukimas

Teigiama, kad procesų rinkinys yra aklavietėje, jei vienas procesas laukia kito proceso paskirto šaltinio, o tas procesas laukia ištekliaus, jis yra panašus į aukščiau paaiškintą pavyzdį, kur jis yra ciklo forma. Kai P1 laukia R2 ir R2 yra paskirtas P2, o P2 laukia R1 ir R1, skirto P1, o tai yra apvali laukimo forma, jei ši sąlyga tenkina aklavietę.

Apskrito laukimo pavyzdys

žiedinis laukimas-pavyzdys

Užblokuoto aptikimo algoritmas

Tais atvejais, kai mes paskirstome išteklius procesams ir operacinė sistema patikrina, ar sistemoje įvyko aklavietė, ar nenaudojant 2 pagrindinių aklavietės aptikimo algoritmų, jie yra

  • Viena instancija
  • Keli šaltinio tipo egzemplioriai

Viena instancija

Vienas egzempliorius yra situacija, kai sistema turi atskirus visų išteklių egzempliorius. Jis taip pat žinomas kaip grafiko algoritmo laukimas arba išteklių paskirstymo grafikas. Išteklių paskirstymo grafikas susideda iš procesų ir išteklių rinkinio, kurie pateikiami kaip dvi skirtingos viršūnės. Išteklių paskirstymo grafike ištekliai yra modifikuoti ir pateikiami kaip laukimo grafiko forma. Kai laukiant grafiko formos yra tik procesai, kurie pateikiami kaip viršūnės, kaip parodyta žemiau, kur

  • Išteklių paskirstymo grafikas: Procesai P1, P2, P3 ir ištekliai R1, R2, R3 pateikiami išteklių paskirstymo grafike.
  • Laukti grafiko: laukiant grafiko minimi tik procesai P1, P2, P3.
  • Jei yra ciklo sąlyga, tai reiškia, kad jei procesas vyksta nenutrūkstamai viena kryptimi, tai reiškia, kad ciklo sąlyga išeina ir laukiama, kol grafikas atsidurs aklavietėje.

1 pavyzdys: Žemiau pateiktame pavyzdyje parodyta, kad nėra aklavietės, nes laukiant grafiko nėra stebimas nuolatinis srautas.

Vienos instancijos pavyzdys

vieno atvejo pavyzdys

2 pavyzdys: Įstrigo aklavietė, nes vyksta nuolatinis ciklo srautas nuo P1 iki P4.

Vienos instancijos - 2 pavyzdys

pavienis egzempliorius-pavyzdys2

Jei sistemoje aklavietė įvyksta labai dažnai, aptikimo algoritmas naudojamas dažnai. Jei bus daugiau naudojamas aptikimo algoritmas, bus daugiau pridėtinių išlaidų ir daugiau skaičiavimo laiko. Taigi, norėdami tai įveikti, pasitelkiame algoritmą po to, kai suteikiame vienodą laiko tarpą, taip naudojamas grafiko svoris aptikti aklavietę.

Keli šaltinio tipo egzemplioriai

Keli šaltinio tipo egzemplioriai yra situacija, kai sistemoje yra keli visų išteklių egzemplioriai, jis taip pat žinomas kaip „Bankers“ algoritmas. Pagal „Bankers“ algoritmą, kai tik procesas gauna visus reikalingus išteklius, jis išleidžia savo išteklius.

Apsvarstykime šį pavyzdį, tarkime, kad yra 3 procesai P0, P1, P2 ir išteklių tipai A, B, C, kur A gali būti Procesorius , B gali būti spausdintuvas, o C - klaviatūra. Skaičiai „0“ stulpelyje nurodo išteklių prieinamumą.

I atvejis: Tarkime, jei laikysime, kad sąlygos užklausa yra „000“ sąlyga, esanti P0 ir P2, turėtume patikrinti, kuri užklausa yra įvykdyta, procesai P0 išleidžia procesus, kai gauna paskirstymą, tada kiti P2 procesai išleidžia po paskyrimo. Panašiai, nuosekliai vienas po kito procesas nuosekliai išskiria P0, P2, P3, P1, P4. Galiausiai gauname turimus išteklius kaip P7, P2, P6. Galima seka yra sąlyga, kai nėra aklavietės.

Bankininkai-algoritmas-pavyzdys

bankininkai-algoritmas-pavyzdys1

Namai (ii): Tarkime, jei P2 yra 001, o ne 000, dabar pritaikykite bankininko algoritmą, kad patikrintumėte aklavietės būklę, kur vienintelis P0 vykdomas tarp visų 5 procesų. Taigi P1, P2, P3, P4 yra aklavietėje, išskyrus P0.

Bankininkai-pavyzdys2

bankininkai-pavyzdys2

Aklavietės programos

Aklavietės taikymas gali būti paaiškintas realaus laiko egzaminų internete rezultatų pavyzdžiu, kai keli studentai bando patekti į savo universiteto svetainę išleidimo metu. Galima pastebėti, kad kartais tinklalapis vienu metu neįkeliamas keliems vartotojams, tai yra aklavietė. Tai galima įveikti naudojant bet kurį iš algoritmų.

Privalumai

Aklavietės privalumai yra

  • Vengiant aklavietės išankstinė teisė nepastebėta
  • Proceso nereikia delsti

Trūkumai

Aklavietės trūkumas yra

  • Naudojamas išteklius reikia žinoti iš anksto
  • Proceso blokavimas ilgam laikui
  • Pirmenybės nuostoliai yra paveldimi.

Šiame straipsnyje apžvelgiama, kaip aklavietė įvyksta, kai yra du ar daugiau procesų, ir trys sąlygos, dėl kurių atsiranda aklavietė, ir dviejų tipų algoritmai, ty išteklių dalijimosi algoritmas, kuris nustato, kad yra aklavietės būklė ir bankininkų algoritmas, kuris yra aklavietės išvengimo algoritmas. Čia yra klausimas „Kas atsitiks, jei nepaisoma aklavietės?“.