- •Тема 2. Управление ресурсами вычислительных систем
- •Тема 2. Управление ресурсами вычислительных систем 1
- •2.1. Мультипрограммирование
- •2.1.1. Классификация мультипрограммных операционных систем
- •2.1.2. Управление процессами и потоками
- •2.1.3. Мультипрограммирование на основе прерываний
- •2.2. Управление памятью
- •2.2.1. Адресация к памяти
- •2.2.2. Классификация алгоритмов распределения памяти
- •2.2.3. Страничное распределение памяти
- •2.2.4. Сегментное распределение памяти
- •2.3. Кэширование данных
- •2.3.1. Иерархия запоминающих устройств в компьютере
- •2.3.3. Отображение основной памяти на кэш
- •2.4. Управление вводом-выводом
- •2.4.1. Контроллеры и драйверы
- •2.4.2. Организация внешней памяти на магнитных дисках
- •Формат элемента таблицы разделов
- •2.4.3. Файловые системы и системы управления файлами
- •2.5. Современные файловые системы
- •2.5.1. Файловая система fat
- •Значение индексных указателей таблицы fat16
- •2.5.2. Файловая система ntfs
- •Метафайлы ntfs
- •2.5.3. Особенности файловых систем, используемых в unix
- •2.6. Доступ к разделяемым ресурсам
- •2.6.1. Механизм контроля доступа
- •2.6.2. Организация контроля доступа в операционных системах Windows 2000/xp
- •Соответствие основных и индивидуальных разрешений
- •Вопросы для самопроверки
2.1.3. Мультипрограммирование на основе прерываний
Система прерываний переводит процессор на выполнение потока команд, отличного от того, который выполнялся до сих пор, с последующим возвратом к исходному потоку.
В зависимости от источника прерывания делятся на три класса:
внутренние;
внешние;
программные.
Внутренние прерывания (исключения) происходят при появлении аварийной ситуации в ходе исполнения некоторой инструкции программы – ошибки программирования.
Внешние (аппаратные) прерывания возникают в результате поступления сигналов от аппаратных устройств, в том числе от системного таймера, клавиатуры и других контроллеров внешних устройств компьютера. У процессора имеется специальный вход прерывания.
Программные прерывания возникают при выполнении особой команды процессора, исполнение которой имитирует прерывание, т. е. переход на новую последовательность инструкций.
Прерываниям приписывается приоритет, с помощью которого они ранжируются по степени важности и срочности. Процедуры, вызываемые по прерываниям, обычно называют обработчиками прерываний, или процедурами обслуживания прерываний.
Диспетчеризация прерываний является важной функцией операционной системы, и эта функция реализована практически во всех мультипрограммных ОС.
Можно заметить, что в общем случае в операционной системе реализуется двухуровневый механизм планирования работ. Верхний уровень планирования выполняется диспетчером прерываний, который распределяет процессорное время между потоками поступающих запросов на прерывание различных типов – внешних, внутренних и программных. Оставшееся процессорное время распределяется другим диспетчером – диспетчером потоков, на основании дисциплин планирования потоков.
На рис. 2.1 представлены уровни приоритетов при диспетчеризации различных прерываний в операционных системах семейства Windows NT.
Рис. 2.1. Уровни приоритетов при диспетчеризации прерываний в операционных системах Windows NT
Необработанные запросы на прерывание должны храниться в контроллерах устройств, чтобы не потеряться и дожидаться обслуживания при снижении уровня приоритета прерывания процессора, когда он закончит выполнение более срочных работ.
Особая роль в работе вычислительной системы играет системный таймер: на основании его прерываний обновляются системные часы, определяющие очередной момент вызова планировщика потоков, момент выдачи управляющего воздействия потоком реального времени (такие имеются в Windows NT) и многое другое. В виду важности немедленной обработки прерываний от таймера, ему дан весьма высокий уровень приоритета –более высокий, чем уровень любого устройства ввода-вывода.
Программные прерывания, обслуживающие системные вызовы от приложений (АРС), выполняются с низшим приоритетом, что соответствует концепции продолжения одного и того же процесса, но только в системной фазе, при выполнении системного вызова.
А вот для программных прерываний, исходящих от модулей ядра ОС, отводится более высокий уровень запросов, имеющих название «диспетчерский /DPC». Этот уровень приоритета называется диспетчерским, потому что именно в эту очередь помещаются программные запросы, вызывающие диспетчер потоков.
