Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  IRQL 
작성일시 : 2007. 11. 6. 15:49 | 분류 : Windows Server/Kernel

인터럽트의 우선순위는 인터럽트 요구 레벨 (IRQL)의 의해서 정의 된다.

구체적으로 IRQL=5인 인터럽트가 실행 되고 있을 경우 CPU는 IROL이0~5인 인터럽트를 보류시키고 5 인터럽트를 처리한 다음 0으로 내려가 보류중인 인터럽트를 처리한다.

그림 3-3의 High는 모든 인터럽트의 금지 맨 아래의 Passive는 일반 프로그램을 실행하는 상태를 나타내며, 특정 인터럽트는 아니다. Power Fail (전원 장애) 레벨은 사용되지 않으며, Inter-processor interrupt 는 여러 개의 CPU를 탑재한 머신에서 다른 CPU에 셧다운을 요구할 때 쓰인다. Clock은 시스템 클럽에 대한 인터렙트, 'profile'은 Windows 의 각 컴포넌트 (Exe/Dll)안에서 경과된 시간의 비율을 계산하는 프로파일링 실행 중에 실시간 클럭에서 사용하는 인터럽트다.

DPC/dispatch 는 지연 프로시저 호출 (Delayed Procedure Call)과 스레드 전환 (스레드 디스페치)를 위한 소프트웨어 인터럽트다. 지연 프로시저 호출은 I/O 접근 완료 통지 처럼 곧바로 실행하지 않아도 되는 처리를 Windows에서 실행 할 때 쓰인다. 'APC'는 비동기 프로시저 호출을 하기 위한 소프트웨어 인터럽트다 이는 특정 스레드의 컨텍스트로 함수를 실행하기위해 이용한다.

DPC와 APC는 인터럽트를 처리할 때 중요한 역활을 수행한다.인터럽트를 제대로 처리하는데 시간이 걸릴 경우 인터럽트 처리기 안에서 모든 처리를 한다면 그 사이 다른 인터럽트를 처리하지 못할 가능성이 있다. 그래서 곧바로 실행해야 하는 처리만 핸들러 안에서 실행하고, 나머지 처리는 DPC를 이용해 다음에 실행하도록 한다. DPC의 IRQL은 Passive 보다 상위이므로 다른 인터럽트 처리가 모두 끝난 후에 실행될 것을 보장해 준다.

마찬가지로 어플리케이션이 준비한 버퍼에 데이터를 써넣는 처리에서는 그 프로세스의 가상 주소 공간에 접근할 수 있어야 한다. 이런 경우 APC를 이용해 그 프로세스의 스레드로 데이터를 써 넣을 수 있도록 한다.

출처 : API로 배우는 Windows 구조와 원리

|