용어와 정의
영문 또는 원어: IRQL
영문 정식명칭: Interrupt Request Level
한글명: 인터럽트 요청 수준
IRQL은 Windows 커널에서 인터럽트 처리와 코드 실행의 우선순위를 구분하는 수준입니다. 드라이버는 현재 IRQL에 따라 호출 가능한 함수와 접근 가능한 메모리 조건을 지켜야 합니다.
정확한 의미와 원리
높은 IRQL에서 실행하는 코드는 낮은 우선순위의 처리를 기다리며 멈추는 동작 등에 제약을 받습니다. 필요한 메모리를 디스크에서 가져와야 하는 상황처럼 현재 수준에서 처리할 수 없는 접근은 문제가 될 수 있습니다.
쉽게 이해하는 사용 예시
IRQL_NOT_LESS_OR_EQUAL의 분석에서는 잘못된 주소에 접근했는지와 그때 IRQL이 얼마였는지를 함께 봅니다. 일반 사용자가 작업 관리자에서 프로그램 우선순위를 바꾸는 행위와 커널 IRQL 변경은 서로 다른 개념입니다.
종류와 관련 개념의 차이
PASSIVE_LEVEL, APC_LEVEL, DISPATCH_LEVEL 등은 커널 실행 조건을 구분하는 수준입니다. 하드웨어 인터럽트 번호와 IRQL은 동일한 숫자표가 아니며 CPU 성능 등급이나 드라이버 버전을 뜻하지 않습니다.
적용 조건과 오해하기 쉬운 점
IRQL 오류는 드라이버의 접근 조건과 실행 흐름을 조사해야 합니다. 코드에 메모리라는 표현이 있어도 RAM 불량만을 뜻하지 않으며, 사용자가 IRQL 값을 임의로 조절해 해결하는 설정 항목은 아닙니다.
관련 용어와 글
관련 기술자료
- 윈도우 오류 코드 찾아보기: 블루스크린부터 설치와 공유폴더까지
- IRQL_NOT_LESS_OR_EQUAL (0x0000000A) 블루스크린 원인과 확인 방법
- PAGE_FAULT_IN_NONPAGED_AREA (0x00000050) 블루스크린 원인과 확인 방법
- DPC_WATCHDOG_VIOLATION (0x00000133) 블루스크린 원인과 확인 방법
- BAD_POOL_CALLER (0x000000C2) 잘못된 커널 메모리 풀 요청: 원인과 확인 방법
- DRIVER_IRQL_NOT_LESS_OR_EQUAL (0x000000D1) 높은 인터럽트 요청 수준에서의 드라이버 메모리 접근 오류: 원인과 확인 방법
- CLOCK_WATCHDOG_TIMEOUT (0x00000101) 프로세서 클록 인터럽트 응답 시간 초과: 원인과 확인 방법