2010-12-10 3 views
1

하드웨어/드라이버가 인터럽트를 발생시키는 방법을 알려주십시오. SMP에서 어떤 CPU가 인터럽트됩니까? IRQ가 여러 장치에서 공유되는 경우 커널이 인터럽트를 일으킨 장치를 식별하는 방법을 설명합니다.인터럽트 및 인터럽트 처리에 관한 질문

/가네

+0

질문에 흥미가 있지만 경고해야합니다. "하드웨어/드라이버가 인터럽트를 발생시키는 방법"에 대해서는 약간 모호합니다. 간단히 말해, HW는 주어진 인터럽트 벡터에서 코드를 실행합니다. 그게 다 끝났어. 좀 더 구체적인 것을 원한다고 생각합니다. –

+0

주변 하드웨어가 CPU주의를 필요로 할 때마다 인터럽트가 발생합니다. 그렇지 않습니까? CPU는 해당 인터럽트에 대한 인터럽트 처리기를 실행합니다. 이제 내 질문에 하드웨어가 인터럽트를 발생시키는 방법 (일부 명령을 실행하거나 ...) –

답변

1

전통적 인터럽트가 생성되는 높은 (또는 낮은 또는 모서리)이며, CPU가 실행을 시작할 때, 인터럽트 컨트롤러 장치에서 실행되는 실제 인터럽트 와이어가 인터럽트 핸들러.

최신 시스템에서 인터럽트는 인터럽트 컨트롤러로 보내지는 버스의 메시지 (또는 여러 개있을 수 있음) 경향이 있습니다.

자세한 내용은 더 구체적 일 필요가 있습니다. 세부 정보는 어떤 종류의 하드웨어에 따라 달라집니다.

+0

장치가 x86 컴퓨터에서 인터럽트를 생성하는 방법을 알려 주시겠습니까? –

+0

x86의 문제가 아니거나, PCI 대 Hypertransport, 온칩 디바이스 등등입니다. – mpe

+0

디바이스가 PCI에 연결된 인터럽트 라인을 어떻게 높이게합니까? –

0

ISR이라고도하는 인터럽트 처리기는 OS의 장치 드라이버의 일부입니다. OS에서 각 irq 번호는 인터럽트 컨트롤러의 인터럽트 라인을 나타냅니다.

장치는 인터럽트 컨트롤러에 유선이며 인터럽트 컨트롤러는 장치에 인터럽트가 생성되면 해당 CPU에 신호를 보냅니다. 인터럽트 대상 CPU는 각 인터럽트 라인마다 인터럽트 컨트롤러에서 프로그래밍 할 수 있습니다.

ARM의 GPIO와 같은 하드웨어에서 인터럽트 번호를 공유하려면 인터럽트 컨트롤러 또는 장치가 실제 인터럽트 번호에 대한 추가 레지스터를 제공해야합니다. 또한 ISR은 실제 IRQ 번호에 대해 해당 레지스터를 참조해야합니다.