Livelock: Какво е, пример, разлика с Deadlock

Какво е Livelock?

A livelock е ситуация, при която заявка за изключително заключване се отказва многократно, тъй като много припокриващи се споделени ключалки продължават да си пречат. Процесите продължават да променят състоянието си, което допълнително им пречи да изпълнят задачата. Това допълнително им пречи да изпълнят задачата.

Примери за Livelock

Пример 1:

Най-лесният пример за Livelock би бил двама души, които се срещат лице в лице в коридора и двамата се отдръпват настрани, за да позволят на другия да мине. В крайна сметка те се движат от едната страна на другата, без да напредват, тъй като се движат по същия начин в момента. Тук те никога не се пресичат.

Пример 2:

Примери за Livelock

Можете да видите в изображението по-горе, всеки от двата дадени процеса се нуждае от два ресурса и те използват примитивния регистър за въвеждане на запитване, за да се опитат да получат необходимите за тях заключвания. Ако опитът е неуспешен, методът работи отново.

  1. Процес A задържа Y ресурс
  2. Процес B държи ресурс X
  3. Процес A изисква X ресурс
  4. Процес B изисква Y ресурс

Ако приемем, че процес A се изпълнява първо и придобива ресурс от данни X и след това процес B се изпълнява и придобива ресурс Y, без значение кой процес се изпълнява първи, никой от тях не напредва по-нататък.

Въпреки това нито един от двата процеса не е блокиран. Те използват ресурсите на процесора многократно, без да се постигне никакъв напредък, но също така спират всеки блок за обработка.

Следователно тази ситуация не е тази на a задънена улица тъй като няма нито един блокиран процес, но се сблъскваме със ситуацията, еквивалентна на безизходица, което е LIVELOCK.

Какво води до Livelock?

Livelock възниква, когато общият брой разрешени процеси в конкретна система трябва да бъде определен от общия брой записи в таблицата с процеси. Следователно слотовете на таблицата на процесите трябва да се наричат ​​крайни ресурси.

Какво е Deadlock?

Блокирането е ситуация, която възниква в ОС, когато който и да е процес влезе в състояние на изчакване, защото друг изчакващ процес държи искания ресурс. Deadlock е често срещан проблем при многопроцесорна обработка, където няколко процеса споделят специфичен тип взаимно изключващ се ресурс, известен като меко заключване или софтуер.

Пример за безизходица

  • Пример от реалния свят би бил трафикът, който се движи само в една посока.
  • Тук един мост се счита за ресурс.
  • Така че, когато се случи безизходица, тя може лесно да бъде разрешена, ако една кола направи резервно копие (предварително изземване на ресурси и връщане назад).
  • Може да се наложи няколко автомобила да бъдат резервни, ако възникне ситуация на безизходица.
  • Така че гладуването е възможно.
Пример за безизходица
Пример за безизходица

Какво е гладуване?

Гладът е ситуация, при която всички процеси с нисък приоритет са блокирани, а процесите с висок приоритет продължават. Във всяка система заявките за ресурси с висок/нисък приоритет продължават да се случват динамично. Следователно е необходима някаква политика, за да се реши кой кога да получи подкрепа.

Използвайки някои алгоритми, някои процеси може да не получат желаното обслужване, въпреки че не са блокирани. Глад възниква, когато някои нишки направят споделените ресурси недостъпни за дълъг период от време.

Пример за гладуване

Например обект предлага синхронизиран метод, който вероятно ще отнеме много време, за да се върне. Ако една нишка използва този метод често, други нишки, които също се нуждаят от чест синхронизиран достъп до същия обект, често ще бъдат блокирани.

Разлика между Deadlock, Starvation и Livelock

  • Блокирането е ситуация, която възниква в ОС, когато който и да е процес влезе в състояние на изчакване, тъй като исканият ресурс се държи от друг изчакващ процес.
  • Livelock, от друга страна, е почти подобен на безизходна блокировка, с изключение на това, че състоянията на процесите, които участват в livelock, винаги продължават да се променят едно към друго, нито едно не напредва.
  • И така, Livelock е уникален случай на ресурсен глад.

Oбобщение

  • Определение: Livelock е ситуация, при която заявка за изключително заключване се отказва многократно, тъй като много припокриващи се споделени ключалки продължават да си пречат.
  • Livelock възниква, когато общият брой разрешени процеси в конкретна система трябва да бъде определен от общия брой записи в таблицата с процеси
  • Блокирането е ситуация, която възниква в ОС, когато който и да е процес влезе в състояние на изчакване, защото друг изчакващ процес държи искания ресурс.
  • Пример от реалния свят би бил трафикът, който се движи само в една посока.
  • Пример за Livelock би бил двама души, които се срещат лице в лице в коридор и двамата се отдръпват настрани, за да позволят на другия да мине.
  • Гладът е ситуация, при която всички процеси с нисък приоритет са блокирани, а процесите с висок приоритет продължават.