문제

어떤 스레드가 장치 인터럽트를 처리하는지 알고 싶습니다. 사용자 모드 스레드가 실행될 때 인터럽트가있을 때 어떻게됩니까? 또한 시스템이 인터럽트를 처리 할 때 다른 사용자 스레드가 실행할 수 있습니까?

Windows에서 인터럽트가 어떻게 처리되는지 설명하는 참조 자료를 친절하게 제안합니다.

도움이 되었습니까?

해결책

장치 인터럽트 자체는 (일반적으로) 인터럽트를 취한 CPU가있는 스레드에 의해 처리되지만 링 0 및 다른 보호 수준에서 처리됩니다. 이는 인터럽트 핸들러가 취할 수있는 일부 조치를 제한합니다. 대부분의 시간은 현재 스레드가 인터럽트가 표시되는 이벤트가 발생하기를 기다리는 스레드와 관련이 없기 때문입니다.

커널 자체는 닫힌 소스이며 내부 API를 통해서만 문서화됩니다. 이 API는 장치 드라이버 저자에게 노출되어 드라이버 개발 키트에 설명되어 있습니다.

시작하기위한 몇 가지 리소스 :

  • 모든 판 Microsoft Windows 내부 솔로몬과 러시 노 비치. 현재는 제 4 판인 것처럼 보이지만 오래된 판도 도움이 될 것입니다.

  • Windows DDK는 이제 이름을 바꿨습니다 WDK. 문서화입니다 사용 가능한 온라인 도. 반드시 읽으십시오 커널 모드 설계 가이드...

  • sysinternals 커널의 행동을 조사하고 설명 할 도구와 기사가 있습니다. 이것은 Microsoft가 Mark Russinovich에 질려서 커널이 어떻게 작동했는지에 대해 더 많이 알고있는 것처럼 보일 때까지 독립적 인 사이트였습니다. ;-)

많은 공통 장치 드라이버에 대한 소스 코드는 샘플의 DDK에 포함됩니다. 프로덕션 버전은 거의 다르지만 샘플 드라이버를 읽으면 드라이버를 직접 구현하고 싶지 않더라도 몇 가지 질문에 대답 할 수 있습니다.

다른 팁

다른 운영 체제와 마찬가지로 Windows 프로세스는 커널 모드에서 인터럽트를 중단하며 인터럽트 우선 순위 수준이 높아집니다 (IRPL이라고 생각하지만 "R"이 무엇을 의미하는지 모르겠습니다). 인터럽트 요청이 처리되는 동안 동일한 컴퓨터에서 실행되는 모든 사용자 스레드 또는 하위 레벨 커널 스레드가 중단되며 IneterRup 처리가 완료되면 재개됩니다.

Windows의 장치 인터럽트에 대해 자세히 알아 보려면 장치 드라이버 개발을 연구해야합니다. 이것은 틈새 주제입니다. 웹에서 유용한 리소스를 많이 찾을 수 없다고 생각합니다. 책이나 훈련 과정을 찾아야 할 수도 있습니다.

어쨌든 Windows는 인터럽트 요청 레벨 (IRQL)과의 인터럽트를 처리하고 이연 절차 호출. 인터럽트는 커널 모드로 처리되며 사용자 모드보다 우선 순위가 높습니다. 적절한 인터럽트 핸들러는 매우 빠르게 반응해야합니다. 그것은 절대적으로 필요한 작업 만 수행하고 향후 실행하기 위해 연기 된 절차 호출을 등록합니다. 시스템이 인터럽트 요청 수준에있을 때 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top