DPC(Deferred Procedure call) 및 디스패치(Dispatch) 앞에서 알아본 APC와 마찬가지로 DPC도 또한 소프트웨어 인터럽트이다. DPC를 이해하기 위해선 Dispatch에 대해 알아야한다. Dispatch란~? Dispatch는 한 스레드의 실행이 길어져서 스케줄링을 다시 해야하는데, 자발적인 대기상태 전환이나 종료가 안되는 경우 스케쥴링을 다시 하여 스레드 실행을 조절하는 것을 의미한다. DPC란~? 현재 Thrad가 수행중에 IRQL상에 더 높은 인터럽트가 발생하면 현재 수행중인 Thread를 저장하고 해당 인터럽트를 실행한다. 이와같이 하드웨어 인터럽트 서비스를 적절하게 제공하기 위해 함께 동작하는 장치 인터럽트를 제어할때 사용한다. 그런데 이런 인터럽트도 여러 Threa..
APC(Asynchronous procedure call) 인터럽트 저번 시간에 IRQL에 대해 학습해 보았다. IRQL의 분포에 대해 보면 하드웨어 소프트웨어 그리고 passive 모드로 크게 구분할 수 있다. 복습겸 해서 3가지 모드에 대해 알아보겠다. 하드웨어 : 일반적인 하드웨어 요청에 의한 인터럽트이다(마우스. 키보드 등이 대표적 경우) 소프트웨어 : APC DPC로 구성되어 있음 Passive : 일반적인 프로그램 수행 그중 APC는 소프트웨어에 존재한다. 그럼 해당 인터럽트가 어떤 내용인지 알아보도록 하겠다. Internal 책의 내용을 빌려 설명하면 APC는 스레드가 같은 하나의 수행할 job에 대한 대기열로 볼 수 있고, 커널이 이 APC 루틴을 수행한다. 즉, 스레드의 실행은 APC의 ..
IRQL은 무엇인가 2장에서 IRQ와 IRQL의 관계에 대해 설명했다.(물론 내 주관적인 견해다 ) IRQ : 물리적인 인터럽트 IRQL : Windows에서의 논리적인 인터럽트 라고 생각한다. 윈도우에서의 IRQL의 구조는 다음과 같다. ' 여기서 중요한 것은 IRQL이 3가지로 나뉜다는 점이다. 그 3가지에 대해 알아보겠다. 1. IRQL의 구조 1) Hardware Interrupt IRQ라고 생각하면 된다. 비동기적으로 하드웨어 적으로 걸려오는 인터럽트를 말하며 간단한 예를 생각하면 키보드 입력 또는 마우스 입력과 같은 것을 의미한다. 2) Software Interrupt 이부분이 추가되었으며 이부분에 대해서는 다음 장에서 알아보겠따. DPC, APC의 개념에 대해서 숙지하고 있어야하며 어떤 경..
2. Interrupt 구동 원리 Interrupt의 구동 원리는 간단하다. 즉 우선순위 방식을 사용하고 있다. 각각의 Interrupt는 우선순위를 가지고 있기 때문에 해당 우선순위 순으로 수행이 되어진다. 여기서 알아야 할 것은 높은 우선순위를 가지고 있는 프로세스는 낮은 우선순위를 생각하지 않는다는 것이다. 왠지 모르게 인생사에 대해 생각하게 하는 구절이다. 이때 OS나 컴퓨터구조에서는 IRQ라는 용어를 사용한다. 이와 비슷한 원리로 윈도우에서는 IRQL이라는 것을 사용한다. IRQL은 다음장에서 알아보도록 하겠다. (그만큼 내용이 많다;;;;) IRQ와 IRQL의 관계는 물리적과 논리적 관계라고 할 수 있다. IRQ가 프로세서 자체에서 할당하는 번호표라면 IRQL은 윈도우에서 할당하는 번호인 것이..