Тупик против голодания
Основное различие между тупиком и голоданием заключается в причинно-следственной связи между ними; это тупик, который вызывает голод. Еще одно интересное различие между тупиком и голоданием заключается в том, что тупик - это проблема, в то время как голодание иногда может помочь выйти из тупика. В компьютерном мире при написании компьютерной программы будет более одного процесса/потока, которые будут одновременно запускаться один за другим, чтобы выполнить требуемую услугу для программы. Следовательно, чтобы иметь справедливую систему, программист должен убедиться, что все процессы/потоки получат или получат достаточный доступ к необходимым им ресурсам. Если нет, то возникнет тупик, а позже это приведет к голоданию. Как правило, честная система не содержит тупиковых ситуаций или голодания. Взаимоблокировки и голодание будут возникать в основном тогда, когда множество потоков конкурируют за ограниченные ресурсы.
Что такое тупик?
Взаимоблокировка - это состояние, возникающее, когда два потока или процесса ждут друг друга для завершения задачи. Они только повесят трубку, но никогда не остановятся и не закончат свою задачу. В информатике взаимоблокировки можно увидеть повсюду. В базе данных транзакций, когда два процесса, каждый в своей собственной транзакции, обновляют одни и те же две строки информации, но в противоположном порядке, это вызовет взаимоблокировку. В параллельном программировании может возникнуть взаимоблокировка, когда два конкурирующих действия будут ждать друг друга для продолжения. В телекоммуникационных системах взаимоблокировка может произойти из-за потери или искажения сигналов.
В настоящее время взаимоблокировка является одной из основных проблем в многопроцессорных системах и параллельных вычислениях. В качестве решения реализована система блокировки, называемая синхронизацией процессов, как для программного, так и для аппаратного обеспечения.
Что такое голодание?
Согласно словарю медицинской науки, голодание является результатом резкого или полного отсутствия питательных веществ, необходимых для поддержания жизни. Точно так же в информатике голодание - это проблема, возникающая, когда несколько потоков или процессов ожидают одного и того же ресурса, что называется взаимоблокировкой.
Чтобы выйти из тупика, один из процессов или потоков должен отказаться или выполнить откат, чтобы другой поток или процесс мог использовать ресурс. Если это происходит постоянно, и один и тот же процесс или поток должен каждый раз сдаваться или выполнять откат, позволяя другим процессам или потокам использовать ресурс, тогда выбранный процесс или поток, для которого выполнен откат, будет подвергаться ситуации, называемой голоданием. Поэтому, чтобы выйти из тупика, одним из решений является голодание. Поэтому иногда голодание называют разновидностью живодерни. Когда есть много процессов или потоков с высоким приоритетом, процесс или поток с более низким приоритетом всегда будут голодать в тупике.
Может быть много зависаний, таких как голодание по ресурсам и голодание по ЦП. Есть много общих примеров голодания. Это проблема читателей-писателей и проблема обедающих философов, которая более известна. За круглым столом с тарелками спагетти сидят пятеро молчаливых философов. Вилки располагаются между каждой парой соседних философов. Каждый философ должен попеременно думать и есть. Однако философ может есть спагетти только тогда, когда у него есть и левая, и правая вилки.
«Обедающие философы»
В чем разница между Deadlock и Starvation?
Процесс:
• В тупиковой ситуации два потока или процесса будут ожидать друг друга, и оба не будут двигаться вперед.
• В состоянии голодания, когда два или более потока или процесса ожидают одного и того же ресурса, один из них откатится и позволит другим использовать ресурс первым, а затем голодающий поток или процесс попытается повторить попытку. Поэтому все потоки или процессы так или иначе будут продолжаться.
Откат:
• В тупиковой ситуации как потоки/процессы с высоким приоритетом, так и потоки/процессы с низким приоритетом будут бесконечно ждать друг друга. Это никогда не заканчивается.
• Но при голодании низкоприоритетные будут ждать или откатываться, а высокоприоритетные продолжат работу.
Ожидание или блокировка:
• Тупик - это циклическое ожидание.
• Голодание является своеобразным замком и иногда помогает выйти из тупика.
Тупик и Голод:
• Тупик вызывает голодание, но голодание не вызывает взаимоблокировки.
Причины:
• Возникнет взаимоблокировка из-за взаимного исключения, удержания и ожидания, отсутствия вытеснения или циклического ожидания.
• Голодание возникает из-за нехватки ресурсов, бесконтрольного управления ресурсами и приоритетов процессов.
Обзор:
Тупик против голодания
Взаимоблокировка и голодание - это некоторые из проблем, возникающих из-за гонок данных и состояний гонок, которые возникают во время программирования, а также при реализации оборудования. В тупиковой ситуации два потока будут бесконечно ждать друг друга без выполнения, в то время как в голодной ситуации один поток откатится и позволит другому потоку использовать ресурсы. Взаимная блокировка вызовет голодание, тогда как голодание поможет потоку выйти из тупика.