
- •Обзорные лекции по вмс январь 2013
- •Функции операционных систем: управление задачами, данными, исключениями и восстановлением.
- •Управление памятью
- •Уровни памяти в вычислительных системах и их взаимодействие. Регистры, кэш, озу, взу. Их типы и классификация.
- •Использование внешних устройств в компьютерной сети. Сетевые устройства ввода/вывода, хранение информации на сервере, файлообменники и внешние ресурсы. Сетевые устройства
- •Типы сетевых устройств Сетевые карты
- •Регистровая память компьютера и её назначение. Типы регистров процессора в реальном режиме. Дополнительные регистры защищённого режима.
- •Новые системные регистры микропроцессоров i80x86
- •Внутренние и внешние, параллельные и последовательные интерфейсы компьютера. Примеры интерфейсов и шин, их основные характеристики.
- •Последовательный и параллельный интерфейсы ввода-вывода
- •Назначение системы прерываний эвм. Синхронные и асинхронные, внутренние и внешние прерывания. Прерывания и их обработка.
- •Контроллер прерываний и микропроцессоры 80х86.
- •Виртуальные ресурсы в компьютерных сетях. Виртуальные накопители, виртуальные внешние устройства, виртуальная память и виртуальные процессоры.
- •Виртуализация устройств и структура драйвера
- •Виртуальная память
- •Назначение и некоторые функции bios. Низкий и средний уровни ввода-вывода, обращение к bios из программы пользователя с помощью программного прерывания.
- •Типы команд и разновидности адресации в микропроцессорах. Cisc, risc и vliw процессоры.
- •Логические элементы и цифровые устройства. Понятие функционально- полного набора логических элементов, примеры логических базисов. Функционально полные наборы логических элементов
Контроллер прерываний и микропроцессоры 80х86.
Сигналы внешних аппаратных прерываний поступают в микропроцессор не непосредственно, а через контроллер прерываний. В качестве него используется микросхема Intel8259a, которая имеет 8 входных линий, называемых линиями запроса прерывания (Interrupt Request, IRQ). Обычно в системе бывает 2 таких микросхемы, одна из которых (ведущая) подключается непосредственно к микропроцессору, а вторая (ведомая) – к входу IRQ2 ведущей микросхемы. Таким образом, всего рассматривается 15 входных линий запросов прерываний от внешних устройств. Иногда этого не хватает, и на одной линии запроса «висят» несколько устройств, вследствие чего операционной системе приходится прилагать дополнительные усилия, чтобы разобраться, откуда пришёл сигнал.
Выходами микросхемы контроллера являются сигнал INT, идущий на вход микропроцессора (CPU), и номер вектора прерывания. Обратная связь микропроцессора с контроллером осуществляется с помощью сигнала INTA. Схема сопряжения контроллера (CIED, Controller Interrupts of External Units, назовём его так) и CPU (Central Processing Unit, центрального процессора) приводится на следующей схеме функционирования (рис.1)
Сигнал прерывания, поступая в контроллер, доходит до микропроцессора не сразу.
Во-первых, в схеме контроллера присутствует регистр маски, биты которого могут быть установлены программно через порт 21h (A1h для ведомого контроллера). Наличие 1 в соответствующем бите этого 8-битного регистра запрещает прохождение сигнала от соответствующего устройства, 0 – разрешает.
Во-вторых, поступивший в контроллер запрос на обработку прерывания блокирует в нём прохождение сигналов от устройств текущего и более низкого приоритета до тех пор, пока микропроцессор не разблокирует их сигналом INTA, возникающим при подаче команды EOI (END OF INTERRUPT). Эта команда реализуется засылкой специального кода (20h) в порты 20h ведущего и A0h ведомого контроллера. Сигналы, поступившие на неразблокированные линии контроллера некоторое время могут ожидать обслуживания на входе, но до процессора не дойдут.
Приоритеты устройств стандартно расположены в порядке «сверху вниз» на рис1. (IRQ0 имеет наивысший приоритет, IRQ7 – наинизший, приоритеты IRQ8 – IRQ15 расположены между приоритетами IRQ1 и IRQ3. Однако контроллер прерываний – программируемое устройство, и все его регистры (маски, приоритеты, номера векторов прерываний от внешних устройств) могут быть изменены при загрузке операционной системы, и даже во время работы.
В третьих, сигнал прерывания на выходе из контроллера возбуждает линию INT, и одновременно формирует на другой линии номер вектора прерывания. Этот номер формируется из номера IRQ и так называемого «базового вектора», который равен 8 для ведущей и 70h для ведомой микросхемы (в реальном режиме; в защищённом режиме WINDOWS перепрограммирует эти номера.) По номеру прерывания CPU определяет вектор прерывания из таблицы векторов прерываний (ТВП, или IDT – Interrupt Data Table), расположенной в первом килобайте основной памяти (реальный режим). Структура ТВП следующая:
Табл. 1
IP255 |
CS255 |
. . . |
|
IP1 |
CS1 |
IP0 |
CS0 |
Каждая строка таблицы содержит два слова (4 байта) – новое содержимое регистров IP и CS при входе в программу – обработчик, то есть её косвенный адрес. Эти значения автоматически загружаются в названные регистры при поступлении запроса на обработку прерывания. Старое содержимое регистров FLAGS, CS и IP сохраняется в стеке. В новом регистре FLAGS аппаратно обнуляется бит IF, что вызывает запрет на поступление прерываний от любых внешних устройств. Программа-обработчик прерывания (ПОП), допускающая обработку вложенных прерываний (т.е. если её можно прервать для выполнения обработки более приоритетного события) должна сама установить флаг IF в 1 в той точке своего исполнения, начиная с которой её можно прерывать.
В конце своего исполнения обработчик события должен разблокировать контроллер для данного и более низких приоритетов, послав в него сигнал EOI, и вернуть управление в прерванную программу командой IRET, восстанавливающей из стека регистры FLAGS, CS и IP.
Для защищённого режима принцип обработки остаётся тем же самым, но существуют следующие отличия:
ТВП может быть расположена в любом месте ОП. Указателем на неё является регистр IDTR;
Строками ТВП являются 8-байтные записи, содержащие более подробную информацию (вместо нового IP там задается EIP, а также ряд индикаторов);
Сами события делятся на сбои (ошибки), ловушки и аварии;
В некоторых случаях в вершине стека сохраняется код ошибки.
При входе в обработчик учитываются так называемые «уровни привилегий» прерванной задачи и обработчика события.
Детально работу в расширенном режиме мы не рассматриваем.
Пользовательская или системная программа может создать свой собственный обработчик события, или дополнить системный обработчик своими функциями. Для этого необходимо переопределить в ТВП адрес входа в обработчик на свою программу, и при необходимости вызвать из неё системный обработчик.