
- •8 Взаимодействие процессов 79
- •9 Синхронизация процессов 87
- •10 Тупиковые ситуации 101
- •11 Управление памятью 114
- •12 Управление виртуальной памятью 132
- •13 Интерфейс файловой системы 138
- •14 Некоторые аспекты Реализации файловой системы 156
- •Литература 166 введение
- •Понятие операционной системы
- •Контрольные вопросы
- •Организация компьютерной системы
- •Архитектура компьютера с общей шиной
- •Структура памяти
- •Структура ввода-вывода
- •Контрольные вопросы
- •Классификация Операционных Систем
- •Поддержка многопользовательского режима.
- •Поддержка многопоточности
- •Многопроцессорная обработка
- •Особенности областей использования
- •Контрольные вопросы
- •Функциональные компоненты операционной системы
- •Управление процессами
- •Управление памятью
- •Управление файлами и внешними устройствами
- •Безопасность и защита данных
- •Интерфейс прикладного программирования
- •Пользовательский интерфейс
- •Контрольные вопросы
- •Структура операционной системы
- •Монолитные системы
- •Многоуровневые системы
- •Виртуальные машины
- •Экзоядро
- •Модель клиент-сервер
- •Контрольные вопросы
- •Процессы и потоки
- •Концепция процесса
- •Состояния процесса
- •Реализация процессов
- •Операции над процессами
- •1Создание процессов
- •2Завершение процессов
- •Контрольные вопросы
- •Планирование процессора
- •Планирование процессов. Очереди
- •Планировщики
- •Моменты перепланировки. Вытеснение
- •Переключение контекста
- •Диспетчеризация
- •Критерии планирования процессора
- •Стратегии планирования процессора
- •3Планирование в порядке поступления
- •Пример.
- •4Стратегия sjf
- •5Приоритетное планирование
- •6Карусельная стратегия планирования
- •7Очереди с обратной связью
- •8Гарантированное планирование
- •9Лотерейное планирование
- •10Планирование в системах реального времени
- •Планирование потоков
- •Оценка алгоритмов планирования
- •11Детерминированное моделирование
- •12Моделирование очередей
- •13Имитация
- •Контрольные вопросы
- •Взаимодействие процессов
- •Разделяемая память. Проблема производителя и потребителя
- •Взаимодействие путем передачи сообщений
- •14Буферизация
- •15Исключительные ситуации
- •Потерянные сообщения
- •Вызов удаленных процедур (rpc)
- •Контрольные вопросы
- •Синхронизация процессов
- •Взаимное исключение и критические участки
- •Синхронизация с помощью элементарных приемов нижнего уровня
- •16Запрещение прерываний
- •17Переменные блокировки
- •18Операция проверки и установки
- •Семафоры
- •19Использование семафоров
- •20Реализация семафоров
- •21Тупики и зависания
- •Классические проблемы синхронизации
- •22Проблема ограниченного буфера
- •23Проблема читателей и писателей
- •24Задача об обедающих философах
- •Двоичные семафоры
- •Сигналы
- •Контрольные вопросы
- •Тупиковые ситуации
- •Необходимые условия возникновения тупиков
- •Граф выделения и закрепления ресурсов
- •Методы решения проблемы тупиков
- •25Предотвращение тупиков
- •Взаимное исключение
- •Захват и ожидание
- •Отсутствие перераспределения
- •Условие кругового ожидания
- •26Обход тупиков
- •27Простейший алгоритм обхода тупика
- •28Алгоритм банкира
- •29Обнаружение тупиков
- •30Восстановление после тупика
- •Контрольные вопросы
- •Управление памятью
- •Функции операционной системы по управлению памятью
- •Типы адресов
- •Физическое и логическое адресное пространство
- •Связывание адресов
- •Динамическая загрузка
- •Динамическое связывание
- •Перекрытие программ в памяти
- •Свопинг
- •Смежное размещение процессов
- •31Простое непрерывное распределение
- •32Распределение с несколькими непрерывными разделами
- •Фрагментация
- •Страничная организация памяти
- •Сегментная организация памяти
- •Защита и совместное использование
- •Фрагментация
- •Сегментация в сочетании со страничной памятью
- •Контрольные вопросы
- •Управление виртуальной памятью
- •Подкачка страниц
- •Алгоритмы вытеснения страниц
- •33Случайный выбор (Random)
- •34«Первым пришел первым ушел» (fifo)
- •35Вытеснение по давности использования (lru)
- •36Вытеснение редко используемых страниц (lfu)
- •37Оптимальный алгоритм (opt)
- •Аномалии в алгоритмах страничной реализации
- •38«Толкотня» в памяти
- •39Аномалия Биледи
- •Эффективность и применимость виртуальной памяти
- •Пример.
- •Контрольные вопросы
- •Интерфейс файловой системы
- •Понятие файла. Атрибуты файла и операции с файлами
- •Операции над файлами
- •Типы файлов
- •Структура файлов
- •Методы доступа
- •40Последовательный метод доступа
- •41 Прямой метод доступа
- •42Другие методы доступа
- •Каталоги
- •Логическая структура каталога
- •43Одноуровневая структура каталога
- •44Двухуровневая структура каталога
- •45 Древовидная структура каталога
- •46Организация каталога в виде графа без циклов
- •47Организация каталога в виде произвольного (простого) графа
- •Проблемы защиты файлов
- •48Типы доступа
- •49Списки прав доступа
- •50Другие подходы к защите
- •Контрольные вопросы
- •Некоторые аспекты Реализации файловой системы
- •Общая структура файловой системы
- •Методы выделения дискового пространства
- •51Выделение непрерывной последовательностью блоков
- •52Связный список
- •53Таблица отображения файлов
- •54Индексные узлы
- •Управление свободным и занятым дисковым пространством
- •55Учет при помощи организации битового вектора
- •56Учет при помощи организации связного списка
- •57Размер блока
- •58Структура файловой системы на диске
- •Контрольные вопросы Литература
29Обнаружение тупиков
За счет различных дорогостоящих вычислений можно установить, существуют ли процессы, находящиеся в состоянии тупика. Чтобы выполнить эти вычисления, ОС должна вести список тех ресурсов, которые ждет каждый заблокированный процесс, и список тех процессов, которые держат каждый недоступный ресурс. Алгоритм распознавания замкнутых цепей (Deadlock detection) можно выполнять с любой нужной частотой. Например, часто – всякий раз, когда запрос на ресурс отклоняется, или редко – раз в час или, когда загруженность СРU падает ниже некоторой критической величины (например ниже 40%).
Пусть:
Available – вектор длины т, определяющий количество допустимых экземпляров для каждого типа ресурсов.
Allocation – матрица размерностью п т, определяющая текущее закрепление ресурсов.
Reguest – матрица размерности п т, определяющая текущие запросы для всех процессов.
Если Reguesti j = k, это означает, что процесс Рi запрашивает k экземпляров ресурса Rj. Как и прежде, будем считать, что векторы Allocationi, Reguest эквивалентны строкам соответствующих матриц.
Алгоритм обнаружения тупиков может быть построен следующим образом.
Шаг 1. Пусть Work и Finish – векторы размерностью п и т соответственно. Инициализируем:
Work : = Available
Для i = 1, 2, … , n если Allocationi 0, то есть имеется какое-то отличное от нуля распределения ресурсов, тогда Finishi:=false , иначе Finishi:=true.
Шаг 2. Находим i такое, что одновременно Finish i: = false процесс не завершён и Reguesti Work запрос меньше, чем имеется в наличии
В том случае, если искомое i не существует, перейдем к шагу 4 .
Шаг 3.
Finish i : = true
Work : = Work + Allocationi
Перейдем к шагу 1.
Шаг 4.
Если Finish i : = false для некоторых i 1 , n , тогда система находится в тупике, и в тупиковую ситуацию вовлечены все процессы Рi, для которых имеет место Finish i : = false.
30Восстановление после тупика
Как только тупик выявлен, должно быть выполнено восстановление (Recovery from leadlock). Это обязательно вызовет перезапуск одного или более процессов. Процессы, находящиеся в тупике, были заблокированы в некоторой точке. Их нужно вернуть в те условия, в которых они могут возобновить свое исполнение. Для большинства процессов перезапуск возможен только с самого начала, и даже в этом случае могут возникнуть некоторые трудности. Процесс может сделать снимок своего исполнения, то есть запомнить информацию о своем состоянии в некоторой контрольной точке. В этом случае при повторном запуске этого процесса не требуется повторять все вычисления, предшествовавшие перераспределению. Контрольные точки обычно вводятся не для того, чтобы помочь восстановлению после тупика, а для того, чтобы продолжить исполнение после возникновения ошибки, особенно при выполнении длинных работ в системах реального времени.
После того, как обнаружена тупиковая ситуация возможны следующие альтернативы:
администратор/оператор информирует о тупиковой ситуации и вручную восстанавливает систему;
система восстанавливает автоматически
При автоматическом восстановлении возможно два подхода:
принудительно удаляются процессы находящиеся в тупике;
принудительно освобождаются ресурсы, закреплённые за одним или несколькими процессами, находящимися в тупике.
При принудительном удалении процессов используется один из двух сценариев:
а) удаляются все процессы, находящиеся в тупике,
б) процессы удаляются по одному. Перед удалением очередного процесса запускается алгоритм обнаружения тупиков.
Принудительное удаление не всегда безопасно для системы. Например, если процесс занимался обновлением файла, то его принудительное удаление приведет к тому, что файл хранит неверные/неактуальные данные.
При принудительном освобождении ресурсов необходимо решать три задачи:
а) Выбор процесса (Selection a victim). Иными словами, у какого процесса какие ресурсы должны быть отобраны.
б) Способ возврата процесса в исходное состояние (Rollback). Если ресурс принудительно отобран у процесса, что необходимо делать с этим процессом?
Наилучшее решение – вернуть процесс в такое состояние, когда возможно построение безопасной последовательности процессов. Однако часто процесс, у которого отобран ресурс, запускается заново
в) Предотвращение «наказания» одного и того процесса (Starvation). Чаще всего для того, чтобы не выбирался один и тот же процесс, в критерий выбора включают количество возвратов к исходному состоянию.