WikiDer > Уровень приоритета прерывания

Interrupt priority level

В уровень приоритета прерывания (IPL) является частью текущей системы прерывать состояние, которое указывает запросы на прерывание которые в настоящее время будут приняты. Аппаратно IPL может указываться регистрами в Программируемый контроллер прерываний, или в программном обеспечении с помощью битовой маски или целочисленного значения и исходного кода потоков

Обзор

IPL на основе целых чисел может иметь размер всего один бит и иметь всего два значения: 0 (все прерывания разрешены) или 1 (все прерывания отключены), как в Технология MOS 6502. Однако некоторые архитектуры допускают больший диапазон значений, где каждое значение разрешает запросы прерывания, которые определяют более высокий уровень, и блокируют запросы с того же или более низкого уровня.

Назначение разных приоритетов запросам прерывания может быть полезно при попытке сбалансировать пропускную способность системы по сравнению с прерыванием. задержка: на некоторые виды прерываний нужно реагировать быстрее, чем на другие, но объем обработки может быть небольшим, поэтому имеет смысл назначить более высокий приоритет для такого рода прерываний.

Контроль уровня прерывания также использовался для синхронизации доступа к структурам данных ядра. Таким образом, обработчик прерывания планировщика уровня 3 временно повысит IPL до 7 перед доступом к каким-либо фактическим структурам данных планировщика, затем снизится до 3 перед фактическим переключением контекстов процесса. Однако это было нет позволяет обработчику прерывания понижать IPL ниже того, при котором он был введен, поскольку это может нарушить целостность системы синхронизации.

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

Независимо от того, что может поддерживать оборудование, обычно UNIXСистемы -типы используют только два уровня: минимальный (все прерывания отключены) и максимальный (все прерывания разрешены).

IPL OpenVMS

В качестве примера одной из наиболее сложных систем обработки IPL, когда-либо развернутых, VAX компьютер и связанный VMS операционная система поддерживает 32 уровня приоритета от 0 до 31. Приоритеты 16 и выше предназначены для запросов от внешнего оборудования, а значения ниже 16 доступны для программные прерывания (используется внутри операционной системы для планирования собственных действий). На самом деле используются не все значения, но вот некоторые из наиболее важных:

  • уровень 31 предназначен для прерывания "сбой питания".
  • уровень 24 предназначен для прерывания часов. Обратите внимание, что это более высокий приоритет, чем прерывания ввода-вывода.
  • уровни 20–23 используются для устройств ввода / вывода.
  • уровни 8-11 используются для вилка прерываний. Когда драйвер получает прерывание от устройства (приоритет 20-23), он должен выполнять как можно меньше обработки с таким высоким приоритетом; вместо этого, если необходимо выполнить какие-либо трудоемкие операции, их следует отложить, запросив программное прерывание в диапазоне 8-11; при срабатывании этого прерывания дальнейшая обработка возобновляется. Аналогичны этому «нижние половины» и их преемники в Linux ядро.
  • Уровень 7 используется для синхронизации доступа к структурам данных планировщика процессов.
  • уровень 4 используется для задач постобработки ввода / вывода, то есть окончательного завершения QIO запрос, включая возврат результатов в процесс подачи заявки.
  • уровень 3 используется для прерывания перепланирования процесса. Любой код, выполняющийся на более высоких уровнях прерывания, не может предполагать, что существует текущий контекст процесса (поскольку может выполняться перепланирование процесса). Особенно, ошибки страницы не допускаются на этом или более высоких уровнях.
  • уровень 2 используется для синхронизации доступа к структурам данных отдельных процессов. Каждый раз, когда ядру требуется доступ к контексту процесса, оно отправляет этому процессу сообщение специальное ядро AST который выполняется в контексте процесса при IPL 2.
  • уровень 0 - это нормальный уровень для выполнения кода без прерывания, включая код обычного приложения.

Альфа оборудование содержит встроенную поддержку IPL. Когда OpenVMS был перенесен на Itanium в 2001 г. была смоделирована схема IPL с использованием функций, предоставляемых аппаратным обеспечением Itanium.

Смотрите также