리눅스 커널 타이머 인터럽트, top half부터 bottom half 세 가지 기법까지
hrtimer 콜백에서 시작해서 tasklet, workqueue, threaded IRQ 세 가지 bottom half 기법의 속도 차이를 직접 측정해본 기록이다. 원리를 이해하는 것과 그 원리가 실측치로 얼마나 정직하게 드러나는지 확인하는 것은 완전히 다른 문제였다.
운영하면서 막힌 문제와 공부한 내용을 다른 사람도 읽을 수 있게 정리한 글입니다.
hrtimer 콜백에서 시작해서 tasklet, workqueue, threaded IRQ 세 가지 bottom half 기법의 속도 차이를 직접 측정해본 기록이다. 원리를 이해하는 것과 그 원리가 실측치로 얼마나 정직하게 드러나는지 확인하는 것은 완전히 다른 문제였다.
리눅스 커널 인터럽트 처리의 top half/bottom half 구조를 실제로 구현해보는 최종 과제를 시작했습니다. 타이머 인터럽트로 접근하기로 했는데, 하드웨어 IRQ 라인이 없는 상황에서 어떻게 인터럽트를 만들지부터 막혔습니다.
리눅스 커널 모듈 과제를 하다가 하드웨어 버튼 없이 인터럽트를 테스트해야 하는 상황이 생겨서, 커널 타이머로 인터럽트를 흉내 내는 방법을 공부하다가 결국 Tasklet, Work Queue, Threaded IRQ까지 후반부 처리 기법 전체를 파고들게 된 하루였습니다.
임베디드 리눅스 스터디 1주차 과제로 라즈베리파이 커널을 직접 크로스 컴파일해서 보드에 올려봤다. 결과부터 말하면 빌드는 성공했는데 파이가 먹통이 되는 사고를 쳤고, 그 원인을 추적하는 과정에서 커널-모듈 관계를 훨씬 제대로 이해하게 됐다.