Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

231224
1178
109353


[리눅스커널] 스케줄링: 선점 스케줄링 발생 시점을 아는 것은 왜 중요할까? 10. Process Scheduling

리눅스 시스템 개발자로 문제 해결 능력을 키우기 위해선 선점 스케줄링 발생 시점을 아는 것이 중요합니다.

리눅스 디바이스를 개발하다 보면 다양한 버그를 만납니다. 수 많은 버그 중 선점 스케줄링으로 시스템이 오동작하는 상황을 겪을 수 있습니다. 예를 들어 커널 패닉 발생하는 가장 큰 원인 중 하나가 선점 스케줄링 때문입니다.

리눅스 커널 커뮤니티에서 배포하는 커널 패치도 마찬가지 입니다. 선점 스케줄링으로 발생하는 레이스 컨디션을 막기 위한 패치가 많습니다.

누구나 리눅스 커널은 안정적인 코드이니 잘 실행될 것이라 믿고 커널 함수를 써서 드라이버 코드를 작성합니다. 

하지만 선점 스케줄링 동작 원리를 잘 알고 있는 개발자는 더 안정적인 코드를 작성할 수 있습니다. 또한 선점 스케줄링으로 버그가 발생해도 문제점을 더 빨리 분석할 수 있습니다. 선점 스케줄링으로 시스템이 오동작을 해도 어느 코드부터 분석할 지 알 수 있기 때문입니다.

시스템 오동작을 디버깅을 하기 위해선 먼저 선점 스케줄링이 언제 발생하는지 선점 스케줄링을 어떤 방식으로 지연하는지 알아야 합니다. 그래야 다양한 문제 해결 능력을 키울 수 있습니다.


"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" 

Thanks,
Austin Kim(austindh.kim@gmail.com)

Reference(프로세스 스케줄링)

스케줄링 소개
프로세스 상태 관리
   어떤 함수가 프로세스 상태를 바꿀까?
스케줄러 클래스
런큐
CFS 스케줄러
   CFS 관련 세부 함수 분석  
선점 스케줄링(Preemptive Scheduling)   
프로세스는 어떻게 깨울까?
스케줄링 핵심 schedule() 함수 분석
컨택스트 스위칭
스케줄링 디버깅
   스케줄링 프로파일링
     CPU에 부하를 주는 테스트   
     CPU에 부하를 주지 않는 테스트 

핑백

덧글

댓글 입력 영역