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

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

Обзор

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

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

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

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

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

OpenVMS IPL

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

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

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

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

Ссылки

  1. ^ "Понимание прерываний". www.ibm.com . Получено 2024-08-22 .
  2. ^ "разница между IRQ и уровнем приоритета прерывания". Super User . Получено 2024-08-22 .
  3. ^ "Приоритеты прерываний - что это на самом деле означает?". Electrical Engineering Stack Exchange . Получено 2024-08-22 .
  4. ^ "Приоритетные прерывания | (Опрос ПО и последовательное подключение)". GeeksforGeeks . 2017-07-28 . Получено 2024-08-22 .
Получено с "https://en.wikipedia.org/w/index.php?title=Уровень_приоритета_прерывания&oldid=1242058058"