- •2. Операционная система как расширенная машина
- •3. Операционная система как менеджер ресурсов
- •4. Обзор современных ос Операционные системы мэйнфреймов
- •Серверные операционные системы
- •Операционные системы для персональных компьютеров
- •Операционные системы реального времени
- •Встроенные операционные системы
- •Операционные системы для смарт-карт
- •5. Аппаратный состав персонального компьютера
- •6. Процессоры
- •7. Память
- •8. Устройства ввода-вывода
- •9. Шины
- •10. Понятия операционной системы
- •11. Процессы
- •12. Взаимоболокировка
- •13. Управление памятью.
- •14. Ввод-вывод данных
- •15. Файлы
- •16 Безопасность
- •17 . Оболочка.
- •18. Системный вызов
- •19. Windows Win32 api
- •20. Структура операционной системы
- •21 Монолитные системы
- •22 Многоуровневые системы
- •23. Виртуальные машины.
- •24. Экзоядро.
- •25. Модель клиент-сервис.
- •26. Модель процесса.
- •27 Создание процесса
- •28 Завершение процесса
- •29. Иерархия процессов
- •30. Состояние процессов
- •31. Реализация процессов
- •32. Потоки
- •33. Модель потока.
- •34. Использование потоков.
- •35. Реализация потоков в пространстве пользователя.
- •36. Реализация потоков в пространстве ядра.
- •37 Смешанная реализация
- •38 Активация планировщика
- •39 Всплывающие потоки
- •40 Состояние состязания
- •41. Критические области
- •42. Взаимное исключение с активным ожиданием
- •43. Примитивы межпроцессного взаимодействия
- •Проблема производителя и потребителя
- •44. Семафоры
- •45 Мьютексы
- •46 Монитор
- •47 .Передача сообщений
- •48. Барьеры
- •49. Сокеты
- •50. Планирование
- •52. Планирование в интерактивных системах
- •53. Планирование в системах реального времени
- •54.Политика и мезанизм.
- •57 Условие взаимоблокировки
- •58 Моделирование взаимоблокировок
- •59. Страусовский алгоритм
- •60. Обнаружение и устранение взаимоблокировок и обнаружение взаимоблокировки при наличии одного ресурса каждого типа
- •61. Обнаружение взаимоблокировок при наличии нескольких ресурсов каждого типа
- •1)Восстановление при помощи принудительной выгрузки ресурса
- •2) Восстановление путем уничтожения процессов
- •63. Избежание взаимоблокировок
- •64 Алгоритм банкира
- •65 Алгоритм банкира для несколько видов ресурсов
- •66. Предотвращение взаимоблокировок
- •67 Двухфазовое блокирование, тупики без ресурсов и голодание
- •68 Программный ввод-вывод
- •69: Управляемый прерываниями ввод-вывод
- •70: Ввод-вывод с использованием dma(Direct Memory Access).
- •71. Программные уровни ввода-вывода
- •72. Обработчики прерываний
- •73. Драйверы устройств
- •74. Аппаратная часть таймеров
- •75 Программное обеспечение таймеров
- •76 Мягкие таймеры
- •77. Транслятор
- •78. Компилятор
- •79 Понятие прохода. Многопроходный и однопроходные компиляторы
- •80 Интерпретаторы. Особенности построения интерпретаторов
- •81. Трансляторы с языка ассемблера („ассемблеры“ )
- •82.Макроопределения и макрокоманды
- •83. Отладчики
- •84. Компоновщик. Его назначение и функции
66. Предотвращение взаимоблокировок
Можно выявить взаимоблокировки на основании четырех условии взаимоблокировки. Для этого необходимо осуществить проверку условий взаимного исключения, удержания и ожидания, отсутствия принудительной выгрузки ресурсов, циклического ожидания.
Атака условия взаимного исключения
Если в системе нет ресурсов, отданных в единоличное пользование одному процессу, то система никогда не попадет в тупик. Если позволить двум процессам позволить одновременно печать данные на принтере, воцариться хаос. Используя подкачку данных для печати, несколько процессов могут одновременно генерировать свои данные. В такой ситуации только один процесс, фактически запрашивающий физически принтер, является демоном принтера. Так как демон не запрашивает никакие другие ресурсы, для принтера можно исключить тупики. К сожалению, не все устройства поддерживают подкачку данных (таблицу процессов невозможно подкачивать с диска). Кроме то- го, конкуренция за дисковое пространство для подкачки сама по себе может привести к тупику. Поэтому необходимо избегать выделения ресурса, когда это не является абсолютно необходимым, и необходимо обеспечить ситуацию, в которой претендовать на ресурс может минимальное количество процессов.
Вывод: Атака условия взаимного исключения предполагает организацию подкачки данных.
Атака условия удержания и ожидания
Каждый процесс должен запрашивать все необходимые ресурсы до начала работы. Если все ресурсы доступны, процесс получит все необходимы ресурсы и успешно завершит свою работу. Если один или несколько ресурсов заняты, процессу ничего не предоставляется, и он непременно попадает в состояние ожидания.
В данном случае возникают проблемы:
— отсутствия информации о количестве ресурсов необходимых для работы процессов до начала их работы;
— оптимального использования ресурсов.
Для того, чтобы избежать состояния взаимоблокировки некоторые операционные системы требуют задать список всех ресурсов необходимых для выполнения каждого задания. Еще один способ проверки состояния взаимоблокировки состоит в том, что запрашивающий процесс сначала временно освобождает все используемые им данный момент ресурсы, а затем этот процесс пытается сразу получить все необходимые ресурсы. Если ему это удается, взаимоблокировки — нет. В противном случае взаимоблокировка имеет место быть.
Вывод: Атака условия удержания и ожидания состоит в запросе всех ресурсов на начальной стадии.
Атака условия отсутствия принудительной выгрузки ресурсов
Попытка исключить третье условие подает еще меньше надежд, чем устранение второго условия. Если процесс получил принтер и в данный момент печатает выходные данные, насильственное изъятие принтера по причине недоступности требуемого плоттера в лучшем случае сложно, а в худшем — невозможно.
Вывод: Атака условия отсутствия принудительной выгрузки ресурсов означает, что необходимо отобрать ресурсы у процесса.
Атака условия циклического ожидания
Устранить четвертое условие можно несколькими способами:
— процессу дано право только на один ресурс в конкретный момент времени;
Если процессу необходим другой ресурс, то процесс обязан освободить первый.
— поддержка общей нумерации всех процессов.
Причем действует следующее правило: процессы могут запрашивать ресурс в любой момент времени, но все запросы должны быть сделаны в соответствии с нумерацией ресурсов. Увы бывают ситуации, когда невозможно найти порядок удовлетворяющий всех. Когда ресурсы включают в себя области таблицы процессов, дисковое пространство для подкачки данных, закрытые записи базы данных и другие абстрактные ресурсы, число потенциальных ресурсов и вариантов их применения может быть настолько огромным, что никакая систематизация не сможет работать.
Вывод: Атака условия циклического ожидания предполагает, что нужно пронумеровать ресурсы и их упорядочить.
Существует еще ряд алгоритмов планирования и тупиковых ситуаций, как двухфазовое блокирование, тупики без ресурсов и голодание.