본문 바로가기

CS/[Embedded]Embedded System Software

[Embedded] Interrupt Context

interrupt handler 를 실행하는 동안 커널은 interrupt context 상태가 된다.

 

이와 다르게 process context는 커널 동작 상태 중 하나로 system call 을 실행하거나 kernel thread를 실행할 때와 같이, 프로세스 대신에 커널이 실행되는 상태이다.

따라서 process context에서 current 매크로는 관련 태스크를 가리키고, 커널과 프로세스가 연관되어 있는 상태이다 보니, 휴면 상태가 되거나, 스케줄러를 호출할 수 있다.

 

반면 interrupt context는 특정 프로세스와 묶여 있지 않기 때문에 current 매크로는 큰 의미가 없을 뿐더러, 뒤에 버티고 있는 프로세스가 없어 interrupt context는 휴면 상태가 될 수 없다.

만약 휴면상태가 될 수 있는 함수는 interrupt context에서는 호출할 수 없으며 호출하면 위험할 수 있다. 

즉, interrupt handler에서 사용 가능한 함수는 제한적일 수 있는 것이다.

 

interrupt handler는 다른 코드를 중단시키고 실행되는 것이므로 interrupt context에서는 실행 시간이 매우 중요하다.

빠르고 간단해야 하며, handler에서 top half, bottom half 두 부분으로 나누어 top half 에서는 빠른 처리, 즉 급하게 처리해야하는 것들을 주로 담당하고, 많은 시간이 소요되는 처리는 bottom half(후반부에서의 처리)로 옮겨서 처리해야한다.