Какие отрицательные явления могут возникнуть при совместной работе нескольких параллельно выполняемых задач?

STARVATION. В булочной у кассы стоит продавец. Некоторое количество людей хочет купить хлеба. Одновременно обслуживается только один человек. Из-за скученности покупателей и из-за каких-либо персональных симпатий продавца, он может постоянно пропускать людей(процессы) вперед. Тогда возникает проблема равноправного распределения ресурса хлеб, ведь будет кто-то, кому придется вечно ждать. Такой процесс зависает(starvation). Чтобы этого не случилось следует выстраивать процессы в очередь.

NONDETERMINISM. На счету в банке лежат 100 рублей(ресурс). Банкоматы, магазины, банки(процессы) могут снять деньги с этого счета. Банкомат(процесс А) посылает запрос "есть 100 рублей?". Если получает ответ, что есть, то посылает запрос "дай 100 рублей". Но это плохая стратегия, так как возможно что некий процесс Б уже снял деньги и на счету пусто. Или если два процесса хотят одновременно снять деньги с счета — непонятно, какому процессу отдать предпочтение. Это явление называется недетерминизм (nondeterminism), когда неизвестно, какой именно процесс первым достигнет ресурса, изменит переменную money на нашем счету. Когда именно процесс достигнет русурса предугадать невозможно.

DEADLOCK. Процесс А и процесс Б решили провести отпуск в горах. Для этого им необходима машина и лыжи(ресурсы). Есть возможность отдолжить только одни лыжи и одну машину. Если процесс получит машину и лыжи, то отправится в отпуск, а другой процесс будет ждать его возвращения, чтобы получить лыжи и машину. Если же один процесс получит лыжи, а другой машину, то оба будут ждать недостающего снаряжения и никто(никогда) не поедет в отпуск. Возникает взаимоблокировка (deadlock), когда каждый процесс ждет освобождения ресурса используемого другим процессом.

LIVELOCK. Ситуация похожа на deadlock за исключением того, что процессы поочередно занимают процессор, но не имеют возможности дальнейшего продвижения в работе (Пример: два вежливых человека у узкого прохода).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: