Особенности функционирования ОС РВ
Объектно-ориентированная архитектура
Принцип децентрализации функций ОС
Архитектура на базе микроядра
Рис. 24.
Все базовые функции – задача микроядра, то есть запуск системы, управление доступом к аппаратным средствам и т.д. Все остальные функции выделены в отдельные менеджеры. Каждый менеджер выполняет строго определённые функции.
Достоинства: более гибкая система
Недостатки: каждая задача зависит от микроядра и от его реализации.
Большинство операционных систем РВ реализовано на базе микроядра (QNX и т.д.)
Вводится понятие объекта. Объект для ОС – это задача. Для каждой задачи была предложена реализация ядра пользователя. Каждый элемент архитектуры может взаимодействовать с любым другим. Виды и характер воздействия определяется конфигурацией ОС.
Рис. 25.
Каждая программа включает микроядро, которое обеспечивает выполнение основных функций, распределение приоритетов, загрузка задач и обеспечение взаимодействия с другими задачами. Взаимодействие с другими данными через потоки (обеспечивает передачу информации между программами и др.), то есть это буфер для обмена информацией. Для взаимодействия всех компонентов системы был реализован модуль «почтовый ящик». Это буфер системы (обеспечивает приём, обработку и передачу информации между компонентами). «Почтовый ящик» является сервером, он функционирует по запросу от других компонентов. Характер взаимодействия компонентов не влияет на «почтовый ящик» и другие модули.
Ядро ОС обеспечивает выполнение следующих функций:
1. Планирование задач.
2. Синхронизация задач.
3. Межзадачная коммуникация.
4. Управление памятью.
Вспомогательные элементы:
· Файловая система.
· Сетевая поддержка.
· Интерфейс с оператором.
Задача – готовая к выполнению программа, участвующая в вычислительном процессе.
Цель менеджера задач – определение последовательности выполнения задач пользователя. У менеджера задач есть ряд функций, которые называются функции ядра:
1. Планирование задач.
1.1. Циклическое планирование. Все задачи одна за другой. Нет возможности изменения функционирующей задачи по приоритетам.
1.2. Разделение времени.
1.2.1. Разделение времени на равные интервалы. Для каждой задачи выделяется интервал времени. Если задача не закончила своё исполнение в интервале, то выполняется в следующем доступном интервале (псевдопараллельное исполнение задач). Реальное параллельное выполнение задач возможно только при нескольких процессорах (вычислительных узлах).
1.2.2. Разделение времени с вытеснением. Разделение по времени, но при появлении более высокоприоритетной задачи более низкоприоритетная задача вытесняется.
2. Назначение приоритетов (см. алгоритм планирования).
3. Синхронизация задач – обеспечение согласованности действий программ на вычислительном узле.
Синхронизируются:
· Связанность задач (то есть логическая последовательность задач).
· Обеспечение доступа к общим ресурсам.
· Обеспечение синхронизации с внешними событиями.
· Обеспечение синхронизации по времени.
Связанность задач определяет последовательность функций реального объекта. Каждое действие в системе должно происходить последовательно в зависимости от предыдущих действий, должна сохраняться история. Для этих целей используется «почтовый ящик» - буфер и сортировщик сообщений. Принцип связности реализуется как алгоритм функционирования системы.
Обеспечение доступа к общим ресурсам необходимо для того, чтобы обеспечить доступ к разделяемым ресурсам для всех задач. Это физическое устройство или область памяти.
Рис. 26.
Проблемы возникают при использовании алгоритма «с вытеснением».
· Если одна из задач захватит ресурс и не обеспечит доступ для всех остальных или не успеет выполнить все действия на устройстве, то возникают ошибки функционирования, связанные с «гонками». Их можно обнаружить только в процессе эксплуатации системы.
Способы решения проблем гонок.
1. Создание сервера ресурса, то есть задачи, отвечающей за доступ к ресурсу. Она обеспечивает планирование последовательности выполнения.
2. Запрет прерывания доступа к ресурсу на время его использования.
3. Принцип «семафора».
Реализация проблем «гонок» осуществляется в критических секциях – участках кода программ, где происходит обращение к разделяемым ресурсам. Для решения можно реализовать несколько потоков и только 1 поток отвечает за доступ к ресурсу.
· Вторая проблема – «смертельный захват» (DeadLock). Возникает, если задачи не поделили между собой ресурс.
Пример:
Задача А → дисплей → клавиатура
Задача В → клавиатура → дисплей
захват требует
задачи зашли в тупик. Ситуация DeadLock.
Способы решения проблемы:
1. Принцип «либо всё, либо ничего». Только одна задача может претендовать на ресурсы. Вторая задача ожидает доступа только после освобождения обоих ресурсов первой задачей.
2. Организация сервера для доступа к ресурсу.
3. При требованиях доступа к занятому ресурсу задача, требующая ресурс отключается и ждёт выполнения задачи В.
· «Инверсия приоритетов» - это ситуация, при которой задача с более высоким приоритетом не может выполняться из-за задачи с более низким приоритетом.
Пример:
А – высокоприоритетная задача.
В – среднеприоритетная задача.
С – низкоприоритетная задача.
С → захватывает ресурс.
В → выполняется.
С → останавливается (ресурс захвачен).
А → пытается захватить ресурс и останавливает В, но С уже захватила ресурс. В не выполнится пока А не выполнится.
Решение:
1. Сервер ресурсов. Выполняется задача с самым высоким приоритетом, и доступ к ресурсам будет освобождаться.
2. Перераспределение ресурсов. Ресурс выделяется той задаче, которая начинает выполняться в данный момент.
Для оптимизации поведения системы (выполнение алгоритма и не возникновение опасных ситуаций) необходимо для каждого ресурса выделить свой сервер с заданным приоритетом и методом доступа, который обеспечит взаимодействие ресурсов и задач.
Рис. 27.
Наименее проблемная архитектура по обеспечению доступа к ресурсам – это объектно-ориентированная (из-за буфера – «почтового ящика» и микроядра).