Лекция 67.Прерывания и их обработка — КиберПедия 

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Лекция 67.Прерывания и их обработка

2017-11-17 295
Лекция 67.Прерывания и их обработка 0.00 из 5.00 0 оценок
Заказать работу

Прерывание (interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие, после чего возвращает управление в прерванный код.В зависимости от источника возникновения сигнала, прерывания делятся на: аппаратные(асинхронные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (Interruptrequest, IRQ);

синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции; программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения, драйверов и оВнешние прерывания в зависимости от возможности запрета делятся на: маскируемые — прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах — сбросом флага IF в регистре флагов); немаскируемые (NMI) — обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.Обработчики прерываний обычно пишутся таким образом, чтобы время их обработки было как можно меньшим, поскольку во время их работы могут не обрабатываться другие прерывания, а если их будет много (особенно от одного источника), то они могут теряться. В Windows для этого применяется механизм отложенного вызова процедур.

При обработке прерывания нужно выполнить следующую последовательность действий:1) восприятие запроса на прерывание;2) запоминание состояния прерванного процесса (значение счетчика команд, содержимое регистров общего назначения, режим работы ЦП и т.д.);3) передача управления программе обработки прерываний, для чего в счетчик команд заносится адрес, уникальный для каждого типа прерывания;4) обработка прерывания;5) восстановление нормальной работы.

Вектор прерывания — закреплённый за устройством номер, который идентифицирует соответствующий обработчик прерываний. Векторы прерываний объединяются в таблицу векторов прерываний, содержащую адреса обработчиков прерываний. Местоположение таблицы зависит от типа и режима работы процессора. Для IBM векторы прерываний (адресса) хранятся в таблице, которая находится в первом килобайте оперативной памяти. Под каждый вектор отведено 4 байта, т.е. в таблице может содержаться 256 векторов. Адрес вектора в таблице - номер вектора прерываний умножненный на 4.

Для управления аппаратными прерываниями во всех типах IBM PC используется микросхема программируемого контроллера прерываний Intel 8259 (или ее аналоги). Поскольку в каждый момент времени может поступить не один запрос, микросхема имеет схему приоритетов. Имеется 8 уровней приоритетов, кроме AT, у которого их 16, и обращения к соответствующим уровням обозначаются сокращениями от IRQ0 до IRQ7 (от IRQ0 до IRQ15). Максимальный приоритет соответствует уровню 0. Добавочные 8 уровней для AT обрабатываются второй микросхемой 8259; этот второй набор уровней имеет приоритет между IRQ2 и IRQ3. Запросы на прерывание 0-7 соответствуют векторам прерываний от 8H до 0FH; для AT запросы на прерывания 8-15 обслуживаются векторами от 70H до 77H.

запрос Адрес прерывания функция
  08h Запрос от таймера
  09h Контроллер клавиатуры
  0Ah Вторая микросхема в AT, XT286, PS50 + или вертикальный обратный ход луча EGA/VGA
  0Bh Запросы от COM2 или COM4
  0Ch Запросы от COM1 или COM3
  0Dh НЖМД в XT или запрос от LPT2 (AT)
  0Eh Запросы от контроллера НГМД
  0Fh Запросы от LPT1
  70h Часы реального времени в AT, XT286, PS50 +
  71h В AT, XT286, PS50 + программно переназначено на запрос 2
  74h Перывание от мыши в PS50 +
  75h Ошибка математического сопроцессора в AT, XT286, PS50 +
  76h Контроллер НЖМД в AT, XT286, PS50 +

 

У персональных компьтеров для идентификации устройств, запросивших обслуживания, используется общий контроллер прерываний. Упрощенная схема взаимодействия контроллера прерываний с процессором и контроллером шины имеет следующий вид.В качестве примера отметим, что к линии IRQ 0 подключен системный таймер, к линии IRQ 1 - клавиатура, к линии IRQ 8 - часы реального времени и т.д.

Пусть в некоторый момент времени контроллер клавиатуры с помощью единичного сигнала по линии IRQ 1 известил контроллер прерываний о своей готовности к обмену. В ответ на запрос контроллер прерываний генерирует сигнал INTR (запрос на прерывание) и посылает его на соответствующий вход процессора. Процессор, если маскируемые прерывания разрешены (т.е. установлен флаг прерываний IF в регистре флагов процессора), посылает на контроллер шины сигналы R# - чтение, C# - управление и IO# - ввод/вывод, определяющие тип цикла шины. Контроллер шины, в свою очередь, генерирует два сигнала подтверждения прерывания INTA# и направляет их на контроллер прерываний. По второму импульсу контроллер прерываний выставляет на шину данных номер вектора прерывания, соответствующий данной линии IRQ и процессор считывает номер вектора прерывания. Сохраняет в стеке содержимое регистра флагов, сбрасывает флаг прерываний IF и помещает в стек адрес возврата в прерванную программу. После этого процессор извлекает из таблицы векторов прерываний адрес подпрограммы обработки прерываний для данного устройства и приступает к ее выполнению.

Процедура обработки аппаратного прерывания должна завершаться командой конца прерывания EOI (EndofInterruption), посылаемой контроллеру прерываний. Для этого необходимо записать байт 20h в порт 20h (для первого контроллера) и в порт A0h (для второго).

В IBM PC/XT/AT используется режим прерываний с фиксированными приоритетами. Высшим приоритетом обладает запрос по линии IRQ 0, низшим - IRQ 7. Так как второй контроллер подключен к линии IRQ 2 первого контроллера, то приоритеты линий IRQ в порядке убывания приоритета располагаются следующим образом: IRQ 0, IRQ 1, IRQ 8 - IRQ 15, IRQ 3 - IRQ 7. Если запрос на обслуживание посылают одновременно два устройства с разными приоритетами, то контроллер обслуживает запрос с большим приоритетом, а запрос с меньшим приоритетом блокирует. Блокировка сохраняется до получения команды EOI.

Лекция 88. Компоненты операционной системы Загрузчик;Ядро; Командный процессор; Драйверы устройств; Встроенное программное обеспечение;

Понятие ядра ОС.

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

- обработка прерыванийи исключительных ситуаций.

- создание и уничтожение процессов

- переключение процессов из состояния в состояние

- приостановка и активизация процессов

- синхронизация процессов

- организация взаимодействия между процессами

- поддержка операций ввода/вывода

- поддержка распределения или перераспределения памяти

- поддержка работы файловой системы

- поддержка механизма вызова-возврата при обращении к процедурам

- поддержка функций по учету работы ЭВМ

Современные ОС реализуют поддержку системных вызовов, обработку прерываний и исключительных ситуаций, которые относят к основным механизмам ОС.В ОС Windows действует двухуровневая схема планирования. Приоритеты высшего уровня (в данном случае IRQ) определяются аппаратными или программными прерываниями, а приоритеты низшего уровня (в своем диапазоне от 0 до 31) устанавливаются для пользовательских потоков, выполняемых на нулевом уровне IRQL, и контролируются планировщиком.На нулевом (PASSIVE LEVEL) уровне IRQL работают пользовательские процессы и часть кода операционной системы. Программа, работающая на этом уровне, может быть вытеснена почти любым событием, случившимся в системе. Большинство процедур режима ядра старается удерживать IRQL уровень процессора как можно более низким.

 

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

Запросы, с которыми приложения обращаются к ядру, называются системными вызовами. Возможности ОС доступны прикладному программисту в виде набора функций, называющихся интерфейсом прикладного программирования – API. Приложения выполняют обращения к функциям APIподачей системных вызовов, способ реализации которых зависит от Операционной Системы и языка программирования.В большинстве операционных систем системный вызов является командойпрограммного прерывания (INT), работающем на нулевом уровне IRQL. Таким образом, системный вызов - это синхронное событие.

Рассмотрим часто применяемые системных вызовы стандарта. Для операционной системы UNIXсуществует более 100 системных вызовов. fork - создание нового процесса; exit - завершение процесса; open - открывает файл; close - закрывает файл; read - читает данные из файла в буфер; write - пишет данные из буфера в файл; stat - получает информацию о состоянии файла; mkdir - создает новый каталог; rmdir - удаляет каталог; link - создает ссылку; unlink - удаляет ссылку; mount - монтирует файловую систему; umount - демонтирует файловую систему; chdir - изменяет рабочий каталог.

В Win32 API существует более 1000 вызовов. Такое количество связано и с тем, что графический интерфейс пользователя UNIX запускается в пользовательском режиме, а в Windows встроен в ядро. Поэтому Win32 API имеет много вызовов для управления окнами, текстом, шрифтами т.д. Рассмотрим вызовы Win32 API. CreatProcess (fork) - создание нового процесса, ExitProcess (exit) - завершение процесса, CreatFile (open) - открывает файл, CloseHandle (close) - закрывает файл, ReadFile (read) - читает данные из файла в буфер, WriteFile (write) - пишет данные из буфера в файл, CreatDirectory (mkdir) - создает новый каталог, RemoveDirectory (rmdir) - удаляет каталог, SetCurrentDirectory (chdir) - изменяет рабочий каталог.

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

Загрузчик операционной системы: обеспечивает необходимые средства для диалога с пользователем компьютера (например, загрузчик позволяет выбрать операционную систему для загрузки); приводит аппаратуру компьютера в состояние, необходимое для старта ядра операционной системы (например, на x86 архитектурах перед запуском ядра загрузчик настроиваетвиртуальную память); загружает ядро операционной системы в ОЗУ. Загрузка ядра операционной системы не обязательно происходит с жесткого диска. Загрузчик может получать ядро по сети. Ядро может храниться в ПЗУ;Загрузчик формирует параметры, передаваемые ядру операционной системы и передаёт управление ядру операционной системы.

На компьютерах архитектуры IBM PC запуск загрузчика осуществляется программным обеспечением BIOS, записанной в ПЗУ компьютера


Поделиться с друзьями:

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.024 с.