그라운드 임베디드 EN 유튜브 구독

노트 / RTOS

펌웨어RTOS3 / 8

우선순위와 선점: 급한 일이 먼저

선점형 스케줄러는 더 높은 우선순위 태스크가 준비되는 즉시 CPU를 넘깁니다. 우선순위를 정하는 기준.

GROUND EMBEDDED · 정리 노트RTOS 03우선순위와 선점태스크주기 / 마감우선순위모터 속도 제어1ms높음IMU 읽기5ms중상

선점형 스케줄링

높은 태스크낮은 태스크깨어남끝남
선점. 높은 태스크가 준비되는 순간 낮은 태스크는 멈추고, 높은 태스크가 끝나면 이어서 합니다.

FreeRTOS 기본 동작은 "Ready 상태인 태스크 중 가장 높은 우선순위를 실행"입니다. 낮은 태스크가 실행 중이어도 높은 태스크가 깨어나면 즉시 바뀝니다. 같은 우선순위끼리는 틱마다 번갈아 실행(라운드 로빈)합니다.

우선순위 정하는 기준

마감이 짧고 엄격한 것일수록 높게 줍니다(비율 단조 스케줄링의 직관).

태스크 주기 / 마감 우선순위
모터 속도 제어 1ms 높음
IMU 읽기 5ms 중상
CAN 통신 10ms 중
화면 갱신 50ms 낮음
로그 저장 여유 가장 낮음

"중요한 것"이 아니라 "늦으면 안 되는 것"이 높은 우선순위입니다. 화면이 중요해 보여도 50ms 늦어도 문제가 없습니다.

3D 실험실여기까지 읽은 내용을 직접 돌려 볼 수 있습니다→

인터럽트와의 관계

인터럽트는 어떤 태스크보다도 먼저 실행됩니다. 전류 제어처럼 10kHz 이상 루프는 태스크가 아니라 인터럽트에서 돌리고, 태스크는 그 위의 느린 루프를 맡깁니다.

굶주림

높은 우선순위 태스크가 Blocked로 가지 않고 계속 돌면 아래 태스크는 영원히 실행되지 않습니다. 모든 태스크에는 기다리는 지점(delay, 큐 대기)이 있어야 합니다.

3D 실험실에서 직접 돌려 보기값을 바꾸며 이 노트의 원리를 확인합니다→영상으로 이어 보기RC카 만들기 시리즈 6편대기업 임베디드 개발자 Lego RC카 메이킹 시작합니다. 【RC카 개발1】FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →