Livelock: Jaký je, příklad, rozdíl s Deadlock

Co je Livelock?

A livelock je situace, kdy je požadavek na výhradní zámek opakovaně zamítnut, protože mnoho překrývajících se sdílených zámků se stále navzájem ruší. Procesy neustále mění svůj stav, což jim dále brání v dokončení úkolu. To jim dále brání v dokončení úkolu.

Příklady Livelocku

Příklad 1:

Nejjednodušším příkladem Livelocku by byli dva lidé, kteří se setkají tváří v tvář na chodbě a oba ustoupí, aby nechali toho druhého projít. Nakonec se pohybují ze strany na stranu, aniž by udělali jakýkoli pokrok, protože se v tu chvíli pohybovali stejným způsobem. Tady se nikdy nekříží.

Příklad 2:

Příklady Livelocku

Na obrázku výše můžete vidět, že každý ze dvou daných procesů potřebuje dva zdroje a používají primitivní dotazovací registr enter, aby se pokusil získat pro ně nezbytné zámky. Pokud se pokus nezdaří, metoda znovu funguje.

  1. Zdroj procesu A zadržování Y
  2. Proces B obsahuje zdroj X
  3. Proces A vyžaduje X zdroje
  4. Proces B vyžaduje zdroj Y

Za předpokladu, že proces A běží jako první a získává datový zdroj X a poté běží proces B a získává zdroj Y, bez ohledu na to, který proces běží jako první, žádný z nich dále nepostupuje.

Žádný z těchto dvou procesů však není blokován. Opakovaně spotřebovávají zdroje CPU, aniž by došlo k jakémukoli pokroku, ale také zastavují jakýkoli blok zpracování.

Tato situace tedy není situací a zablokování protože neexistuje jediný proces, který by byl blokován, ale čelíme situaci, která je ekvivalentní mrtvému ​​bodu, což je LIVELOCK.

Co vede k Livelocku?

Livelock nastane, když by celkový počet povolených procesů v konkrétním systému měl být definován celkovým počtem záznamů v tabulce procesů. Proto by měly být sloty tabulky procesů označovány jako konečné zdroje.

Co je Deadlock?

Zablokování je situace, ke které v OS dochází, když jakýkoli proces vstoupí do stavu čekání, protože jiný čekající proces zadržuje požadovaný zdroj. Zablokování je běžný problém v multiprocessingu, kde několik procesů sdílí specifický typ vzájemně se vylučujícího zdroje známého jako soft lock nebo software.

Příklad Deadlock

  • Příkladem v reálném světě by byla doprava, která jede pouze jedním směrem.
  • Zde je most považován za zdroj.
  • Když tedy dojde k zablokování, lze jej snadno vyřešit, pokud jedno auto couvá (Preempt resources and rollback).
  • Pokud dojde k uváznutí, může být nutné zálohovat několik vozů.
  • Hladovění je tedy možné.
Příklad Deadlock
Příklad Deadlock

Co je to hladovění?

Hladovění je situace, kdy jsou všechny procesy s nízkou prioritou zablokovány a procesy s vysokou prioritou pokračují. V každém systému se požadavky na zdroje s vysokou/nízkou prioritou neustále dějí dynamicky. Proto je třeba určit, kdo a kdy dostane podporu.

Při použití některých algoritmů nemusí některé procesy získat požadovanou službu, i když nejsou uvázlé. K hladovění dochází, když některá vlákna znepřístupní sdílené prostředky na dlouhou dobu.

Příklad hladovění

Například objekt nabízí synchronizovanou metodu, jejíž návrat bude pravděpodobně trvat dlouho. Pokud jedno vlákno používá tuto metodu často, ostatní vlákna, která také potřebují častý synchronizovaný přístup ke stejnému objektu, budou často zablokována.

Rozdíl mezi Deadlock, Hladověním a Livelockem

  • Zablokování je situace, ke které v OS dochází, když se jakýkoli proces dostane do stavu čekání, protože požadovaný zdroj je držen jiným čekajícím procesem.
  • Na druhé straně je živý blok téměř podobný mrtvému ​​bodu, až na to, že stavy procesů, které jsou součástí živého blokování, se vždy navzájem mění, žádný nepostupuje.
  • Livelock je tedy jedinečný případ nedostatku zdrojů.

Shrnutí

  • Definice: Livelock je situace, kdy je požadavek na exkluzivní zámek opakovaně zamítnut, protože mnoho překrývajících se sdílených zámků se stále navzájem ruší.
  • Livelock nastane, když by celkový počet povolených procesů v konkrétním systému měl být definován celkovým počtem záznamů v tabulce procesů
  • Zablokování je situace, ke které v OS dochází, když jakýkoli proces vstoupí do stavu čekání, protože jiný čekající proces zadržuje požadovaný zdroj.
  • Příkladem v reálném světě by byla doprava, která jede pouze jedním směrem.
  • Příkladem Livelocku by byli dva lidé, kteří se setkají tváří v tvář na chodbě a oba ustoupí, aby nechali toho druhého projít.
  • Hladovění je situace, kdy jsou všechny procesy s nízkou prioritou zablokovány a procesy s vysokou prioritou pokračují.

Denní zpravodaj Guru99

Začněte svůj den s nejnovějšími a nejdůležitějšími zprávami o umělé inteligenci, které vám přinášíme právě teď.