- •Архитектура операционной системы
- •1. Монолитные системы
- •2. Многоуровневые системы
- •3. Виртуальные машины
- •Архитектура, основанная на ядре
- •Режим ядра и пользовательский режим
- •Типовые средства аппаратной поддержки ос
- •Машинно-зависимые компоненты ос
- •Микроядерная архитектура
- •Процессы и потоки
- •Реализация процессов
- •Назначение потоков
- •Реализация потоков
- •Планирование Процессов
- •Пример 1. Планирование в Windows 2000
- •Пример 2. Планирование в unix
- •Цели планирования
- •Схемы планирования
- •Взаимодействие процессов и потоков
- •Состояние состязания
- •Критические области
- •Взаимоисключение с активным ожиданием
- •Семафоры
- •Мьютексы
- •Мониторы
- •Взаимные блокировки
- •Основные направления решения проблемы тупиков
- •Предотвращение тупиков
- •Обнаружение тупика
- •Восстановление после тупика
- •Организация мультизадачности ос
- •Опрос (проверка флагов)
- •Исключения
- •Прерывания
- •Классификация прерываний
- •3 Класса прерываний:
- •Механизм прерываний
- •Приоритеты прерываний
- •Организация памяти
- •Функции ос по управлению памятью
- •Стратегии управления памятью
- •Фрагментация памяти
- •Способы борьбы с фрагментацией:
- •Типы адресов памяти
- •Учет свободных и занятых областей памяти
- •Учет памяти с помощью битовых карт
- •Учет памяти с помощью связных списков
- •Виртуальная память
- •Файлы подкачки
- •Вопросы по модулю №1
Опрос (проверка флагов)
Заключается в опросе на определенных циклах работы ЦП значений флаговых переменных, выставляемых на шину внешними устройствами. При наличии флага ЦП переключается на обработчик для этого ВУ.
Недостатки:
в отличие от прерываний при опросе флагов ЦП не может заниматься другими задачами (т.е. теряется процессорное время, так как процессор вынужден сам проверять значения).
Реакция на изменение флага происходит только после завершения текущей команды.
Достоинство: Минимальные программные и аппаратные затраты на реализацию.
Исключения
Способ заключается в генерации исключительных событий процессором при известном коде операции (деление на 0, вычисление логарифма, переполнение ячейки памяти). При этом программа приостанавливается, и управление передается обработчику данной ситуации.
Отличие от обработки прерываний в том, что прерывания обрабатываются после выполнения текущей команды, а исключение прекращает выполнение команды, и, после обработки исключения, повторяется попытка выполнения прерванной команды. До этого обработчик может исправить положение, например, подкачав недостающие страницы памяти и т.д. Если нет смысла повторять команду (деление на 0), то возврат производится в другую точку, которая зависит от программиста.
Недостатки:
1. Повторное выполнение команды далеко не всегда необходимо для решения проблемы.
2. При прерывании выполнения команды теряются наработанные данные.
3. Исключения реализуют мультизадачность только на программном уровне (логические прерывания).
Достоинства аналогичны Опросу.
Прерывания
Прерывание – это принудительная передача управления от выполняемой программы к обработчику прерывания, происходящая при наступлении определенного события.
Механизм прерываний очень похож на механизм выполнения процедур, но имеется важное отличие. Вызов процедуры происходит в заранее заданной точке программы, а прерывание происходит в произвольной точке потока команд.
Прерывание возникает:
В результате внешнего (по отношению к активному процессу) события.
При появлении аварийных ситуаций (или так предусмотрено) в самом процессе.
Однако в обоих случаях выполняется некоторая подпрограмма - обработчик, а затем продолжается выполнение основной программы.
Классификация прерываний
3 Класса прерываний:
Прикладные.
Справочные (или псевдопрерывания). Для запоминания важных для программы адресов.
Системные.
Системные прерывания делятся на следующие:
Внешние (аппаратные).
Внутренние (Технические, Логические, программные DOS и BIOS).
Внешние прерывания (асинхронные) – прерывания, вызываемые внешними асинхронными событиями, которые происходят вне прерываемого процесса. Например:
Прерывания от таймера. 18 раз в секунду.
Прерывания от внешних устройств ввода-вывода.
Прерывания при нарушении питания.
Прерывания от другого процесса вычислительной системы.
Внутренние прерывания (синхронные) – прерывания, вызываемые самим ЦП и связанные с его операциями (синхронные с операциями процессора). Например:
Прерывания при нарушении адресации (в команде указан запрещенный или несуществующий адрес).
Ошибочный код команды.
При делении на ноль.
При переполнении числом ячейки памяти.
При обнаружении ошибок в работе устройств.
Программные прерывания – это прерывания по специальной команде в программе. То есть это просто обращение к подпрограмме в режиме ядра. Фактически эти прерывания ничего не прерывают. Такие команды введены для того, чтобы вызов системных программ происходил не просто как переход в подпрограмму, а точно так же, как обычное прерывание.
Прикладные прерывания – это прерывания по механизму очень похожие на программные, только обращение к подпрограмме происходит в пользовательском режиме.
Технические прерывания возникают при отказах и сбоях в работе аппаратуры ПК. Большинство ТП не маскируются, то есть они разрешаются всегда, а некоторые из них относятся к категории «аварийных» (например, отключение питания), и при их возникновении даже не запрашивается причина прерывания, а просто, по возможности, спасаются важные промежуточные результаты (например записываются в безопасное место, в НЖМД).
Логические прерывания возникают при появлении ошибок в выполняемых программах (деление на 0, потеря значности мантиссы, нарушение защиты памяти и т. п.). Многие из логических прерываний также относятся к категории немаскируемых.
Технические, логические и прикладные прерывания обслуживаются BIOS.
Программные BIOS и DOS прерывания обслуживаются модулем обработки прерываний DOS (Что это за модуль? – Конечно же это IO.SYS).
Для IBM PC номеров прерываний может быть 256 (по емкости регистров CS, IP)