Livelock: mis on, näide, erinevus ummikseisust
Mis on Livelock?
A livelock on olukord, kus eksklusiivse luku taotlus lükatakse korduvalt tagasi, kuna paljud kattuvad jagatud lukud segavad üksteist pidevalt. Protsessid muudavad oma olekut pidevalt, mis takistab neil veelgi ülesande täitmist. See takistab neil veelgi ülesande täitmist.
Livelocki näited
Näide 1:
Lihtsaim näide Livelockist oleks kaks inimest, kes kohtuvad koridoris näost näkku ja mõlemad liiguvad kõrvale, et teine läbi lasta. Lõppkokkuvõttes liiguvad nad küljelt küljele ilma edusamme tegemata, kuna nad liiguvad sel ajal samamoodi. Siin ei ristu nad kunagi üksteisega.
Näide 2:
Ülaltoodud pildil näete, et kumbki kahest antud protsessist vajab kahte ressurssi ja nad kasutavad primitiivset küsitlust sisenemise registrisse, et proovida hankida neile vajalikke lukke. Kui katse ebaõnnestub, töötab meetod uuesti.
- Töötle A ootel Y ressurss
- Protsess B sisaldab ressurssi X
- Protsess A nõuab X ressurssi
- Protsess B nõuab Y ressurssi
Eeldusel, et protsess A käivitub kõigepealt ja hangib andmeressursi X ning seejärel protsess B jookseb ja hangib ressursi Y, olenemata sellest, milline protsess käivitatakse esimesena, ükski neist ei edene.
Kuid kumbki kahest protsessist pole blokeeritud. Nad kasutavad CPU ressursse korduvalt ilma edusamme, kuid peatavad ka igasuguse töötlemisploki.
Seetõttu ei ole see olukord a ummikseis sest pole ühtki blokeeritud protsessi, vaid seisame silmitsi olukorraga, mis on samaväärne ummikseisuga, milleks on LIVELOCK.
Mis viib Livelockini?
Reaalajas lukustamine toimub siis, kui lubatud protsesside koguarv konkreetses süsteemis tuleks määratleda protsessitabelis olevate kirjete koguarvuga. Seetõttu tuleks protsessitabeli pesasid nimetada piiratud ressurssideks.
Mis on tupik?
Ummik on olukord, mis tekib OS-is, kui mis tahes protsess läheb ooteolekusse, kuna teine ooteprotsess hoiab nõutavat ressurssi. Ummik on levinud probleem mitme töötluse puhul, kus mitu protsessi jagavad teatud tüüpi üksteist välistavaid ressursse, mida nimetatakse pehmeks lukuks või tarkvaraks.
Ummikseisu näide
- Reaalse maailma näide oleks liiklus, mis toimub ainult ühes suunas.
- Siin peetakse silda ressursiks.
- Seega, kui ummikseisu juhtub, saab selle hõlpsalt lahendada, kui üks auto varundab (ressursside ennetamine ja tagasipööramine).
- Ummikseisu korral võib tekkida vajadus varundada mitut autot.
- Nii et nälgimine on võimalik.

Mis on nälgimine?
Nälgimine on olukord, kus kõik madala prioriteediga protsessid blokeeruvad ja kõrge prioriteediga protsessid lähevad edasi. Igas süsteemis jätkuvad kõrge/madala prioriteediga ressursside taotlused dünaamiliselt. Seetõttu on vaja teatud poliitikat otsustada, kes millal toetust saab.
Mõningaid algoritme kasutades ei pruugi mõned protsessid soovitud teenindust saada, kuigi need pole ummikseisus. Nälgimine tekib siis, kui mõned lõimed muudavad jagatud ressursid pikemaks ajaks kättesaamatuks.
Näide nälgimisest
Näiteks pakub objekt sünkroonitud meetodit, mille tagastamine võtab tõenäoliselt kaua aega. Kui üks lõim kasutab seda meetodit sageli, blokeeritakse sageli ka teised lõimed, mis vajavad sagedast sünkroonitud juurdepääsu samale objektile.
Erinevus ummikseisu, nälgimise ja livelocki vahel
- Ummik on olukord, mis tekib OS-is, kui mis tahes protsess läheb ooteolekusse, kuna nõutud ressurssi hoiab teine ooteprotsess.
- Seevastu elavlukk on peaaegu sarnane ummikseisuga, välja arvatud see, et elavlukuga seotud protsesside olekud muutuvad alati üksteisega, ükski ei edene.
- Niisiis, Livelock on ainulaadne ressursside nälgimise juhtum.
kokkuvõte
- Definitsioon: Livelock on olukord, kus eksklusiivse luku taotlus lükatakse korduvalt tagasi, kuna paljud kattuvad jagatud lukud segavad üksteist pidevalt.
- Livelock tekib siis, kui lubatud protsesside koguarv konkreetses süsteemis tuleb määratleda protsessitabelis olevate kirjete koguarvuga
- Ummik on olukord, mis tekib OS-is, kui mis tahes protsess läheb ooteolekusse, kuna teine ooteprotsess hoiab nõutavat ressurssi.
- Reaalse maailma näide oleks liiklus, mis toimub ainult ühes suunas.
- Livelocki näide oleks kaks inimest, kes kohtuvad koridoris näost näkku ja mõlemad liiguvad kõrvale, et teine läbi lasta.
- Nälgimine on olukord, kus kõik madala prioriteediga protsessid blokeeruvad ja kõrge prioriteediga protsessid lähevad edasi.

