Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАММНАЯ ИНЖЕНЕРИЯ.docx
Скачиваний:
115
Добавлен:
09.09.2018
Размер:
2.83 Mб
Скачать

6.5.3. Запрет определенного маскируемого прерывания

Как ведущий, так и ведомый контроллеры i8259 содержат специальный внутренний регистр маски прерываний IMR.

Для того чтобы запретить определенное прерывание, необходимо соответствующий бит в регистре IMR установить в 1. Номера разрядов регистра IMR соответствуют номерам линий сигналов прерывания, например IRQ0 и IRQ8 соответствует самый младший разряд в регистре IMR, а IRQ7 и IRQ15 — самый старший.

Регистр маски прерываний ведущего контроллера доступен для записи и считывания через порт 21h, а ведомого контроллера — через порт 0A1h.

Можно сразу записать байт с установленным битом в регистр IMR, однако, если в регистре IMR уже были установлены какие-нибудь биты, то мы можем затереть эту информацию. Поэтому принято сначала считывать содержимое регистра IMR, изменять нужный бит в считанном значении, а затем полученное значение помещать обратно в регистр маски прерываний.

Между двумя обращениями к одному и тому же порту рекомендуется вставлять циклы задержки, поскольку контроллер i8259 по сравнению с процессором работает слишком медленно, обычно для этого используется пара операторов:

jmp short $+2

jmp short $+2

Например, вот так можно запретить прерывание от клавиатуры (IRQ1): in al,21h

or al,00000010b

jmp short $+2

jmp short $+2

out 21h,al

Программист должен предусмотреть в своей программе обратную операцию — демаскирование запрещенного прерывания. Например, демаскирование прерывания от клавиатуры будет выглядеть следующим образом:

in al,21h

and al,11111101b

jmp short $+2

jmp short $+2

out 21h,al

  1. Получение и установление собственного вектора прерывания с помощью функций прерывания INT 21h.

Существует еще один способ замены обработчика прерывания — с помощью функций операционной системы DOS 25h и 35h, которые вызываются по прерыванию int 21h:

Функция 35h (INT 21h) — получить вектор прерываний

Входные данные:

AH=35h

AL=номер прерывания (от 00h до 0FFh)

Возвращаемые значения:

ES:BX=адрес обработчика прерывания для INT AL.

Функция 25h (INT 21h) — установить вектор прерываний

Входные данные:

AH=25h

AL= номер прерывания (от 00h до 0FFh)

DS:DX=адрес обработчика прерываний

Возвращаемые значения:

Функция ничего не возвращает.

В листинге 6.8 показан пример замены обработчика прерывания с помощью функций DOS.

Листинг 6.8. Замена обработчика прерывания с помощью функций DOS

; Копируем адрес предыдущего обработчика в переменную old_hook

mov ax,3577h

int 21h

mov word ptr old_hook,bx

mov word ptr old_hook+2,es

mov ax,2577h

mov dx,seg int_hook

mov ds,dx

mov dx,offset int_hook

int 21h

...

...

...

lds dx,old_hook mov ah,25h

mov al,63h int 21h

  1. Понятие ядра операционной системы.

Операцио́нная систе́ма, сокр. ОС (англ. operating system, OS) — комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой стороны — предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений.

Две функции ОС:

1)Предоставление расширенной машины, с которой легче работать, чем с реальной машиной.

2) Системы управление ресурсами – механизм, управляющий ресурсами ЭВМ. Его задача так управлять ресурсами, чтобы обеспечить максимальное функционированость использования ресурсов.

1) Планирует ресурсы (сколько нужно ресурсов)

2) Отслеживает (занят ли ресурс или нет)

Ядро — центральная часть операционной системы, управляющая выполнением процессов, ресурсами вычислительной системы и предоставляющая процессам

координированный доступ к этим ресурсам.

Типы архитектур ядер операционных систем:

  • Монолитное ядро (*NIX)

  • Модульное ядро (MODERN *NIX)

  • Микроядро (NT)

  • Гибридное ядро (XP, Vista, 7)

Ядро составляет сердцевину операционной системы, без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.

В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка станиц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования — API.

Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями операционной системы, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.

  1. Виды ядер ОС.

Монолитное ядро. Представляет богатый набор оборудования. Все компоненты монолитного ядра находятся в одном адресном пространстве. Эта схема ОС, когда все части ее ядра — это составные части одной программы. Монолитное ядро — самый старый способ организации ОС.

Достоинства: высокая скорость работы, простая разработка модулей. Недостатки: Ошибка работы одного из компонентов ядра нарушает работу всей системы.

Модульное ядро.  Это современная модификация монолитных ядер ОС, но в отличие от них модульное ядро не требует полной перекомпиляции ядра при изменения аппаратного обеспечения компьютера. Более того модульные ядра имеют механизм погрузки модулей ядра. При этом подгрузка модулей может быть как динамической (выполняемой «на лету», без перезагрузки ОС, в работающей системе), так и статической (выполняемой при перезагрузке ОС после переконфигурирования системы на загрузку тех или иных модулей).

Микроядро: Микроядро предоставляет основные функции управления процессами и минимальный набор работы с оборудованием. Большая часть работы осуществляется с помощью специальных пользовательских процессов, называемых сервисами.

Достоинства: устойчивость к сбоям и ошибкам оборудования и компонентов системы, высокая степень ядерной модульности, что упрощает добавление в ядро новых компонентов и процесс отладки ядра. Для отладки такого ядра можно использовать обычные средства. Архитектура микроядра увеличивает надежность системы. Недостатки: Передача информации требует больших расходов и большого количества времени. Экзоядро. Такое ядро ОС, которое предоставляет лишь функции взаимодействия процессов, безопасное выделение и распределение ресурсов. Доступ к устройствам на уровне контроллеров позволяет решать задачи, которые нехарактерны для универсальной ОС.

Наноядро.  Такое ядро выполняет только единственную задачу- обработку аппаратных прерываний, образуемых устройствами ПК. После обработки наноядро посылает данные о результатах обработки далее идущему в цепи программному обеспечения при помощи той же системы прерываний. Гибридное ядро. Модификация микроядер, позволяющая для ускорения работы запускать несущественные части в пространство ядра. На архитектуре гибкого ядра построены последние операционные системы от Windows, в том числе и Windows 7.