2012-01-13 2 views
0

저는 실제로 Windows Internals 5th Edition을 읽고 있으며, 읽고 이해하기 쉬운 책은 아니지만 즐기고 있습니다.Windows에서의 트랩 디스패치

IRQL과 IDT 테이블에 대해 혼란 스럽습니다.

Windows에서 IRQL을 사용하여 사용자 지정 우선 순위 수준을 구현하고 플러그 앤 플레이 관리자가 장치의 IRQ를 IRQL에 매핑한다는 내용을 읽었습니다.

그렇다면 IRQL은 소프트웨어 및 하드웨어 인터럽트에 사용되며 예외에 대해서는 예외 디스패치 처리기가 사용됩니다.

하나의 장치가 인터럽트를 생성하면 인터럽트 컨트롤러는이 정보를 IRQ가있는 CPU에 전달합니다.

그래서 윈도우는 어떤 일이 일어나고 있는지가이 IRQ를 받아 IDT는 [IRQ_VALUE]?

를 가리키고 있는지 루틴 루틴을 (실행시 예약 IRQL로 변환?

답변

1

예, 아주에 . 높은 수준의

모든 커널 트랩으로 시작 커널 트랩 핸들러가 인터럽트, 예외 시스템 서비스 호출 및 가상 메모리 호출기를 처리

를 인터럽트 (라인 기반 발생하면 -.. 전용 핀 또는를 사용하여 메시지 기반의 주소 쓰기) 윈도우는 IRQL을 사용하여 인터럽트의 우선 순위를 결정하고이를 사용하여 해당 시간 동안 인터럽트가 제공되는지 여부를 확인합니다. HAL은 IRQ를 IRQL로 변환하는 역할을합니다. 그런 다음 IRQ를 사용하여 IDT의 인덱스를 가져오고 호출 할 적절한 ISR 라우팅을 찾습니다. 주어진 IRQ에 대해 여러 개의 ISR이 연관 될 수 있습니다. 모두 순서대로 실행됩니다. 각 프로세서에는 자체 IDT가 있으므로 여러 ISR이 동시에 실행될 수 있습니다.

앞서 언급했듯이 예외 처리는 커널 함정에서도 처리되지만 그 절차는 다릅니다. 일반적으로 스택 해제를 통해 예외 처리기를 확인한 다음 디버거 포트 등을 확인하여 시작합니다.