본문 바로가기
3. 개발 관련/정리 :: issue 와 resovle

irq thread 수행 흐름,

by kyuho.choi 2009. 9. 15.
728x90
반응형

RT Preempt patch 를 적용한 리눅스 2.6.15 버전 커널의 irq thread 수행 흐름은 아래 그림과 같다.




위의 구조에 모두 표현 하지 않았으나, RT Patch 된 IRQ 에서는 preemption 이 원활하게 이루어 지는 구조를 제공한다. 심지어 hardirq 에서도 선점 가능한 구조를 지원하며, 이는 irq descripter 에 thread 추가와 depth 설정등을 통한 중첩 인터럽트 허용등이 기능이 부가적으로 지원되기 때문이기도 하다.


내용을 보며 개인적으로 궁금한것은 그림의 중간쯤 보면 do_irqd에서 do_hardirq와 __do_softirq를 순차적으로 호출하는 부분이다. hardirq와 softirq를 왜 분기식으로 호출하는 것이 아니라 순차적으로 호출하게 되는 것인지, 아는게 없고 미천하여 알 수가 없다. 


한가지 차이점을 들자면, do_hardirq에서는 kthread_create에서 생성하는 커널 스레드를 인자로 받는 인터럽트의 디스크립터를 파라미터로 입력 받다는 것 정도... __do_softirq는 함수 타입이 void이므로 딱히 ... 뭐 ... ㅠㅅㅠ
아흠... 미약하게 나마 공부가 되긴하니 그나마 낫다고 해야 할런지도 모르겠다 ㅎㅎ


728x90
반응형

댓글