✺
다른 인터럽트 후반부 처리 기법과 비교하면서 알아봤으니 이제 워크큐의 특징에 대해서 알아봅니다. 첫째, 드라이버 레벨에서 워크큐는 쓰기 쉽습니다. 워크큐는 struct work_struct 구조체 변수만 설정하고 워크를 실행할 코드에 queue_work() 나 schedule_work() 함수만 추가하면 됩니다. 간단한 코드로 워크큐를 쓸 수 있다는 것은 워크큐 관련 커널 함수들이 예외 처리나 로컬리티 등등 많은 처리를 한다는 의미입니다. 둘째, 워크큐 실행 단위는 워크이며 워크는 워커 쓰레드에서 실행합니다. 워커 쓰레드는 프로세스 레벨로 실행되는데 워커 쓰레드 실행 여부는 스케쥴러가 결정합니다. 따라서 밀리 초 이내로 워커 쓰레드 실행을 제어하기는 어렵습니다. 실행 시각에 민감한 후반부 처리 용도로 워