태스크릿

포스트: 3
Tags

Posts

3 posts

[리눅스커널][태스크릿] 태스크릿은 언제 실행할까? tasklet_action_common() 분석

Guillermo Austin Kim|2019년 4월 14일

태스크릿은 언제 실행할까? 태스크릿은 Soft IRQ 서비스 중 하나입니다. 따라서 Soft IRQ 서비스를 실행하는 __do_softirq() 함수에서 태스크릿 서비스 핸들러 함수를 호출합니다. Soft IRQ 전체 흐름도에서 태스크릿 서비스를 실행하는 그림을 보겠습니다. [태스크릿 전체 흐름도에서 태스크릿 실행 단계] [1] 단계에서 인터럽트가 발생한 후 인터럽트 핸들러에서 태스크릿 스케줄링을 실행했습니다. 이번엔 [2] 단계에서 태스크릿 서비스 핸들러가 호출하는 과정을 살펴봅니다. 전체 Soft IRQ 구조에서 __do_softirq() 함수가 호출되는 흐름은 6.8 절을 참고하세요. 태스크릿 서비스 핸들러인 tasklet_action() 함수를 실행하는 출발점은 __do_softirq()

[리눅스커널][태스크릿] 태스크릿(struct tasklet_struct)은 어떻게 등록할까?

Guillermo Austin Kim|2019년 4월 10일

먼저 태스크릿을 등록하는 2가지 방법을 소개합니다.1. 태스크릿 전역 변수 선언 : DECLARE_TASKLET() 혹은 DECLARE_TASKLET_DISABLED() 함수 호출2. 태스크릿 초기화 함수 호출 : tasklet_init() 함수 DECLARE_TASKLET() 혹은 DECLARE_TASKLET_DISABLED() 함수로 태스크릿 등록하기 DECLARE_TASKLET() 혹은 DECLARE_TASKLET_DISABLED() 매크로를 써서 태스크릿을 초기화하는 방법입니다. 태스크릿 전역 변수는 컴파일 타임에 자료구조가 정해집니다.[https://elixir.bootlin.com/linux/v4.19.30/source/include/linux/interrupt.h]1 #define DE

[리눅스커널][태스크릿] 태스크릿(struct tasklet_struct) 이란 무엇인가

[리눅스커널][태스크릿] 태스크릿(struct tasklet_struct) 이란 무엇인가

Guillermo Austin Kim|2019년 4월 10일

태스크릿은 프로세스와 전혀 상관 없는 용어입니다. 태스크릿이란 이름 때문에 많은 분이 프로세스와 관련됐다고 오해할 수 있습니다. 태스크릿은 Soft IRQ 서비스 중 하나로 동적으로 Soft IRQ 서비스를 쓸 수 있는 인터페이스입니다. 드라이버 레벨에서 태스크릿은 자주 쓰고 활용합니다. 태스크릿은 무엇일까? 우리는 인터럽트 후반부 기법으로 Soft IRQ에 대해 다음과 같은 내용을 배웠습니다. 인터럽트 핸들링 후 바로 Soft IRQ 서비스 실행 인터럽트 발생 후 바로 후반부를 처리할 때 용이 다른 인터럽트 후반부 기법에 비해 Soft IRQ는 인터럽트 후반부를 빨리 처리해야 할 때 적용합니다. 그러면 이런 장점이 있는 Soft IRQ 서비스를 드라이버 레벨에서 쓰면 좋을 때가 있습니다