Рекомендуем, 2020

Выбор редакции

Разница между тупиком и голоданием в ОС

Deadlock и Starvation - это условия, при которых процессы, запрашивающие ресурс, задерживаются на долгое время. Хотя тупик и голод оба отличаются друг от друга во многих аспектах. Тупиковая ситуация - это состояние, при котором ни один процесс не продолжается для выполнения, и каждый ожидает ресурсов, которые были получены другими процессами. С другой стороны, в процессе голодания процесс с высокими приоритетами постоянно использует ресурсы, предотвращающие процесс с низким приоритетом, для получения ресурсов. Давайте обсудим еще несколько различий между тупиком и голодом с помощью сравнительной таблицы, показанной ниже.

Сравнительная таблица

Основа для сравнениятупикголодание
основнойВ тупике нет процесса, и он блокируется.При голодании блокируются процессы с низким приоритетом, а процесс с высоким приоритетом продолжается.
Возникающее состояниеВозникновение взаимного исключения, удержание и ожидание, отсутствие вытеснения и циркулярное ожидание одновременно.Исполнение приоритетов, неконтролируемое управление ресурсами.
Другое имяКруговое ожидание.Lifelock.
РесурсыВ заблокированном состоянии запрашиваемые ресурсы блокируются другими процессами.В условиях истощения запрашиваемые ресурсы постоянно используются процессами с высоким приоритетом.
профилактикаПредотвращение взаимного исключения, удержания и ожидания, а также кругового ожидания и разрешения упреждения.Старение.

Определение тупика

Deadlock - это ситуация, когда несколько процессов в CPU конкурируют за конечное число ресурсов, доступных в CPU. Здесь каждый процесс содержит ресурс и ожидает получения ресурса, который удерживается каким-либо другим процессом. Все процессы ждут ресурсов по кругу. На изображении ниже вы видите, что Процесс P1 получил ресурс R2, который запрашивается процессом P2, а Процесс P1 запрашивает ресурс R1, который снова удерживается R2. Так что процессы P1 и P2 образуют тупик.

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

  • Взаимное исключение: только один процесс за раз может использовать ресурс, если другой процесс запрашивает тот же ресурс, он должен ждать, пока процесс, использующий ресурс, освободит его.
  • Удержание и ожидание. Процесс должен удерживать ресурс и ожидать получения другого ресурса, который удерживается каким-либо другим процессом.
  • Без выкупа: процесс, содержащий ресурсы, не может быть прерван. Процесс, удерживающий ресурс, должен добровольно освободить ресурс, когда он выполнил свою задачу.
  • Циркулярное ожидание: процесс должен ожидать ресурсов по кругу. Предположим, у нас есть три процесса {P0, P1, P2}. P0 должен дождаться ресурса, удерживаемого P1; P1 должен ждать, чтобы получить ресурс, удерживаемый процессом P2, и P2 должен ждать, чтобы получить процесс, удерживаемый P0.

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

Определение Голодания

Истощение можно определить, когда запрос процесса на ресурс и этот ресурс непрерывно используется другими процессами, тогда запрашивающий процесс сталкивается с голоданием. В голодном состоянии процесс, готовый к выполнению, ожидает, пока ЦП выделит ресурс. Но процесс должен ждать бесконечно, поскольку другие процессы постоянно блокируют запрашиваемые ресурсы.

Проблема голодания обычно возникает в алгоритме приоритетного планирования . В алгоритме планирования приоритетов процессу с более высоким приоритетом всегда выделяется ресурс, не позволяющий процессу с более низким приоритетом получить запрошенный ресурс.

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

Ключевые различия между тупиком и голоданием в ОС

  1. В тупике ни один из процессов не продолжает выполнение, каждый процесс блокируется в ожидании ресурсов, полученных другим процессом. С другой стороны, голодание - это состояние, при котором процессам, которые обладают более высоким приоритетом, разрешено получать ресурсы непрерывно, предотвращая процессы с низким приоритетом, чтобы получать ресурсы, что приводит к неограниченной блокировке процессов с низким приоритетом.
  2. Тупик возникает, когда одновременно возникают четыре условия: взаимное исключение, удержание и ожидание, отсутствие вытеснения и циклическое ожидание . Однако голодание происходит, когда приоритеты процесса были применены при распределении ресурсов, или в системе существует неконтролируемое управление ресурсами.
  3. Тупик часто называют циклическим ожиданием, тогда как голодание называется живым замком .
  4. В тупике ресурсы блокируются процессом, в то время как при голодании процессы постоянно используются процессами с высокими приоритетами.
  5. Взаимная блокировка может быть предотвращена путем исключения условий, таких как взаимное исключение, удержание и ожидание и циклическое ожидание, а также путем прерывания процессов, которые удерживают ресурсы в течение длительного времени. С другой стороны, голод может быть предотвращен старением .

Заключение:

И Deadlock, и Starvation задерживают выполнение процесса, блокируя его. С одной стороны, когда тупик может привести к голоданию процессов, а с другой стороны, голод может вывести процессы из тупика.

Top