Схема обработки прерывания при участии супервизоров ОС.
Во многих ОС 1 секция обработки прерываний выделяется в специальный программный модуль наз. супервизором прерываний. Сей модуль сохраняет в дескрипторе текущей задачи рабочие регистры процессора, которые определяют контекст прерываемого вычислительного процесса. Определяет ту подпрограмму, которая должна выполнять действия связанные с обслуживанием текущего запроса на прерывание. Перед тем. как передать управление этой подпрограмме супервизор прерываний устанавливает необходимый режим обработки прерывания. После выполнения подпрограммы управление передается вновь супервизору, но уже на тот модуль, который занимается диспетчеризацией задач. Диспетчер задач в свою очередь, в соответствии с принятым режимом распределения процессорного времени между выполняющимися процессами восстановит контекст той задачи, которой будет решено выделить процессор. Обработка прерываний при участии супервизора ОС. 1. отключение прерываний. Производится в соотв. модулях ОС. Сохранение контек контекста прерванной задачи. Установка режима системы прерываний. 2.определение адреса программного модуля. который обслуживает запрос на прерывание и передача управления на него. Включение подпрограммы обработки прерываний. Диспетчер задач: выбор готовой к выполнению задачи на основе принятой дисциплины обслуживания. Восстановление контекста прерванной задачи. Установление прежнего режима работы системы прерываний и передача управления этой задаче.
Ядро и вспомогательные модули ОС.
Ядро включает модули, выполняющие основные функции ОС:
- управление процессами
- управление памятью
- управление вводом-выводом и файловая система
Модули, выполняющие вспомогательные функции:
- утилиты
- библиотеки
- компиляторы
Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования API(Application Program Interface) Ядро работает в привилегированном режиме, и большая часть его модулей постоянно находится в памяти. Разделение ОС на ядро и вспомогательные модули облегчает ее расширяемость
К вспомогательным модулям ОС относятся:
- Утилиты (Сжатие, архивирование, проверка, дефрагментация и пр.)
- Системные обрабатывающие программы (редакторы, отладчики, компиляторы и пр.)
- Программы дополнительных услуг (игры, калькулятор и пр.)
- Библиотеки процедур (математических функций и пр.)
- Вспомогательные модули ОС загружаются в оперативную память только на время выполнения (транзитные модули)
Многослойная структура ядра ОС.
Слоеные системы хорошо реализуются. При использовании операций нижнего слоя не нужно знать, как они реализованы, нужно лишь понимать, что они делают. Слоеные системы хорошо тестируются. Отладка начинается с нижнего слоя и проводится послойно. При возникновении ошибки мы можем быть уверены, что она находится в тестируемом слое. Слоеные системы хорошо модифицируются. При необходимости можно заменить лишь один слой, не трогая остальные. Но слоеные системы сложны для разработки: тяжело правильно определить порядок слоев и что к какому слою относится. Слоеные системы менее эффективны, чем монолитные. Так, например, для выполнения операций ввода-вывода программе пользователя придется последовательно проходить все слои от верхнего до нижнего.
Микро ядерная архитектура.
Современная тенденция в разработке операционных систем состоит в перенесении значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Речь идет о подходе к построению ядра, называемом микроядерной архитектурой (microkernel architecture) операционной системы, когда большинство ее составляющих являются самостоятельными программами. В этом случае взаимодействие между ними обеспечивает специальный модуль ядра, называемый микроядром. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью.
Остальные компоненты системы взаимодействуют друг с другом путем передачи сообщений через микроядро.
Основное достоинство микроядерной архитектуры – высокая степень модульности ядра операционной системы. Это существенно упрощает добавление в него новых компонентов. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра. Для того чтобы микроядерная операционная система по скорости не уступала операционным системам на базе монолитного ядра, требуется очень аккуратно проектировать разбиение системы на компоненты, стараясь минимизировать взаимодействие между ними. Таким образом, основная сложность при создании микроядерных операционных систем – необходимость очень аккуратного проектирования.
26. Диспетчеризация процессов и задач. Стратегии планирования процессов.
Стратегия планирования (краткосрочное планирование, диспетчеризация) определяет, какие процессы планируются на выполнение для того, чтобы достигнуть поставленной цели. Стратегий планирования много, но основные из них следующие:
- по возможности заканчивать вычисления в том же порядке, в котором он были начаты;
- отдавать предпочтение более коротким задачам;
- предоставлять всем пользователям одинаковые услуги, в том числе и одинаковое время ожидания.
Стратегия планирования связана с понятием процесс, а не задача, так как процесс может состоять из нескольких задач (потоков). Диспетчеризация связана с понятием задачи (потока). Если ОС не поддерживает механизма потоков, то понятие задачи можно заменить на понятие процесса. Известно большое количество правил, в соответствии с которыми формируется очередь (список) готовых к выполнению задач. Имеются два больших класса дисциплин обслуживания:
- бесприоритетные:
- приоритетные. При бесприоритетном обслуживании выбор задачи производится в некотором порядке без учета их важности и времени обслуживания. При реализации приоритетных дисциплин обслуживания отдельным задачам предоставляется преимущественное право на исполнение. Бесприоритетные дисциплины обслуживания делятся на следующие: - линейные: o в порядке очереди; o случайный выбор процесса; - циклический: o циклический алгоритм; o многоприоритетный циклический алгоритм. Приоритетные дисциплины обслуживания делятся на следующие: - с фиксированным приоритетом: o с относительным приоритетом; o с абсолютным приоритетом; o адаптивное обслуживание; o приоритет зависит от времени ожидания; - с динамическим приоритетом: o приоритет зависит от времени ожидания; o приоритет зависит от времени обслуживания.