2. Тупики, типы ресурсов для изучения тупиковых ситуаций, необходимые условия возникновения тупиков, стратегии предотвращения тупиков (спо)
Тупики и близкая к ним проблема бесконечного откладывания - важные факторы, которые должны учитывать разработчики ОС.
Тупик (deadlock) - это такая ситуация в мультипрограммной системе, когда процесс ожидает некоторого события, которое никогда не произойдет. Системная тупиковая ситуация, или “зависание” системы - это ситуация, когда один или более процессов оказываются в состоянии тупика.
При рассмотрении проблемы тупиков все ресурсы разделяются на два класса: повторно используемые (или системные) ресурсы (типа RR-reusable resource и SR-system resource) и потребляемые (или расходуемые) ресурсы (типа CR-consumable resource).
Повторно используемый ресурс (SR) есть конечное множество идентичных единиц со следующими свойствами:
число единиц ресурса постоянно;каждая единица ресурса или доступна, или распределена одному и только одному процессу (разделение либо отсутствует, либо не принимается во внимание, т.к. не оказывает влияния на распределение ресурсов и на возникновение тупиковой ситуации);
процесс может освободить единицу ресурса, только если он ранее получил эту единицу, т.е. никакой процесс не может оказывать какое-либо влияние ни на один ресурс, если он ему не принадлежит.Данное определение выделяет существенные для изучения тупиков свойства системных ресурсов, к которым относятся компоненты аппаратуры: основная память, внешняя память, периферийные устройства, процессы,- а также программное и информационное обеспечение: файлы данных, таблицы, разрешение войти в критическую секцию.
Расходуемый ресурс (CR) отличается от ресурса типа SR следующим:
число доступных единиц некоторого ресурса типа CR изменяется по мере того, как приобретаются и освобождаются отдельные их элементы выполняющимися процессами, и такое число единиц ресурса является неограниченным; процесс-производитель увеличивает число единиц ресурса, освобождая одну или более единиц, которые он создал;
процесс-потребитель уменьшает число единиц ресурса, сначала запрашивая и затем приобретая одну или более единиц. Единицы ресурса, которые приобретены не возвращаются ресурсу, а потребляются. Эти свойства потребляемых ресурсов присущи многим синхронизирующим сигналам, сообщениям и данным, порождаемым как аппаратурой, тай и программным обеспечением, и могут рассматриваться как ресурсы типа CR при изучении тупиков. В их число входят: прерывания от таймера и устройств ввода-вывода; сигналя синхронизации процессов; сообщения, содержащие запросы на различные виды обслуживания или данные.
В ОС тупики в большинстве случаев возникают при конкуренции процессов за выделение ресурсов последовательного доступа, которые в каждый момент времени отводятся только одному пользователю.
Близкая к проблеме возникновения тупиков - проблема бесконечного откладывания, когда предоставление запрашиваемого ресурса некоторому процессу будет откладываться на неопределенный срок, в то время, как система будет уделять внимание другим процессам. Напомним, что при разработке ОС необходимо предусматривать справедливое, а также эффективное управление процессами, находящимися в состоянии ожидания. В некоторых системах бесконечное откладывание предотвращается благодаря тому, что приоритет процесса увеличивается по мере того, как он ожидает выделения нужного ему ресурса. Это называется старением процесса.
Необходимые условия возникновения тупиков
Необходимые условия наличия тупика могут быть сформулированы следующим образом .
Условие взаимоисключения - когда процессы требуют предоставления им права монопольного управления ресурсами, которые им выделяются.
Условие ожидания ресурсов - когда процессы удерживают за собой ресурсы, уже выделенные им, ожидая в то же время выделения дополнительных ресурсов.
Условие неперераспределяемости - когда ресурсы нельзя отобрать у процессов, удерживающих их, пока эти ресурсы не будут использованы для завершения работы.
Условие кругового ожидания - когда существует кольцевая цепь процессов, в которой каждый процесс удерживает за собой один или более ресурсов, требующихся следующему процессу.
Борьба с возникновением тупиков может вестись по четырем основным направлением: предотвращение тупиков; обход тупиков; обнаружение тупиков; восстановление после тупиков.
Методы борьбы с тупиками
Проблема борьбы с тупиками становится актуальной и сложной по мере развития и внедрения параллельных вычислительных систем. При проектировании таких систем разработчики стараются проанализировать возможные неприятные ситуации, используя специальные модели и методы. Борьба с тупиковыми ситуациями основывается на одной из стратегий:
предотвращение тупика;
обход тупика;
обнаружение (распознавание) тупика с последующим восстановлением.
Стратегии предотвращения тупиков
При предотвращении тупиков целью является обеспечение условий, исключающих возможность возникновения тупиковых ситуаций. Часто такой подход ведет к нерациональному использованию ресурсов, но, тем не менее, достаточно часто используется разработчиками ОС.
Предотвращение можно рассматривать как запрет существования опасных состояний. Поэтому дисциплина, предотвращающая тупик, должна гарантировать, что какое-либо из четырех условий, необходимых для его наступления, не может возникнуть.
Каждый процесс должен запрашивать все требуемые ему ресурсы сразу, причем не может начать выполнение до тех пор, пока все они не будут ему предоставлены. Заметим, что такой стратегический принцип ведет в ряде случаев к снижению эффективности системы.
Условие взаимоисключения можно подавить путем разрешения неограниченного разделения ресурсов. Это удобно для повторно входимых программ и ряда драйверов, но неприемлемо к совместно используемым переменным в критических интервалах.
Условие ожидания можно подавить, предварительно выделяя ресурсы. При этом процесс может начать исполнение, только получив все необходимые ресурсы заранее. Следовательно, общее число затребованных параллельными процессами ресурсов должно быть не больше возможностей системы. Но предварительное выделение может привести к снижению эффективности работы вычислительной системы в целом. А также предварительное выделение не всегда возможно, т.к. необходимые ресурсы становятся известны процессу только после начала исполнения.
Условие отсутствия перераспределения можно исключить, позволяя ОС отнимать у процесса ресурсы. Для этого в ОС должен быть предусмотрен механизм запоминания состояния процесса с целью последующего восстановления.
Условие кругового ожидания можно исключить, предотвращая образование цепи запросов. Это можно обеспечить с помощью принципа иерархического выделения ресурсов. Процесс, затребовавший ресурс на одном уровне, может затем потребовать ресурсы только на более высоком уровне. Он может освободить ресурсы на данном уровне только после освобождения всех ресурсов на всех более высоких уровнях. После того как процесс получил, а потом освободил ресурсы данного уровня, он может запросить ресурсы на том же самом уровне. Т.о., создание замкнутой цепи исключается. Но такое распределение ресурсов не даст выигрыша, если порядок использования ресурсов, определенный в описании процессов, отличается от порядка уровней иерархии.
В целом стратегия предотвращения тупиков – очень дорогое решение, и она используется нечасто.
Обход тупиков
Обход тупика – это запрет входа в опасное состояние. Если ни одно из четырех условий не исключено, то вход в опасное состояние можно предотвратить при наличии у системы информации о последовательности запросов, связанных с каждым параллельным процессом.
Обнаружение тупиков. Графы распределения ресурсов
Обнаружение тупика - это установление факта, что возникла тупиковая ситуация, и определение процессов и ресурсов, вовлеченных в эту тупиковую ситуацию. Алгоритмы обнаружения тупиков, как правило, применяются в системах, где выполняются первые три необходимых условия возникновения тупиков, и определяют, не создался ли режим кругового ожидания
- 1. Автоматы и формальные языки. Классификация формальных языков и автоматов. Концепция порождения и распознавания. (та)
- 2. Технологические процессы изготовления печатных плат. (ктоп)
- 3. Прерывания в мпс. Типы прерываний. (мпс)
- 1. Регулярные языки и конечные автоматы. (та)
- 2. Индуктивные паразитные наводки в цепях эва. (ктоп)
- 3. Обмен информацией между микропроцессором и внешним устройством. (мпс)
- 1. Контекстно-свободные грамматики и магазинные автоматы. (та)
- 2. Эффективность электромагнитного экранирования. Расчёт электромагнитных экранов. (ктоп)
- 3. Система ввода-вывода. Параллельный порт. (мпс)
- 1. Произвольные автоматы и машина Тьюринга. (та)
- 2. Емкостные паразитные наводки в цепях эва. (ктоп)
- 3. Понятие «технология программирования». Характеристики качества программного обеспечения. Сложность по. Пути ограничения сложности. (тп)
- 1. Абстрактный синтез конечных автоматов. Минимизация и детерминация конечных автоматов. Автоматы Мили и Мура. (та)
- 2. Понятие надёжности электронного аппарата. Расчёт времени безотказной работы. (ктоп)
- 3. Модели жизненного цикла по. Методологии разработки сложных программных систем. Примеры «тяжелого» и «легкого» процесса. (тп)
- 1. Структурный автомат. Канонический метод структурного синтеза автоматов. Этапы синтеза. (та)
- 2. Конструкции корпусов эа и механизмы переноса тепла в них. (ктоп)
- 3. Универсальный язык моделирования uml, его назначение. Варианты использования. Диаграммы вариантов использования. Диаграммы классов. (тп)
- 1. Память структурного автомата. Элементы памяти. Триггеры. (та)
- 2. Роль стандартизации в технике конструирования. Применение ескд и естд. (ктоп)
- 3. Универсальный язык моделирования uml, его назначение. Диаграммы взаимодействия: последовательные и кооперативные. Применение этих диаграмм. (тп)
- Кооперативные диаграммы
- 1. Экспертный метод весовых коэффициентов важности. (моделирование)
- 2. Понятие вычислительного процесса и ресурса, классификация ресурсов, основные виды ресурсов. (спо)
- 3. Универсальный язык моделирования uml, его назначение. Диаграммы деятельности. Диаграммы состояний. Применение этих диаграмм. (тп)
- 1. Планирование и обработка результатов расслоенного (ступенчатого) эксперимента. (моделирование)
- 2. Процессы, состояния процесса, операции над процессами, планирование и диспетчеризация процессов. (спо)
- 3. Тестирование и отладка по. Основные принципы тестирования. Стратегии тестирования программных модулей. Методы структурного тестирования. (тп)
- 1. Полный факторный эксперимент (пфэ). (моделирование)
- 2. Параллельная обработка процессов, проблемы критических участков, взаимоисключения. Синхронизация параллельных процессов на низком уровне. (спо)
- 3. Тестирование по. Основные принципы тестирования. Структурное и функциональное тестирование. Методы функционального тестирования. (тп)
- 1. Модифицированный метод случайного баланса (ммсб). (моделирование)
- 2. Параллельная обработка процессов, проблемы критических участков, взаимоисключения. Синхронизация параллельных процессов на высоком уровне. (спо)
- 3. Эволюция технологий программирования. Структурное программирование. Объектно-ориентированное программирование. (тп)
- 1. Метод наименьших квадратов с предварительной ортогонализацией факторов (мнко). (моделирование)
- 2. Тупики, типы ресурсов для изучения тупиковых ситуаций, необходимые условия возникновения тупиков, стратегии предотвращения тупиков (спо)
- 3. Стадии разработки новой сапр и программного обеспечения сапр. (сапр)
- 1. Планирование второго порядка. Типы планов, их особенности.
- 2. Стратегии управления памятью: стратегии вталкивания, стратегии размещения, стратегии выталкивания. (спо)
- 3. Основная функция сапр. Классификация объектов сапр. (сапр)
- 1. Задача оптимизации. Метод крутого восхождения (Бокса-Уилсона). (моделирование)
- 2. Файловая система, функции файловой системы, состав файловой системы, архитектура, примеры современных файловых систем. (спо)
- 3. Виды и назначение составляющих компонентов сапр. Аннотация. (сапр)
- 1. Оптимизация в условиях ограничений. (моделирование)
- 2. Иерархия памяти. Эволюция видов организации памяти. Особенности страничной, сегментной и сегментно-страничной организации памяти. (спо) Иерархия памяти
- Эволюция видов организации памяти
- Сегментация
- Страничная организация памяти
- Комбинированная сегментно-страничная организация памяти
- 3. Моделирование в сапр. Виды моделей. Применение.
- 1. Цифровые интегральные микросхемы. Серии интегральных микросхем. Параметры цифровых имс. (схемотехника)
- 2. Концепция файловых систем fat32 и ntfs: структура логического диска, возможности, преимущества. (спо)
- 3. Метод конечных элементов. Особенности р- и h-версий. Применение. (сапр)
- 1. Базовые логические элементы (блэ). Параметры и характеристики блэ. (схемотехника)
- 2. Стандартный интерфейс ieее-1284. (ипу)
- 3. Графические стандарты сапр. Уровни связи. Международные организации, устанавливающие стандарты. (сапр)
- 1. Основные типы (технологии) базовых логических элементов. Сравнительная характеристика серий ттл, ттлш, кмоп, эсл, иил (схемотехника)
- 2. Стандартный интерфейс rs-232c. (ипу)
- 3. Основные концепции графического программирования в сапр. Краткий обзор (сапр)
- 2. Шина расширения eisa. (ипу)
- 3. Виртуальная инженерия. Понятие. Компоненты. (сапр)
- 1. Комбинационные схемы: шинный формирователь, схема сравнения, сумматоры. (схемотехника)
- 1) Шинный формирователь
- Сумматор Сумматор (англ. – adder) – цифровой узел, вычисляющий код арифметической суммы входных кодов. Сумматор с последовательным переносом
- 2. Организация стандартной шины pci. (ипу)
- 3. Типы данных сапр, поддерживаемых субд. Классификация. (сапр)
- 1. Триггеры. Принцип действия основных типов триггеров. (схемотехника)
- 2. Вид и организация устройств памяти. Интерфейсы устройств памяти. (ипу)
- 3. Базы данных сапр. Особенности хранения и применения. (сапр)
- 1. Счётчики. Основные типы счётчиков. (схемотехника)
- 2) Организация стандартной шины pci (ипу)
- 2. Интерфейсы графических адаптеров и мониторов. (ипу)
- 3. Общие принципы построения вычислительных сетей. Состав сети, квалификация вычислительных сетей. Топологии сетей. (сети)
- 1. Постоянное запоминающее устройство (пзу). Характеристика основных типов пзу. (схемотехника)
- 2. Параллельный интерфейс нжмд ата и его последовательная модернизация Serial ata. (ипу)
- 3. Модель osi. Уровни модели osi. Функции, выполняемые уровнями. (сети)
- 1. Оперативное запоминающее устройство (озу). Статическое и динамическое озу. (схемотехника)
- 2. Функциональное устройство звуковой карты, интерфейс midi, электромузыкальный цифровой синтезатор. (ипу)
- Стандарт на аппаратуру и программное обеспечение
- 3. Система передачи данных в сети. Типы линий связи. Основные характеристики каналов связи. (сети)
- 1. Буферная память типа fifo ("очередь") и lifo ("магазин"). (схемотехника)
- 2. Структура центрального процессора. Основные блоки. (мпс)
- 3. Кодирование информации. Виды кодов. Самосинхронизирующиеся коды. (сети)
- 1. Базовый принцип конструирования и конструктивные модули. (ктоп)
- 2. Традиционная архитектура мпс по принципам фон Неймана. (мпс)
- 3. Способы доступа к сети. Метод доступа опроса/выбора. Маркерный метод доступа. (сети)
- 1. Показатели качества конструкции. (ктоп)
- 2. Система ввода-вывода. Последовательный порт. (мпс)
- 3. Технологии локальных сетей. Сравнить особенности технологий Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, fddi. Оборудование локальных сетей. (сети)
- 1. Влияние внешних факторов на работу эа и методы борьбы с ними. (ктоп)
- 2. Типы памяти микропроцессора. Подключение памяти. (мпс)
- 3. Технологии глобальных сетей X.25, Frame Relay, атм. Формат блока данных. Основные процедуры, используемые протоколы. (сети)