Livelock: Kas yra, pavyzdys, skirtumas su aklaviete

Turinys:

Anonim

Kas yra „Livelock“?

Livelock“ yra situacija, kai prašymas suteikti išskirtinį užraktą pakartotinai atmetamas, nes daugelis sutampančių bendrų spynų vis trukdo viena kitai. Procesai nuolat keičia savo būseną, o tai dar labiau trukdo atlikti užduotį. Tai dar labiau trukdo jiems atlikti užduotį.

Šioje operacinės sistemos pamokoje sužinosite:

  • Kas yra „Livelock“?
  • „Livelock“ pavyzdžiai
  • Kas veda prie „Livelock“?
  • Kas yra aklavietė?
  • Aklavietės pavyzdys
  • Kas yra badas?
  • Skirtumas tarp aklavietės, bado ir Livelocko

„Livelock“ pavyzdžiai

1 pavyzdys:

Paprasčiausias „Livelock“ pavyzdys būtų du žmonės, kurie koridoriuje susitinka akis į akį, ir jie abu pasitraukia į šalį, kad praleistų kitą. Jie galiausiai juda iš vienos pusės į kitą, nepadarydami jokios pažangos, nes tuo metu juda tuo pačiu keliu. Čia jie niekada nesikerta.

2 pavyzdys:

Ankstesniame paveikslėlyje galite pamatyti, kad kiekvienam iš dviejų pateiktų procesų reikia dviejų išteklių, ir jie naudoja primityvų rinkimų įvedimo registrą, kad bandytų įsigyti jiems reikalingas spynas. Jei bandymas nepavyksta, metodas vėl veikia.

  1. Procesas „Y“ sulaikymo šaltinis
  2. B procese yra X šaltinis
  3. A procesui reikalingas X šaltinis
  4. B procesui reikalingi Y ištekliai

Darant prielaidą, kad procesas A pirmiausia veikia ir įgyja duomenų šaltinį X, o tada procesas B vykdo ir įgyja išteklių Y, nesvarbu, kuris procesas vyktų pirmas, nė vienas iš jų toliau nepažengia.

Tačiau nė vienas iš dviejų procesų nėra užblokuotas. Jie pakartotinai naudoja procesoriaus išteklius, nepadarydami jokios pažangos, bet taip pat sustabdo bet kokį apdorojimo bloką.

Todėl ši padėtis nėra aklavietė, nes nėra vieno proceso, kuris būtų užblokuotas, tačiau susiduriame su situacija, prilygstančia aklavietei, kuri yra LIVELOCK.

Kas veda prie „Livelock“?

„Livelock“ atsiranda, kai bendras leistinų procesų skaičius konkrečioje sistemoje turėtų būti apibrėžtas pagal bendrą įrašų skaičių procesų lentelėje. Todėl proceso lentelių sritis reikėtų vadinti baigtiniais ištekliais.

Kas yra aklavietė?

Aklavietė yra situacija, kuri atsiranda OS, kai kuris nors procesas patenka į laukimo būseną, nes kitas laukimo procesas laiko reikalaujamą išteklių. Aklavietė yra dažna daugialypio apdorojimo problema, kai keliems procesams būdingas tam tikro tipo vienas kitą išskiriantis šaltinis, vadinamas „soft lock“ arba programine įranga.

Aklavietės pavyzdys

  • Realus pavyzdys būtų eismas, kuris vyksta tik viena kryptimi.
  • Čia tiltas laikomas ištekliu.
  • Taigi, kai įvyksta aklavietė, ją galima lengvai išspręsti, jei vienas automobilis sukuria atsarginę kopiją (Išankstiniai ištekliai ir grąžinimas).
  • Jei susidaro aklavietė, gali tekti rezervuoti kelis automobilius.
  • Taigi badas yra įmanomas.
Aklavietės pavyzdys

Kas yra badas?

Badavimas yra situacija, kai visi žemo prioriteto procesai buvo užblokuoti, o aukšto prioriteto procesai vyksta. Bet kurioje sistemoje aukšto / žemo prioriteto išteklių prašymai nuolat vyksta dinamiškai. Todėl reikia tam tikros politikos, kad būtų galima nuspręsti, kas kada sulauks palaikymo.

Naudojant kai kuriuos algoritmus, kai kurie procesai gali nepasiekti norimo aptarnavimo, net jei jie nėra aklavietėje. Badavimas įvyksta, kai dėl kai kurių gijų bendri ištekliai ilgą laiką būna nepasiekiami.

Badavimo pavyzdys:

Pavyzdžiui, objektas siūlo sinchronizuotą metodą, kurio grąžinimas greičiausiai užtruks daug laiko. Jei viena gija dažnai naudoja šį metodą, kitos gijos, kurioms taip pat reikia dažnai sinchronizuoti prieigą prie to paties objekto, dažnai bus blokuojamos.

Skirtumas tarp aklavietės, bado ir Livelocko

  • Aklavietė yra situacija, kuri įvyksta OS, kai kuris nors procesas patenka į laukimo būseną, nes reikalaujamą išteklių laiko kitas laukimo procesas.
  • Kita vertus, pragyvenimo šaltinis yra beveik panašus į aklavietę, išskyrus tai, kad procesų būsenos, susijusios su pragyvenimu, visada keičiasi viena į kitą, nė viena neprogresuoja.
  • Taigi, „Livelock“ yra unikalus išteklių bado atvejis.

Santrauka:

  • Apibrėžimas: „Livelock“ yra situacija, kai prašymas suteikti išskirtinį užraktą pakartotinai atmetamas, nes daugelis sutampančių bendrų spynų vis trukdo viena kitai.
  • „Livelock“ atsiranda, kai bendras leistinų procesų skaičius konkrečioje sistemoje turėtų būti apibrėžtas pagal bendrą įrašų skaičių procesų lentelėje
  • Aklavietė yra situacija, kuri atsiranda OS, kai kuris nors procesas patenka į laukimo būseną, nes kitas laukimo procesas laiko reikalaujamą išteklių.
  • Realus pavyzdys būtų eismas, kuris vyksta tik viena kryptimi.
  • „Livelock“ pavyzdys galėtų būti du žmonės, kurie koridoriuje susitinka akis į akį, ir jie abu pasitraukia į šalį, kad praleistų kitą.
  • Badavimas yra situacija, kai visi žemo prioriteto procesai buvo užblokuoti, o aukšto prioriteto procesai vyksta.