본문 바로가기

Hello Info

IST 와 ISR


- 인터럽트 서비스 루틴(ISR Interrupt Servie Routine
커널 안에 로드된 코드의 일부 또는 함수 로써, 특정한 IRQ로 할당이 된다. ISR은 하드웨어를 제어하기 위해서 하드웨어 인터럽트 핸들(Handle)을 직접적으로 호출한다. 이로써 ISR은 다음에 나올 IST 가 실행되도록 커널에 아리는 역할을 하는 것이다. ISR은 여러 개의 인터럽트 요청에 대해서도 대응한다

- 인터럽트 서비스 쓰레드(IST interrupt Service Thread)
IST는 장치관리자(Device Manager) 를 통해 쓰레드 동작되며, 응용프로그램에서 가장 높은 쓰레드로 동작한다.

대부분의 디바이스 드라이버는 인터럽트를 이용해 컨트롤 하는것이 일반적이다. 인터럽트는 각 CPU에 따라 동작하는 방식이 다르기 때문에 해당 CPU의 인터럽트 컨트롤러에 대해서 먼저 숙지하기 바란다.

인터럽트가 사용 가능한 상태에서 인터럽트를 사용하기 위해서는 ISR에 인터럽트를 등록해야 한다. 외부에서 인터럽트 요청이 들어오면 ISR 은 해당인터럽트가 무엇인지 판단하여, 어떤 인터럽트 인지 시스템, 즉 커널에 알려준다. WinCE에서는 OAL이라고 할 수 있으며 이것이 바로 SYSINTR로 시작되는 인터럽트 ID가 되는 것이다. 커널은 인터럽트ID를 가지고 해당하는 IST를 수행하게 되는 것이다. 즉 IST는 하나의 프로세스 또는 드라이버라고 할 수 있다.
커널은 ISR로 부터 인터럽트에 대한 정보를 받아들이게 된다.

'Hello Info' 카테고리의 다른 글

0 과 0L 차이  (0) 2009.12.29
PENDING INTERRUPT  (0) 2009.12.28
원부팅, 콜드부팅  (0) 2009.12.07
DRAM Self-Refresh  (0) 2009.11.30
PDD,MDD  (0) 2009.11.19