- •Системное программное обеспечение Учебное пособие
- •Введение
- •1.Основные понятия
- •1.1.Функции и ресурсы ос
- •1.2.Структура программного обеспечения
- •1.3.Режимы функционирования компьютера
- •1.4.Классификация ос
- •1.5.Состав ос
- •2.Управление памятью
- •2.1. Основная память
- •2.2.Регистровая память
- •2.3.Кэш память
- •2.4.Организация основной памяти
- •2.4.1.Режимы работы процессоров Intel
- •2.4.2.Преобразование логического адреса в физический в реальном режиме
- •2.4.3.Адресация памяти в защищенном режиме
- •2.5.Управление памятью
- •2.5.1.Модели памяти
- •2.5.2.Динамическое распределение памяти
- •2.5.3.Динамическое распределение памяти в windows nt
- •2.5.4.Функции ос по управлению основной памятью
- •2.6.Виртуальная память
- •2.6.1.Преобразование виртуального адреса в реальный
- •2.6.2.Страничная организация
- •2.6.3.Сегментная организация
- •2.6.4.Странично-сегментная организация
- •2.6.5.Сплошная модель памяти flat
- •2.6.6.Функции для доступа к виртуальной памяти
- •2.6.6.1Освобождение виртуальной памяти
- •2.6.6.2Фиксирование страниц основной памяти
- •2.6.7.Стратегии управления виртуальной памятью
- •2.6.7.1Определение оптимального размера страниц
- •2.6.7.2Поведение программ при подкачке страниц
- •3.Процессы и задачи. Мультипроцессорные системы
- •3.1.Управление процессами
- •3.1.1.Блок управления процессом (pcb)
- •3.1.2.Управление асинхронными параллельными процессами
- •3.2.Мультизадачность
- •3.2.1.Виды мультизадачности:
- •3.2.2.Процессы и задачи
- •3.2.3.Распределение времени между задачами
- •3.2.4.Процессовая мультизадачность
- •3.2.5.Потоковая мультизадачность
- •3.2.6. Синхронизация задач
- •3.2.6.1Ожидание завершения задачи или процесса
- •3.2.6.2Синхронизация с помощью событий
- •3.2.7.Взаимоисключение
- •3.2.7.1Критические секции в программном интерфейсе windows
- •3.2.7.2Блокирующие функции
- •3.2.8.Семафоры
- •3.3.Тупики
- •3.3.1.Условия возникновения тупика
- •3.3.2.Предотвращение тупиков
- •3.3.3. Обход тупиков
- •3.3.4.Обнаружение тупиков
- •3.3.5.Восстановление после тупика
- •3.4.Средства обеспечения мультизадачности в защищенном режиме работы процессора Intel
- •3.4.1.Переключение задач
- •3.5.Обработка прерываний
- •3.5.1.Обработка прерываний в защищенном режиме
- •3.5.2.Обработка аппаратных прерываний
- •3.6.Управление потоками заданий. Планирование заданий и загрузка процессоров
- •3.6.1.Цели планирования
- •3.6.2.Критерии планирования
- •3.6.3.Дисциплины планирования
- •3.6.4.Многоуровневые очереди с обратными связями
- •3.7.Мультипроцессорные архитектуры. Планирование загрузки ресурсов
- •3.7.1.Параллелизм
- •3.7.2.Цели мультипроцессорных систем
- •3.7.3.Автоматическое распараллеливание
- •3.7.3.1Расщепление цикла
- •3.7.3.2Редукция высоты дерева
- •3.7.4.Мультипроцессорные операционные системы
- •3.7.5.Организация мультипроцессорных операционных систем
- •3.7.6.Производительность мультипроцессорных систем
- •3.7.7.Экономическая эффективность мультипроцессорных систем
- •3.7.8.Восстановление после ошибок
- •3.7.9.Перспективы мультипроцессорных систем
- •4.Управление внешней памятью и файловые системы
- •4.1.Структура дискового тома. Таблица разделов
- •4.2.Управление данными
- •4.2.1.Организация данных
- •4.2.2.Методы доступа
- •4.3. Файловые системы
- •4.3.1.Файловая система fat
- •4.3.2.Файловая система fat32
- •4.3.3.Функции windows api для работы с директориями
- •4.3.4.Файловая система windows 95
- •4.3.5.Файловая система нpfs (os/2)
- •4.3.5.1 Структура тома
- •4.3.5.2Файлы и Fnodes
- •4.3.5.3Каталоги
- •4.3.5.4Расширенные атрибуты
- •4.3.5.5Инсталлируемые файловые системы
- •4.3.5.6Проблемы эффективности
- •4.3.5.7Отказоустойчивость
- •4.3.6.Файловая система ntfs (Windows nt)
- •4.3.6.1Главная файловая таблица
- •4.3.6.2Атрибуты файла ntfs
- •4.3.6.3Длинные и короткие имена файлов
- •4.3.6.4Потоки данных
- •4.3.6.5Согласованность с posix
- •4.4.Асинхронные операции с файлами
- •4.5.Файлы, отображаемые на память
- •4.5.1.Создание отображения файла
- •4.5.2.Выполнение отображения на память
- •5.Средства ввода информации
- •5.1.Аппаратные и программные средства ввода информации с клавиатуры
- •5.1.1.Анализ и преобразование скэн-кода
- •5.1.2.Буфер клавиатуры
- •5.1.3.Схема работы буфера
- •5.1.4.Ввод информации с клавиатуры в Windows
- •5.1.4.1Поддержка горячих клавиш (нot-key)
- •5.1.4.2Языки и локализация
- •5.2.Управление манипулятором "мышь"
- •5.2.1.Аппаратные средства манипулятора
- •5.2.2.Программная поддержка "мыши" (на примере ms dos)
- •5.2.3.Основные функции интерфейса программы с манипулятором "мышь" (int 33н)
- •5.2.4.Чтение позиции курсора и состояния кнопок "мыши"
- •5.2.5.Управление мышью в приложениях Windows
- •5.2.5.1Обработка двойного щелчка (Double-Click Messages)
- •5.2.5.2Сообщения неклиентской области
- •5.2.5.3Активизация окна
- •6.Сетевые операционные системы
- •Литература
- •Оглавление
- •Учебное издание
- •394026 Воронеж, Московский просп., 14
3.5.1.Обработка прерываний в защищенном режиме
В защищенном режиме все прерывания делятся на 2 типа - обычные и исключения. Обычное прерывание инициализируется инструкцией INT или внешним событием. Перед передачей управления программе обслуживания прерывания флаг IF сбрасывается и прерывания запрещаются.
Исключение происходит в результате ошибки при выполнении команды, например, попытки записи за пределы сегмента, использование селектора, не определенного в таблице и т.п. Исключения соответствуют зарезервированным для процессора внутренним прерываниям реального режима. При передаче управления обработчику исключения флаг IF не меняется, поэтому особые случаи, возникающие в задачах не оказывают влияния на выполнение других задач.
Дескрипторная таблица прерываний (IDT) содержит вентили прерываний, исключений и задач. Расположение IDT определяется содержимым внутреннего регистра IDTR, структура которого аналогична GDTR, IDTR обычно загружают перед входом в защищенный режим.
Формат дескриптора IDT:
Поле TYPE байта доступа содержит значения:
0xЕ - вентиль прерывания,
0xF - вентиль ловушки,
0x5 - вентиль задачи.
Селектор показывает расположение дескриптора вентиля в GDT.
Обычно это кодовый сегмент.
Для обработки исключений зарезервированы первые 0x20 дескрипторов IDT. Список исключений:
0x00 - ошибка при выполнении деления
0x01 - исключение для пошаговой работы
0x02 - немаскируемое прерывание
0x03 - исключение по точке останова (Breakpoint)
0x04 - переполнение
0x05 - превышение заданного диапазона
0x06 - недействительный код операции, или длина команды больше 10 байт
0x07 - отсутствие сопроцессора
0x08 - двойная ошибка
0x09 - превышение сегмента сопроцессором
0x0A - недействительный сегмент TSS
0x0B - отсутствие сегмента в памяти
0x0C - исключение при работе со стеком (отсутствие сегмента стека в памяти или переполнение стека)
0x0D - защита памяти (попытки доступа к сегментам памяти при недостаточном уровне привилегий)
0x0E - отказ страницы памяти
0x0F - зарезервировано
0x10 - исключение сопроцессора
0x11..0x1A - зарезервированы
Для ряда исключений (0x08, 0x0A, 0X0B, 0X0C и 0X0D) в стек помещается код ошибки, содержащей информацию о природе исключения.
Кроме того, большинство зарезервированных прерываний обладают свойством повторной запускаемости, т.е. помещения в стек адреса команды вызывающей исключение, а не следующей, как в реальном режиме. В результате после обработки исключения повторяется прерванная команда. Например, если произошло обращение к сегменту, отсутствующему в памяти, то генерируется исключение 0x0B, обработчик которого выполняет свопинг, после чего повторяется команда обращения по адресу.
Если при обработке исключения возникает еще одно исключение, то генерируется исключение "двойная ошибка"(0x08). Возникновение третьего исключения при обработке этого приводит к тому, что процессор перезапускается.
3.5.2.Обработка аппаратных прерываний
Так как номера 0x08..0x0F зарезервированы для обработки исключений, то необходимо перепрограммировать контроллер прерываний.
Например, прерывание, генерируемое по сигналу IRQ0, обрабатывать 0x20 дескриптором IDT, по сигналу IRQ1 - 0x21 и т.д. Функция перепрограммирования контроллера прерываний приведена в книге Фроловых "Защищенный режим работы процессоров Intel 80286/80386/80486" на стр. 63-64.