Различия (если таковые имеются) между livelock и голоданием в операционных системах - PullRequest
8 голосов
/ 20 июня 2011

Каковы различия (если таковые имеются) между starvartion и livelock или просто они используются синонимы? Если есть разница, пожалуйста, предоставьте пример.

Примечание: я видел википедию ... но запутался ...

Спасибо

Ответы [ 3 ]

12 голосов
/ 20 июня 2011

Livelock - это особый случай нехватки ресурсов, когда два процесса следуют алгоритму устранения тупика, который приводит к циклу различных заблокированных состояний, поскольку каждый процесс пытается использовать одну и ту же стратегию, чтобы избежать блокировки.

Само голодание может происходить для одного процесса без циклической блокировки другого процесса; в этом случае не существует живой блокировки, только один неудачный процесс, который не получает ресурсы, выделенные планировщиком.

1 голос
/ 19 марта 2014

Голод и Живая блокировка

Голод и живая блокировка - гораздо менее распространенная проблема, чем взаимоблокировка, но все же это проблемы, с которыми может столкнуться каждый разработчик параллельного программного обеспечения.

Голодание

Под голоданием описывается ситуация, когда поток не может получить регулярный доступ к общим ресурсам и не может добиться прогресса. Это происходит, когда «жадные» потоки делят общие ресурсы недоступными в течение длительного времени. Например, предположим, что объект предоставляет синхронизированный метод, который часто занимает много времени для возврата. Если один поток часто вызывает этот метод, другие потоки, которым также требуется частый синхронизированный доступ к тому же объекту, часто блокируются.

* 1014 динамический тупик *

Поток часто действует в ответ на действие другого потока. Если действие другого потока также является ответом на действие другого потока, то может возникнуть прямая блокировка. Как и в случае взаимоблокировки, потоки с блокировкой в ​​реальном времени не могут добиться дальнейшего прогресса. Однако потоки не блокируются - они просто слишком заняты, отвечая друг другу, чтобы возобновить работу. Это сравнимо с двумя людьми, пытающимися обойти друг друга в коридоре: Альфонс движется налево, чтобы пропустить Гастона, а Гастон движется вправо, чтобы пропустить Альфонса. Видя, что они все еще блокируют друг друга, Альфон двигается вправо, а Гастон - слева. Они все еще блокируют друг друга, так что ...

1 голос
/ 09 июля 2012

Голодание задача с низким приоритетом выполняется для процессора из-за постоянного поступления задачи с высоким приоритетом.Это может быть решено методом приоритетного наследования. * 1004 динамический тупик *когда две задачи не показывают прогресса из-за зависимости между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...