커널모듈의 루틴이 실행될때

declspec의 이미지

윈도우즈의 .sys 파일이나
리눅스의 .ko 파일들처럼
LKM 파일안에도 여러 함수들이 있을수 있고
그 함수들이 호출될수 있는데요

커널모듈 내부의 이런 함수들이 수행될때
context switching 이 발생하나요?

태훈의 이미지

인터럽트 컨텍스트, 즉, ISR(Interrupt Service Routine, top half)을 실행하는 도중에는 문맥 교환(Context Swiching)이 발생하지 않습니다.

나머지 루틴은 문맥 교환이 가능합니다. 예를 들면,

  • 명시적으로 schedule() 함수를 호출하는 경우
  • 인터럽트가 발생하여 ISR로 부터 커널로 복귀하는 경우

가 있습니다. 커널 모듈이라고 해도 모듈 파일(.ko)만 따로 있는 것이지, 로드하게 되면 어차피 커널에서 동작하는 루틴들 입니다. 문제는 커널이 선점 가능하기 때문에 동기화 문제로 꽤나 골치가 아프죠.

Just do it!