맨위로가기

인터럽트 요청

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

인터럽트 요청(IRQ)은 컴퓨터 시스템에서 하드웨어가 CPU에 특정 작업을 요청하기 위해 사용하는 신호이다. x86 시스템에서는 인텔 8259 프로그래머블 인터럽트 컨트롤러(PIC)를 사용하여 16개의 IRQ를 관리하며, IRQ 0~7은 마스터 PIC, IRQ 8~15는 슬레이브 PIC에서 관리한다. 초창기 PC는 8개의 IRQ로 제한되었으나, 286 기반 PC에서 두 개의 PIC로 확장되었다. APIC 시스템에서는 24개의 IRQ를 사용할 수 있으며, PCI 인터럽트 라우팅을 위해 추가 IRQ를 사용하기도 한다. 윈도우에서는 장치 관리자나 시스템 정보를 통해, 리눅스에서는 /proc/interrupts를 통해 IRQ 정보를 확인할 수 있다. IRQ 충돌은 동일한 IRQ를 두 장치가 사용하려 할 때 발생하며, 컴퓨터가 멈출 수 있다. 이러한 충돌을 해결하기 위해 PCI 버스는 IRQ 공유를 허용하고, PCI Express는 메시지 신호 인터럽트(MSI)를 사용한다.

더 읽어볼만한 페이지

  • 인터럽트 - 프로그래머블 인터럽트 컨트롤러
    프로그래머블 인터럽트 컨트롤러(PIC)는 컴퓨터 시스템에서 인터럽트 요청을 관리하며, 인터럽트 요청 레지스터 등을 사용하여 인터럽트를 처리하고 다양한 우선순위 체계를 지원하며, x86 아키텍처에서는 인텔 8259가 널리 사용되었다.
  • 인터럽트 - 도스 API
    도스 API는 응용 프로그램이 MS-DOS 운영체제의 시스템 기능을 사용하도록 제공되는 인터페이스로, CP/M 호환성을 고려한 초기 설계 이후 유닉스 개념 도입, 네트워크 기능 추가 등으로 확장되었으며, 다양한 운영체제에서 에뮬레이터를 통해 지원된다.
인터럽트 요청
일반 정보
이름인터럽트 요청
로마자 표기Inteopeuteu Yoocheong
영어Interrupt request
약어IRQ
기술적 세부 사항
역할하드웨어 신호
목적실행 중인 프로그램을 중단
입력 처리
설명프로세서에 보내는 하드웨어 신호
실행 중인 프로그램을 중단하고 입력을 처리

2. x86 IRQ

x86 아키텍처에서는 초기에 인텔 8259 프로그래머블 인터럽트 컨트롤러(PIC)를 사용하여 인터럽트 요청(IRQ)을 관리했다. 초기 PC는 8개의 인터럽트만 지원했지만, 286 기반 PC부터는 두 개의 PIC를 연결하여(마스터-슬레이브 방식) 15개의 IRQ를 사용할 수 있게 되었다.

인텔 8259를 사용하는 시스템에서는 일반적으로 16개의 IRQ가 사용되지만, 슬레이브 PIC는 마스터 PIC의 IRQ 2에 연결되므로 실제 사용 가능한 IRQ는 15개이다.

APIC 아키텍처를 사용하는 최신 시스템에서는 더 많은 IRQ를 사용할 수 있다. 초기 APIC 시스템은 여전히 16개의 IRQ를 사용했지만, 이후 24개, 나아가 MSI를 사용하는 시스템에서는 224개까지 확장되었다.

마이크로소프트 윈도우에서는 장치 관리자나 시스템 정보(msinfo32.exe)를 통해, 리눅스에서는 `cat /proc/interrupts` 명령이나 `procinfo` 유틸리티를 통해 IRQ 매핑을 확인할 수 있다.

2. 1. IRQ의 기본 동작

일반적으로 인텔 8259를 사용하는 시스템에서는 16개의 IRQ가 사용된다. IRQ 0부터 7까지는 마스터 인텔 8259 PIC (Programmable Interrupt Controller)에 의해 관리되며, IRQ 8부터 15까지는 슬레이브 PIC에서 관리된다. 마스터 PIC는 CPU에 신호를 직접 제공한다. 슬레이브 PIC는 신호를 IRQ 2 라인의 마스터에 전달하며, 마스터는 이 신호를 CPU에 전달한다. 그러므로 하드웨어에는 15개의 인터럽트 요청 라인만이 존재한다.[3][4]

초창기 인텔 8086/8088 프로세서를 사용한 PC는 단일 PIC만 가지고 있었으므로 8개의 인터럽트로 제한되었다. 이는 286 기반 PC의 도입과 함께 두 개의 PIC로 확장되었다.

2. 2. APIC 시스템의 IRQ

인텔 8259를 사용하는 시스템에서는 보통 16개의 IRQ가 사용된다. IRQ 0부터 7까지는 마스터 역할을 하는 첫 번째 인텔 8259 PIC가 관리하고, IRQ 8부터 15까지는 슬레이브 역할을 하는 두 번째 인텔 8259 PIC가 관리한다. 마스터 PIC는 CPU에 직접 신호를 보내는 반면, 슬레이브 PIC는 IRQ 2 라인을 통해 마스터 PIC에 신호를 보내고, 마스터 PIC가 이 신호를 CPU에 전달한다. 따라서 실제 하드웨어에서 사용 가능한 인터럽트 요청 라인은 15개이다.

APIC 아키텍처를 사용하는 더 새로운 시스템들은 24개의 IRQ를 사용할 수 있다. 추가된 8개의 IRQ는 PCI 인터럽트 라우팅에 사용되어 동적으로 구성되는 PCI 인터럽트와 정적으로 구성되는 ISA 인터럽트 간의 충돌을 방지한다. 16개의 IRQ만 있거나 인텔 8259 인터럽트 컨트롤러만 있는 초기 APIC 시스템에서는 PCI 인터럽트 라인이 사우스브리지에 통합되는 PIR을 사용하여 16개의 IRQ로 라우팅되었다.[3][4] 이후 PIR 테이블은 ACPI _PRT (PCI 라우팅 테이블) 프로토콜로 대체되었다. MSI가 있는 APIC 시스템에서는 일반적으로 224개의 인터럽트를 사용할 수 있다.[5]

윈도우에서는 장치 관리자나 시스템 정보(msinfo32.exe)를 통해 이 정보를 확인할 수 있다. 리눅스에서는 `cat /proc/interrupts` 명령어를 실행하거나 `procinfo` 유틸리티를 사용하여 IRQ 매핑을 확인할 수 있다.

2. 3. IRQ 할당

8259 PIC를 사용하는 시스템에서는 일반적으로 16개의 IRQ가 사용된다. IRQ 0~7은 마스터 PIC가, IRQ 8~15는 슬레이브 PIC가 관리한다. 마스터 PIC는 CPU에 직접 신호를 보내는 반면, 슬레이브 PIC는 IRQ 2 라인을 통해 마스터에게 신호를 보내고, 마스터가 다시 CPU로 신호를 전달한다.

초창기 인텔 8086/8088 프로세서를 사용한 PC는 PIC가 하나뿐이어서 8개의 인터럽트로 제한되었다. 이는 286 기반 PC의 도입과 함께 두 개의 PIC로 확장되어, 하드웨어에 사용할 수 있는 인터럽트 요청 라인은 15개가 되었다.

IOAPIC가 있는 APIC 시스템에서는 일반적으로 24개의 IRQ를 사용할 수 있으며, 추가 8개의 IRQ는 PCI 인터럽트를 라우팅하는 데 사용되어 동적으로 구성된 PCI 인터럽트와 정적으로 구성된 ISA 인터럽트 간의 충돌을 방지한다. 16개의 IRQ만 있거나 인텔 8259 인터럽트 컨트롤러만 있는 초기 APIC 시스템에서는 PCI 인터럽트 라인이 BIOS에 통합된 PIR(PCI 인터럽트 라우팅) 테이블을 사용하여 16개의 IRQ로 라우팅되었다. 윈도우 95 OSR2와 같은 운영 체제는 PCI IRQ 스티어링을 처리하기 위해 PIR 테이블을 사용할 수 있다.[3][4] 이후 PIR 테이블은 ACPI _PRT(PCI 라우팅 테이블) 프로토콜로 대체되었다. MSI가 있는 APIC 시스템에서는 일반적으로 224개의 인터럽트를 사용할 수 있다.[5]

윈도우에서 이 정보를 확인하는 가장 쉬운 방법은 장치 관리자 또는 시스템 정보 (msinfo32.exe)를 사용하는 것이다. 리눅스에서는 `cat /proc/interrupts`를 실행하거나 `procinfo` 유틸리티를 사용하여 IRQ 매핑을 볼 수 있다.

2. 3. 1. 마스터 PIC

IRQ영어 0 시스템 타이머 (변경 불가)

IRQ영어 1 키보드 (PS/2 포트) (변경 불가)

IRQ영어 2 8259 인터럽트 컨트롤러; IRQ영어 8~15에서 캐스케이드 신호

IRQ영어 3 시리얼 포트 컨트롤러 (시리얼 포트 2) (시리얼 포트 4와 공유, 있는 경우)

IRQ영어 4 시리얼 포트 컨트롤러 (시리얼 포트 1) (시리얼 포트 3과 공유, 있는 경우)

IRQ영어 5 병렬 포트 3 또는 ISA 사운드 카드

IRQ영어 6 플로피 디스크 컨트롤러

IRQ영어 7 병렬 포트 1 (병렬 포트 2와 공유, 있는 경우). 포트를 신중하게 관리하면 보조 ISA 사운드 카드와 공유될 수도 있습니다.

2. 3. 2. 슬레이브 PIC

IRQ 번호장치
8실시간 클럭
9여유 / 오픈 인터럽트 / 사용 가능 / SCSI. (IRQ 2를 사용하도록 구성된 장치는 IRQ 9를 사용할 수 있음)
10여유 / 오픈 인터럽트 / 사용 가능 / SCSI.
11여유 / 오픈 인터럽트 / 사용 가능 / SCSI.
12PS/2 커넥터 마우스. (마우스가 없을 경우 다른 주변 기기를 사용할 수도 있음)
13ISA / 산술 보조 프로세서
141번째 IDE
152번째 IDE


3. IRQ 충돌

초창기 IBM PC 호환 개인용 컴퓨터에서 '''IRQ 충돌'''은 두 장치가 동일한 인터럽트 요청(IRQ)을 사용할 때 발생하는 문제였다. 프로그래머블 인터럽트 컨트롤러(PIC)는 회선당 하나의 장치에서만 인터럽트 요청을 예상하므로, 여러 장치가 동일한 회선으로 신호를 보내면 충돌이 발생하여 컴퓨터가 멈출 수 있었다.[6]

이 문제를 해결하기 위해 이후의 PCI 버스는 IRQ 공유를 허용한다. PCI Express는 물리적인 인터럽트 회선이 없으며, 가능한 경우 메시지 신호 인터럽트(MSI)를 운영 체제에 사용한다.

3. 1. IRQ 충돌 해결 방법

초창기 IBM PC 호환 기종에서 ''IRQ 충돌''은 두 장치가 동일한 인터럽트 요청(IRQ)을 사용하여 프로그래머블 인터럽트 컨트롤러(PIC)에 인터럽트를 신호하려 할 때 발생하는 흔한 하드웨어 오류였다. PIC는 회선당 하나의 장치에서만 인터럽트 요청을 예상하므로, 동일한 회선으로 여러 장치가 IRQ 신호를 보내면 일반적으로 IRQ 충돌이 발생하여 컴퓨터가 멈출 수 있다.[6]

예를 들어, 모뎀 확장 카드를 시스템에 추가하여 전통적으로 COM 포트(시리얼 포트) 1에 할당된 IRQ 4를 할당하면 IRQ 충돌이 발생할 가능성이 높았다. 초기에는 IRQ 7이 사운드 카드에 흔히 사용되었지만, 나중에는 IRQ 7이 프린터 포트(LPT1)와 간섭한다는 사실이 밝혀지면서 IRQ 5가 사용되었다. 시리얼 포트는 다른 장치를 위해 IRQ 회선을 확보하기 위해 자주 비활성화되었다. IRQ 2/9는 MPU-401 MIDI 포트의 전통적인 인터럽트 회선이지만, 이는 ACPI 시스템 제어 인터럽트와 충돌한다 (SCI는 Intel 칩셋에서 IRQ 9에 하드와이어되어 있음).[6] 즉, 하드와이어된 IRQ 2/9를 가진 ISA MPU-401 카드와 하드코딩된 IRQ 2/9를 가진 MPU-401 장치 드라이버는 ACPI가 활성화된 시스템에서 인터럽트 구동 모드로 사용할 수 없다.

일부 조건에서는 두 개의 ISA 버스 장치가 동시에 사용되지 않는 한 동일한 IRQ를 공유할 수 있었다. 이 문제를 해결하기 위해 이후의 PCI 버스는 IRQ 공유를 허용한다. PCI Express는 물리적인 인터럽트 회선이 없으며, 가능한 경우 MSI(Message Signaled Interrupts)를 운영 체제에 사용한다.

4. IRQ 확인 방법

윈도우에서 IRQ 할당 정보를 확인하는 가장 쉬운 방법은 장치 관리자를 이용하거나 시스템 정보(msinfo32.exe)를 사용하는 것이다. 리눅스에서는 `cat /proc/interrupts`를 실행하거나 `procinfo` 유틸리티를 사용하여 IRQ 매핑을 확인할 수 있다.[3]

참조

[1] 웹사이트 IOAPIC - OSDev Wiki https://wiki.osdev.o[...] 2024-11-07
[2] 웹사이트 IRQ https://www.computer[...] 2019-09-13
[3] 웹사이트 1.3.1.2. PCI Bus IRQ Steering - PC Hardware in a Nutshell, 3rd Edition [Book] https://www.oreilly.[...]
[4] 웹사이트 Plug-and-Play-HOWTO: PCI Interrupts https://tldp.org/HOW[...]
[5] 서적 Reducing Interrupt Latency Through the Use of Message Signalled Interrupts https://www.intel.co[...] Intel Corporation
[6] 웹사이트 RE: ACPI Machines and IRQ 9 [was: Communicating with the NT developers] http://www.osronline[...] 2001-12-30



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com