Скачиваний:
207
Добавлен:
14.06.2020
Размер:
3.2 Mб
Скачать
  1. Ввод сигнала по прерываниям. Пример реализации.

Принцип ввода-вывода по прерываниям от внешних устройств. Достоинства и недостатки. (см билет 9)

Пример аппаратной реализации.

Доп: https://habr.com/ru/post/430548/

На аппаратном уровне прерывания работают следующим образом. Когда устройство ввода-вывода заканчивает свою работу, оно инициирует прерывание (при условии, что прерывания разрешены ОС). Для этого устройство выставляет сигнал на выделенную устройству специальную линию шины. Этот сигнал распознается микросхемой контроллера прерываний, расположенной на материнской плате. Контроллер прерываний принимает решение о дальнейших действиях

Рисунок 4 – Схема прерываний в компьютере. Соединения между устройствами и Контроллером прерываний в действительности являются специальными линиями шины, а не выделенными проводами

Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств, исключения – специальными модулями ядра ОС, программные прерывания – процедурами ОС, обслуживающими системные вызовы. Кроме названных средств, в ОС существует диспетчер прерываний, который координирует работу отдельных обработчиков.

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

Существует два основных способа, с помощью которых шины выполняют прерывания: векторный (vectored) и опрашиваемый (polled). В обоих случаях информация об уровне приоритета прерывания предоставляется процессору на шине подключения внешнего устройства. В случае векторных прерываний передается ещё и информация о начальном адресе программы – обработчика данного прерывания.

  • Векторный способ.

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

  • Опрашиваемое прерывание.

При использовании механизма опрашиваемого прерывания запрос прерывания содержит только информацию об уровне приоритета. С каждым уровнем может быть связано несколько устройств, следовательно, несколько программ-обработчиков. Процессор должен определить, какой именно из обработчиков связан с этим прерыванием. Для этого он выполняет опрос всех устройств, имеющих данный уровень приоритета, пока одно из них не ответит, выставив на шину сигнал. Тогда уже диспетчер прерываний вызывает конкретный обработчик. Если же с каждым уровнем прерываний связано только одно устройство, то определение нужного обработчика происходит немедленно, как при векторном способе (шины ISA, EISA, MCA, PCI).

Дополнительно:

  • это схема намного эффективнее схемы прерывания с программным опросом, поскольку здесь опрос осуществляется не программно, а аппаратно

  • во втором случае системы с вне интерфейсного вектора - специальные регистры для хранения векторов, адресов в контроллере ВУ отсутствует, а для идентификации используется общий для всех устройств контроллер прерывания – такая схема характерна для IBM совместимых PC

Изобразим схему взаимодействия процессора с контроллером прерывания и шины IBM PC:

за исключением IRQ0, IRQ1, IRQ8, IRQ13 (системный таймер, клавиатура, часы реального времени, сопроцессор); контроллер шины формирует 2 цикла чтения, только во 2 цикле чтения контроллер прерывания выставляет номер вектора прерывания на шину данных, а процессор считывает его с шины данных

  • в реальном режиме вектора прерываний хранятся в таблице векторов прерываний, которые находятся в одном килобайте оперативной памяти, под каждый вектор выделено 4 байта (2 под смещение и 2 байта под адрес сегмента)

  • абсолютный адрес вектора прерываний в таблице = номер вектора умножить на 4

  • далее процессор сохраняет в стеке содержимое регистров флагов, содержимое регистра сегмента кода CS, смещение IP, затем сбрасывается флаг прерывания в регистре флагов; по адресу: номер вектора умноженный на 4 считывается из оперативной памяти адрес сегмента

  • подпрограмма обработки прерывания завершается инструкцией конца прерывания – EOI (end of interruption)

  • если обслуживание одновременно запрашивает несколько устройств, то контроллер прерывания обслуживает устройства с наибольшим приоритетом, а остальные устройства блокирует до получения команды конца прерывания

Блок-схема программы.

Задача: ввести 100 значений с частотой 100 Гц

Существует две программы: фоновая и прерывания

Программа прерывания будет запущена, если все разрешено