목록2025/06/21 (2)
지노랩 /JinoLab
RTOS를 쓰다 보면“태스크가 안 돌아요…” “언제 깨어나는 거죠?” 같은 질문을 매번 하게 됩니다.이번 글에서는 가장 헷갈리는 BLOCKED 상태와 SUSPENDED 상태를 중심으로,Delay API·동기화 오브젝트까지 실전 위주로 정리했습니다.1. 4대 최상위(Task) 상태 복습상태 의미 전이(Transition)RunningCPU 독점 실행 중❌ (오직 1 개)Ready실행 조건 만족 ➜ CPU 할당만 대기▸ 스케줄러가 우선순위 기준 선택Blocked이벤트·시간·자원 을 기다리며 “잠시 쉼”▸ 이벤트/타임아웃 발생 → ReadySuspended사용자 호출로 ‘중단’ – 커널도 안 깨움▸ vTaskResume() 으로만 Ready포인트Blocked ↔ Ready 는 자동 전환Suspended ↔ R..
“내 태스크가 왜 안 돌지?”RTOS 디버깅에서 가장 먼저 확인해야 할 것은 현재 태스크의 상태입니다.이번 포스팅에서는 FreeRTOS(프리RTOS)를 기준으로 4 가지 최상위(Task) 상태와 전이(transition)를 한 번에 정리해 드립니다.0. 배경 지식용어 의미 기억 포인트태스크(Task)FreeRTOS가 스케줄링하는 실행 단위(=쓰레드)메모리: 전용 스택 + TCB(Task Control Block)스케줄러어떤 태스크를 CPU에 올릴지 결정Tick(타이머 인터럽트)마다 동작PSP / MSPProcess Stack / Main Stack 포인터• PSP → 각 태스크 전용 스택• MSP → 커널·인터럽트 스택1. Running – “CPU는 내 꺼!”단일 코어 MCU에서는 오직 하나의 태스크만..