Livelock: Mikä on, esimerkiksi ero umpikujaan

Sisällysluettelo:

Anonim

Mikä on Livelock?

Livelock on tilanne, jossa pyyntö yksinoikeudella lukko evätään toistuvasti, kuten monet päällekkäiset jaettu lukot pitää häiritsevät toisiaan. Prosessit muuttavat jatkuvasti tilaansa, mikä estää heitä edelleen suorittamasta tehtävää. Tämä estää heitä edelleen suorittamasta tehtävää.

Tässä käyttöjärjestelmän opetusohjelmassa opit:

  • Mikä on Livelock?
  • Esimerkkejä Livelockista
  • Mikä johtaa Livelockiin?
  • Mikä on umpikuja?
  • Esimerkki umpikujasta
  • Mikä on nälkä?
  • Ero umpikujaan, nälkään ja Livelockiin

Esimerkkejä Livelockista

Esimerkki 1:

Helpoin esimerkki Livelockista olisi kaksi ihmistä, jotka tapaavat kasvotusten käytävällä, ja molemmat siirtyvät sivuun päästääkseen toisen kulkemaan. He päätyvät liikkumaan puolelta toiselle edistymättä edeten samalla tavalla. Täällä he eivät koskaan ylitä toisiaan.

Esimerkki 2:

Yllä olevasta kuvasta näet, että molemmat annetut prosessit tarvitsevat kaksi resurssia, ja he yrittävät hankkia heille tarvittavat lukot primitiivisen polling enter -rekisterin avulla. Jos yritys epäonnistuu, menetelmä toimii uudelleen.

  1. Käsittele pito Y-resurssi
  2. Prosessi B sisältää resurssin X
  3. Prosessi A vaatii X-resurssin
  4. Prosessi B vaatii Y-resurssin

Oletetaan, että prosessi A kulkee ensin ja hankkii tietoresurssin X ja sitten prosessi B kulkee ja hankkii resurssin Y riippumatta siitä, mikä prosessi suoritetaan ensin, mikään niistä ei edisty.

Kumpikaan prosessista ei kuitenkaan ole estetty. He käyttävät CPU-resursseja toistuvasti ilman edistymistä, mutta myös lopettavat prosessointilohkot.

Siksi tämä ei ole umpikujan tilanne, koska ei ole olemassa yhtä prosessia, joka on estetty, mutta kohtaamme tilanteen, joka vastaa umpikujaa, joka on LIVELOCK.

Mikä johtaa Livelockiin?

Livelock tapahtuu, kun tietyssä järjestelmässä sallittujen prosessien kokonaismäärä tulisi määrittää prosessitaulukon merkintöjen kokonaismäärän perusteella. Siksi prosessitaulukoiden aikavälejä tulisi kutsua lopullisiksi resursseiksi.

Mikä on umpikuja?

Umpikuja on tilanne, joka tapahtuu käyttöjärjestelmässä, kun jokin prosessi siirtyy odotustilaan, koska toinen odotusprosessi pitää kiinni vaaditusta resurssista. Umpikuja on yleinen ongelma moniprosessoinnissa, jossa useat prosessit jakavat tietyn tyyppisen toisiaan poissulkevan resurssin, joka tunnetaan nimellä soft lock tai ohjelmisto.

Esimerkki umpikujasta

  • Todellinen esimerkki tästä olisi liikenne, joka kulkee vain yhteen suuntaan.
  • Tässä siltaa pidetään resurssina.
  • Joten, kun umpikuja tapahtuu, se voidaan helposti ratkaista, jos yksi auto varmuuskopioi (Ennakoi resurssit ja palautus).
  • Useat autot voidaan joutua varmuuskopioimaan, jos umpikujaan syntyy.
  • Joten nälkä on mahdollista.
Esimerkki umpikujasta

Mikä on nälkä?

Nälkä on tilanne, jossa kaikki matalan prioriteetin prosessit estettiin ja korkean prioriteetin prosessit etenevät. Kaikissa järjestelmissä korkean / matalan prioriteetin resursseja koskevat pyynnöt jatkuvat dynaamisesti. Siksi jotkut käytännöt edellyttävät päättää, kuka saa tukea milloin.

Joitakin algoritmeja käytettäessä jotkin prosessit eivät välttämättä saa toivottua huoltoa, vaikka ne eivät ole umpikujassa. Nälkää tapahtuu, kun jotkut säikeet tekevät jaetuista resursseista poissa käytöstä pitkäksi aikaa.

Esimerkki nälkään:

Esimerkiksi objekti tarjoaa synkronoidun menetelmän, jonka palauttaminen kestää todennäköisesti kauan. Jos yksi ketju käyttää tätä menetelmää usein, muut säikeet, jotka myös tarvitsevat usein synkronoitua pääsyä samaan objektiin, estetään usein.

Ero umpikujaan, nälkään ja Livelockiin

  • Umpikuja on tilanne, joka tapahtuu käyttöjärjestelmässä, kun mikä tahansa prosessi siirtyy odottavaan tilaan, koska vaadittu resurssi on toisen odotusprosessin hallussa.
  • Toisaalta elohopea on melkein samanlainen kuin umpikujaan, paitsi että henkivakuutukseen liittyvien prosessien tilat muuttuvat jatkuvasti toisistaan, yksikään ei edisty.
  • Joten Livelock on ainutlaatuinen tapaus resurssien nälkään.

Yhteenveto:

  • Määritelmä: Livelock on tilanne, jossa yksinoikeuslukituksen pyyntö hylätään toistuvasti, koska monet päällekkäiset jaetut lukot häiritsevät jatkuvasti toisiaan.
  • Livelock tapahtuu, kun tietyssä järjestelmässä sallittujen prosessien kokonaismäärä tulisi määrittää prosessitaulukon merkintöjen kokonaismäärän perusteella
  • Umpikuja on tilanne, joka tapahtuu käyttöjärjestelmässä, kun jokin prosessi siirtyy odotustilaan, koska toinen odotusprosessi pitää kiinni vaaditusta resurssista.
  • Todellinen esimerkki tästä olisi liikenne, joka kulkee vain yhteen suuntaan.
  • Esimerkki Livelockista olisi kaksi ihmistä, jotka tapaavat kasvotusten käytävällä, ja molemmat siirtyvät sivuun päästääkseen toisen kulkemaan.
  • Nälkä on tilanne, jossa kaikki matalan prioriteetin prosessit estettiin ja korkean prioriteetin prosessit etenevät.