- •Тема: Обработка прерываний
- •Тема Обслуживание ввода-вывода
- •Основные понятия и концепции организации ввода/вывода в ос
- •Основные системные таблицы ввода/вывода
- •2. Таблица описания виртуальных логических устройств.
- •3. Таблица прерываний.
- •Очередь запросов ввода-вывода. Алгоритм обработки прерываний по вводу-выводу.
- •Тема: Тупики и методы борьбы с ними
- •1. Граф распределения ресурсов
- •3. Вычислительные схемы
- •Тема Защищенность и отказоустойчивость операционных систем
3. Таблица прерываний.
Необходима для организации обратной связи между центральной частью и устройствами ввода/вывода. Она, указывает для каждого сигнала запроса на прерывание тот элемент UCB, который сопоставлен данному устройству, подключенному так, что оно использует настоящую линию (сигнал) прерывания. Как системная таблица ввода/вывода, таблица прерываний может в явном виде и не присутствовать.
В современных сложных ОС имеется гораздо больше системных таблиц или списков, используемых для организации процессами управления операциями ввода/вывода. Например, одной из возможных и часто реализуемых информационных структур, сопровождающих практически каждый запрос на ввод/вывод, является блок управления данными (data control block, DCB). Назначение этого DCB — подключение препроцессоров к процессу подготовки данных на ввод/вывод, то есть учет конкретных технических характеристик и используемых преобразований. Это необходимо для того, чтобы имеющееся устройство получало не какие-то непонятные ему коды либо форматы данных, которые не соответствуют режиму его работы, а коды, созданные специально под данное устройство и используемый в настоящий момент формат представления данных.
Очередь запросов ввода-вывода. Алгоритм обработки прерываний по вводу-выводу.
Система прерыванийпозволяет компьютеру реагировать на внешние события, синхронизировать выполнение процессов и работу устройств ввода-вывода, быстро переходить с одной программы на другую.
Механизм прерываний нужен для того, чтобы оповестить процессор о возникновении в вычислительной системе некоторого непредсказуемого события или события, которое не синхронизировано с циклом работы процессора.
Примерами таких событий могут служить завершение операции ввода-вывода внешним устройством (например, запись блока данных контроллером диска), некорректное завершение арифметической операции (например, переполнение регистра), истечение интервала астрономического времени. При возникновении условий прерывания его источник (контроллер внешнего устройства, таймер, арифметический блок процессора и т. п.) выставляет определенный электрический сигнал. Этот сигнал прерывает выполнение процессором последовательности команд, задаваемой исполняемым кодом, и вызывает автоматический переход на заранее определенную процедуру, называемую процедурой обработки прерываний.
В большинстве моделей процессоров отрабатываемый аппаратурой переход на процедуру обработки прерываний сопровождается заменой слова состояния машины (или даже всего контекста процесса), что позволяет одновременно с переходом по нужному адресу выполнить переход в привилегированный режим. После завершения обработки прерывания обычно происходит возврат к исполнению прерванного кода. Прерывания играют важнейшую роль в работе любой операционной системы, являясь ее движущей силой.
Тема: Тупики и методы борьбы с ними
Процессы и потоки управления — активные объекты. Ресурсы — неактивные объекты (процессор — вытесняемый ресурс, дисковое пространство — невытесняемый ресурс). Во время своей работы процесс (поток управления) может попасть в два неприятных состояния: зависание и тупик.
Зависание— состояние неопределенного ожидания, из которого рано или поздно процессы выходят. Связано с ожиданием каких-либо ресурсов.
Тупик— состояние ожидания некоторого события, которое никогда не произойдет (как правило, это круговое ожидание ресурсов).
Система находится в тупиковой ситуации, если один или более процессов находятся в состоянии тупика.
Существуют четыре необходимых условия для возникновения тупика:
Условие взаимоисключения(процессы требуют монопольного владения ресурсами, им предоставляемыми).
Условие ожидания(процессы удерживают уже выделенные им ресурсы, ожидая выделения дополнительных).
Условие нераспределяемости(ресурсы нельзя отобрать у удерживающих их процессов, пока они не будут использованы).
Условие кругового ожидания(существует кольцевая цепь процессов, в которой каждый процесс удерживает за собой один или более ресурсов, требующихся следующему процессу).
Существует четыре основных стратегии работы с тупиками.
1. Полное игнорирование проблемы("алгоритм страуса"). В большинстве своем реальные операционные системы не осуществляют борьбу с тупиками, поскольку ресурсов и так достаточно много.
2. Предотвращение тупиков (prevention)— подход, цель которого обеспечение условий, исключающих возможность возникновения тупиковой ситуации. Чтобы предотвратить тупик, достаточно нарушить хотя бы одно необходимое условие.
Первое условие (взаимоисключение) вполне естественно (например, для такого устройства, как накопитель на магнитной ленте).
Нарушая второе условие (ожидание), процесс должен сразу запросить все ресурсы. Эффективность системы при этом может значительно ухудшиться. В качестве компромиссного решения можно предложить разделять процесс на шаги.
Нарушить третье условие (нераспределяемость) можно следующим образом. Процесс, удерживающий ресурсы и получивший отказ на другие ресурсы, должен освободить все взятые ресурсы, и через некоторое время запросить их заново. При этом процесс может потерять большую часть проделанной работы.
Нарушая четвертое условие (кругового ожидания), следует ввести линейную упорядоченность ресурсов, пронумеровав их, и выдавать их в порядке, не допускающим возникновение кругового ожидания. Данный подход требует значительных накладных расходов на хранение информации, связанной с типами ресурсов и упорядоченностью экземпляров ресурсов.
3. Обход тупиков (avoidance) — подход, который обеспечивает рациональное распределение ресурсов по рациональным правилам. Он вводит менее жесткие ограничения, чем предыдущий подход. Наиболее известным методом обхода тупиков является алгоритм банкира:
Алгоритм банкира имитирует действия банкира, располагающего определенным источником капитала, выдающего ссуды и принимающего платежи. Алгоритм был предложен Дейкстрой.
Состояние системы будем называть надежным, если операционная система может обеспечить всем пользователям завершение их задач в течение конечного промежутка времени. Суть алгоритма в том, что система удовлетворяет только те запросы, при которых ее состояние остается надежным. Остальные запросы откладываются.
Существуют два основных ограничения этого подхода: каждый процесс заранее должен указать максимальное количество ресурсов, которое ему понадобится и в каждый момент процесс должен захватывать только один ресурс. Данный алгоритм на практике неприменим из-за его неэффективности, т. к. необходимость в пересчете возникает непрерывно, при каждом поступлении процесса в систему и его удалении для каждой разновидности ресурсов.
4. Обнаружение тупиков (detection)— подход, который допускает возникновение тупиков, определяет процессы и ресурсы, которые вовлечены в тупиковую ситуацию, и пытается вывести систему из нее.
Для анализа свойств асинхронных процессов (в частности, для обнаружения тупиков) используются графические модели, которые мы сейчас рассмотрим.
