- •Лекции «Операционные системы» 4 семестр, 2 курс Содержание
- •Лекция №1 История развития ос
- •Операционная система. Общая характеристика.
- •Лекция №2 Требования к ос
- •Ресурсы, виды ресурсов. Управление памятью. Виртуальная память.
- •Методы распределения памяти
- •Лекция №3
- •Cash-ирование данных
- •Понятие процесса. Управление процессами. Синхронизация процессов. Тупики и способы борьбы с ними.
- •Лекция №4 Алгоритмы планирования процессов
- •Средства синхронизации при взаимодействии процессов
- •Файловые системы
- •Лекция №5 Общая модель файловой системы
- •Файловая система fat (таблица распределения файлов)
- •Структура
- •Формат кода каталога
- •Файловая система hpfs
- •Лекция №6
- •Файловая система ntfs(кратко)
- •Операционная система ms-dos
- •Лекция №7 Прерывание. Обработка прерываний
- •Лекция №8
- •Программирование последовательного порта
- •Лекция №9
- •Планирование процесса
- •Многоуровневые очереди
- •Лекция №10
- •Лекция №11 Архитектура Windows nt
- •Лекция №12 Процессы и нити
- •Лекция №13 Алгоритмы планирования процессов и нитей
- •Процесс
- •Распределение процессорного времени между потоками
- •Лекция №14
- •Лекция №15
- •Журнал аудита
- •Политика аудита
- •Лекция №16
- •Настройка и конфигурация windows nt
- •Лекция №17
- •Структура сетевой ос
- •Лекция №18
- •Лекция №19
- •Лекция №20 Динамически подключаемая библиотека (dynamic_link_library dll)
- •Лекция №21 Внедрение dll
Лекция №7 Прерывание. Обработка прерываний
Прерывание – это действие, производимое компьютером для выполнения системных и сервисных функций во время работы основного процесса.
3 этапа:
-
Приостановление выполнения основного процесса
-
Обработка прерывания
-
Возврат управления основному процессу
2 вида прерываний:
-
Аппаратное
-
Программное (функцию пишем сами, поддерживает система)
Адрес подпрограммы обработчика прерываний называется вектор. Длина 4 байта. В первом слове вектора хранится содержимое IP, во втором CS. Младшие 1024 байта памяти содержат таблицу, названную таблицей векторов прерывания. Младший байт слова всегда в памяти располагается первым.
Соответственно, если какой-то вектор
CS IP
AF20 : 3P8A
то в памяти он 8A3P20AF.
retn, rets, IRET
Для контроллера тоже должен быть сигнал окончания прерывания:
mov al, 20h
out 20h, al
В соответствии с описанием процессора некоторые вектора выполняют специфические действия, некоторые свободные.
0 вектор – деление на 0
1 номер – пошаговое выполнение
2 номер – немаскированное прерывание
3 номер – прерывание в точке останова
4 номер – переполнение
5 номер – печать содержимого экрана
8 номер – аппаратное прерывание на линии 0 (таймер)
9 номер – аппаратное прерывание на линии 1 (клавиатура)
0A номер – резерв
0B номер – аппаратное прерывание на линии 3 (COM 2)
0C номер – аппаратное прерывание на линии 4 (COM 1)
0D номер – аппаратное прерывание на линии 5 (жесткий диск)
0E номер – аппаратное прерывание на линии 6 (гибкий диск)
0F номер – аппаратное прерывание на линии 7 (принтер)
10 номер – обслуживание дисплея
11 номер – информация об оборудовании
12 номер – размер памяти
13 номер – обслуживание ввода- вывода на диске
14 номер – обслуживание последнего порта (использование либо 14 прерывания, либо путем записи управленческий слов в порт ввода- вывода)
16 номер – обслуживание клавиатуры
19 номер – перезагрузка системы
1A номер – получение установления даты и времени
1C номер – пользовательский таймер
Процессоры 8086 допускают обработку трех типов прерывания:
-
Внутренне прерывание, генерируемое микропроцессором в случае возникновения особых ситуаций при его работе
-
Немаскированное прерывание, которое используется для выявления ошибок в памяти
-
Маскированное прерывание (генерируется внешними устройствами)
Они поступают в микропроцессор через микросхему 8259А программным контроллером прерывания. Для обработки одновременно возникших прерываний используются встроенные системы приоритета. Предпочтение отдается обработке внутренних прерываний, такое как деление на ноль, произведение Ø самое высокое, FF самое низкое.
При возникновении любого прерывания процессор заносит содержимое стека в регистр состояния, сбрасывает флаг произведения и заносит в содержимое регистры CS и SP. Затем путем считывания с линии данных номера прерывания и умножения его на 4, выбирается новый адрес, который является новым содержимым регистров CS и SP.
Внешним устройствам приписываются вполне определенные линии прерывания, связанные с микросхемой 8259А. Данные линии называются IRQ. Когда устройство требует обслуживания со стороны системы, от устройства к контроллеру 8259 подается сигнал. По линии IRQ устанавливается большой сигнал и подается в процессор. Процессор сбрасывает флаг прерывания и сохраняет CS и SP. После получения по …… произведения сбрасывает флаг, записывает CS и SP и по линии подает сигнал, подтверждающий обработку прерывания.
Микросхема 8259 функционально состоит и трех частей:
-
регистр, требующий обработку прерываний (IRR); используется для того, чтобы заполнить возникшие прерывания (их может быть несколько) (8 прерываний)
-
регистр ISR обслуживает прерывания, указывает на то, какое прерывание обслуживает система в данный момент
-
регистр маскирования прерывания IMR (доступен как для чтения, так и для записи)
Каждому виду регистра IMR соответствует линия прерывания IRQ. С помощью данного регистра можно запросить или разрешить данное прерывание. Установка бита в регистр IMR приводит к маскированию соответствующий линии обработки и обработка прерывания не происходит.
Наивысший приоритет у IRQ0, наименьший – у IRQ7.
В микропроцессоре 80286 стало 16 линий путем добавления второй микросхемы 8259.
Каскадный эффект достигается при подключении к линии 2 второго устройства:
RQ0 – прерывание 8 – таймер
RQ1 – прерывание 9 – клавиатура
RQ2 – вектор 0А – запрос от подчиняющегося устройства
RQ8 – прерывание 70 – обслуживание часов реально времени
RQ9 – прерывание 71 – программное предназначение
RQ10, 11, 12 – порты последовательно 72, 73, 74 резерв
RQ13 – прерывание 75 – арифметический сопроцессор
RQ14– прерывание 76 – контроллер винчестера
RQ15– прерывание 77 – резерв
RQ30В – COM1 и т.д., как было до этого
Маскированные прерывания могут быть запрещены, внутренние и немаскированные – нет.
Любая программа, которая изменяет некоторые векторы прерывания перед тем, как осуществить возврат в MS-DOS, должна переустановить первые значения этого вектора. Для того, чтобы изменить вектор прерывания, используют функции:
-
35h – получить вектор прерывания (прерывание
-
25h – установить вектор прерывания 21h)
Вызов 35h получает содержимое CS и SP. Вызов 25h в качестве параметров передается адрес обработчика.
Каждый вектор имеет свой номер (0- 255).
mov al,00h ;читает символ, введенный
int 16h ;с клавиатуры
Обработка прерывания может происходить в соответствии с тремя основными схемами.
-
Сначала вызывается системный обработчик, затем добавленный. Данный способ используется для дополнения системной обработкой какой- либо функции.
Последовательность:
Pushf – в стек заносим флаги
Call SYS – системная обработка
USER – переход в нашу программу
Iret – завершение (возврат из прерывания)
Сначала выполняется пользовательская обработка, затем системная.
-
USER – пользовательская обработка, сохранение SP и CS.
JMP SYS
-
MSER
mov ah, 20h
out 20h, al
iret
