
- •Вопрос1. Понятие программного обеспечения (по). Классификация программного обеспечения по выполняемым функциям. Основные свойства системного программного обеспечения и структура системного по.
- •Вопрос 2 .Операционные системы как ядро системного программного обеспечения
- •1)Управление процессами (программ во время выполнения);
- •Вопрос3 Классификация ос (по структуре и архитектурным принципам построения, по режимам работы). Примеры.
- •4) Общие принципы построения ос. Основные характеристики современных ос. Примеры реализации общих принципов и особенности организации и функционирования ос.
- •Вопрос 5. Определение и классификация ресурсов
- •Вопрос 6.Определение и классификация процессов. Примеры. Процессы и потоки.
- •Вопрос 7. Состояние процессов и функции ос по управлению процессами. Задачи, решаемые ос при реализации функций. Примеры решения.
- •Вопрос 8 . Проблема взаимного исключения. Понятие критической секции, её свойства, условия реализации. Примеры.
- •Вопрос 9. Программные методы реализации взаимного исключения. Примеры.
- •Вопрос 10. Понятие семафора, семафорные примитивы. Примеры объектов диспетчеризации в ms Windows, которые могут использоваться как «семафоры».
- •Вопрос 11. Применение бинарных семафоров для реализации взаимного исключения и синхронизации процессов.
- •Вопрос 12. Общие семафоры, решение задачи «писателей и читателей» при работе с циклическим буфером.
- •Вопрос 13. Проблема тупика и задачи, связанные с решение проблемы тупика. Примеры.
- •Вопрос 14. Задача предотвращения тупика, подходы к решению. Примеры.
- •Вопрос 15. Математическая модель для определения тупика. Определение заблокированных процессов, процессов, находящихся в тупике. Определение состояния тупика. Понятие выгодного состояния. Примеры.
- •Вопрос 16. Модель системы с повторно используемыми ресурсами (граф повторно используемых ресурсов). Примеры.
- •Вопрос 17. Модель системы с потребляемыми ресурсами (граф потребляемых ресурсов). Примеры.
- •Вопрос 18. Система с повторно используемыми и потребляемыми ресурсами (граф обобщённых ресурсов). Примеры.
- •Вопрос 19. Решение задачи распознавания тупика для систем с повторно используемыми ресурсами: основная теорема о тупике. Примеры редукции.
- •Вопрос 21. Распознавание тупиков в системах с повторно используемыми ресурсами с ограничениями на запросы. Примеры.
- •Вопрос 22. Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: алгоритм редукции. Примеры.
- •Вопрос 23. Распознавание тупиков в системах с потребляемыми ресурсами и в системах с обобщёнными ресурсами: системы с ограничениями на выполнение операций. Примеры.
- •Вопрос 24. Вывод системы из тупика. Общий подход и частный случай.
- •Вопрос 25. Обходы тупиков. Алгоритм банкира. Примеры.
Вопрос 14. Задача предотвращения тупика, подходы к решению. Примеры.
Тупики могут возникнуть только в системах, где выполняются четыре необходимых условия их появления:
условие взаимоисключения (процессы требуют предоставления им права монопольного использования ресурсов, которые им выделяются);
условие ожидания ресурсов (процессы, запросившие ресурс, ожидают его выделения, не отказываясь от своих запросов);
условие неперераспределяемости ресурсов (ресурсы, выделенные процессам, не могут быть перераспределены, пока процессы не используют их до конца и не выполнят сами операцию освобождения, даже если процессы, удерживающие ресурсы, находятся в заблокированном состоянии);
условие циклического ожидания (существует кольцевая цепь процессов, в которой каждый процесс удерживает один или более ресурсов, необходимых следующему процессу в этой цепи).
Нарушение какого-либо из этих условий создает возможность предотвращения тупиков в системе.
Все методы предотвращения тупиков имеют одну цель - обеспечение условий, при которых все состояния в системе будут безопасными.
Соблюдение первых трех условий определяется режимом работы ОС, поэтому практически при разработке программных систем можно предотвратить тупики, только сделав невозможным выполнение последнего условия, которое и дает практический подход к решению задачи предотвращения тупиков.
Первый метод (самый простой для реализации) состоит в том, что все ресурсы в системе отдаются в распоряжение одного процесса. Фактически это означает организацию однопрограммного режима работы ВС, что означает неэффективное ее функционирование.
Второй подход состоит в том, чтоб определить все потребности процессов в ресурсах (максимальные потребности для всего времени выполнения процесса в ВС) сразу, при их порождении. Процесс вводится в систему только тогда, когда его максимальные запросы могут быть удовлетворены с учетом распределения ресурсов другим процессам, выполняющимся в системе. Таким образом, запрещается фактически динамическое распределение ресурсов. Тупиков не будет, так как процесс сможет получить ресурсы только тогда, когда все его запросы смогут быть удовлетворены. При этом при выполнении процесса заранее выделенные ему ресурсы могут и не потребоваться, то есть ресурсы ВС будут использоваться также неэффективно.
Третий подход к решению задачи предотвращения тупиков состоит в реализации стратегии упорядочения ресурсов.
Все ресурсы делятся на классы
K1, K2, ... , Kk
так, что ресурс из класса Ki может быть выделен процессу только тогда, когда этому процессу не распределены уже ресурсы из классов
Ki, Ki+1, ... , Kk
(при k=1 получается описанный выше вариант).
Классификация ресурсов выполняется в соответствии с их свойствами и естественным порядком запросов на них от выполняющихся процессов. Самые дорогие ресурсы выделяются обычно в старшие классы.
В операционной системе, в которой реализовано предотвращение тупиков, ресурсы могут быть классифицированы, например, следующим образом:
K1 - файлы, открываемые процессом, K2 - оперативная память ВС, запрашиваемая динамически, K3 - устройства ввода/вывода.