인터럽트 우선 순위 수준

Interrupt priority level

인터럽트 우선 순위 수준(IPL)은 현재 시스템 인터럽트 상태의 일부로서, 현재 수용될 인터럽트 요청을 나타낸다.IPL은 프로그램 가능한 인터럽트 컨트롤러의 레지스터에 의해 하드웨어에 표시되거나 비트마스크 또는 정수 값과 스레드의 소스 코드에 의해 소프트웨어에 표시될 수 있다.

개요

정수 기반 IPL은 MOS Technology 6502에서와 같이 0(모든 인터럽트 활성화) 또는 1(모든 인터럽트 비활성화)의 두 값만으로 단일 비트만큼 작을 수 있다.그러나 일부 아키텍처는 더 큰 범위의 값을 허용하는데, 여기서 각 값은 동일하거나 낮은 수준의 인터럽트 요청을 차단하면서 더 높은 수준을 지정하는 인터럽트 요청을 가능하게 한다.

인터럽트 요청에 서로 다른 우선 순위를 할당하는 것은 시스템 처리량과 인터럽트 대기 시간의 균형을 맞추는데 유용할 수 있다: 어떤 종류의 인터럽트는 다른 인터럽트보다 더 빨리 대응되어야 하지만 처리량이 크지 않을 수 있기 때문에 그러한 종류의 인터럽트에 더 높은 우선 순위를 할당하는 것이 타당하다.

인터럽트 수준의 제어는 커널 데이터 구조에 대한 액세스를 동기화하는 데도 사용되었다.따라서 레벨 3 스케줄러 인터럽트 핸들러는 실제 스케줄러 데이터 구조에 액세스하기 전에 IPL을 일시적으로 7로 올린 다음, 프로세스 컨텍스트를 실제로 전환하기 전에 다시 3으로 낮출 수 있다.그러나 인터럽트 핸들러가 IPL을 입력한 IPL보다 낮게 내리는 것은 허용되지 않았다. 그렇게 하는 것은 동기화 시스템의 무결성을 파괴할 수 있기 때문이다.

물론 멀티프로세서 시스템은 그들 자신의 합병증을 추가하는데, 이것은 여기서 다루지 않는다.

하드웨어 지원 여부와 상관없이 일반적인 UNIX형 시스템은 최소(모든 인터럽트 사용 안 함)와 최대(모든 인터럽트 사용 가능)의 두 가지 수준만 사용한다.

OpenVMS IPL

지금까지 구현된 보다 정교한 IPL 처리 시스템의 예로서, VAX 컴퓨터와 관련 VMS 운영 체제는 0에서 31까지 32가지 우선 순위를 지원한다.우선 순위 16 이상은 외부 하드웨어의 요청에 대한 것이며, 16 미만의 값은 소프트웨어 인터럽트에 사용할 수 있다(운영체제가 자체 활동을 스케줄링하기 위해 내부적으로 사용).모든 값이 실제로 사용되는 것은 아니지만 다음과 같은 중요한 값이 있다.

  • 레벨 31은 "전원 장애" 인터럽트에 대한 것이다.
  • 레벨 24는 시계의 인터럽트를 위한 것이다.이는 I/O 인터럽트보다 높은 우선 순위라는 점에 유의하십시오.
  • 레벨 20-23은 I/O 기기에 사용된다.
  • 레벨 8-11은 포크 인터럽트에 사용된다.운전자가 기기 인터럽트(우선순위 20-23)를 받았을 때, 그렇게 높은 우선순위에서 가능한 한 적은 처리를 해야 한다. 대신, 시간이 많이 걸리는 작업을 수행해야 하는 경우에는 8-11 범위에서 소프트웨어 인터럽트를 요청하여 처리를 연기해야 한다. 이 인터럽트가 트리거되면 추가 처리가 재개된다.이것과 유사하게 리눅스 커널에서 "하반부"와 그들의 후계자들이 있다.
  • 레벨 7은 프로세스 스케줄러 데이터 구조에 대한 액세스를 동기화하는 데 사용된다.
  • 레벨 4는 I/O 후 처리 작업, 즉 QIO 요청의 최종 완료(응용프로그램 프로세스에 결과 반환 포함)에 사용된다.
  • 레벨 3은 프로세스 일정 조정 인터럽트에 사용된다.더 높은 인터럽트 수준에서 실행되는 코드는 현재 프로세스 컨텍스트가 있었다고 가정할 수 없다(프로세스 일정 변경이 진행 중일 수 있기 때문이다).특히 페이지 결함은 이 수준 이상에서는 허용되지 않는다.
  • 레벨 2는 프로세스당 데이터 구조에 대한 액세스를 동기화하는 데 사용된다.커널이 프로세스 컨텍스트에 대한 액세스가 필요할 때마다 IPL 2의 프로세스 컨텍스트에서 실행되는 특수 커널 AST를 전송한다.
  • 레벨 0은 일반 어플리케이션 코드를 포함하여 비 멀티캐스트 코드의 실행에 대한 정상 레벨이다.

알파 하드웨어에는 IPL에 대한 기본 지원이 포함되어 있다.2001년에 OpenVMS가 Itanium으로 포팅되었을 때, IPL 체계는 Itanium 하드웨어가 제공하는 기능을 사용하여 시뮬레이션되었다.

참고 항목