임베디드 용어 사전
구조·RTOS

상태 기계

현재 상태와 입력에 따라 다음 상태를 정하는 구조. 기다리지 않고 일을 쪼개는 베어메탈의 핵심 도구다.

"기다린다" 를 "지금 어디까지 왔는지 기억한다" 로 바꾸는 것이다.

/* 블로킹 — 루프 전체가 멈춘다 */
send_cmd(); delay_ms(50); read_result();

/* 상태 기계 — 매 호출마다 조금씩 진행한다 */
switch (st) {
case IDLE:  send_cmd(); t0 = now_ms(); st = WAIT;              break;
case WAIT:  if (now_ms() - t0 >= 50) st = READ;                break;
case READ:  read_result(); st = IDLE;                          break;
}

얻는 것

  • 루프가 매번 빠르게 한 바퀴 돈다 → 다른 작업이 밀리지 않는다
  • 타임아웃을 자연스럽게 넣을 수 있다 — 상태마다 진입 시각을 기록해 두면 된다
  • 통신 프로토콜 파싱처럼 단계가 있는 일에 그대로 들어맞는다

실무 팁

상태를 열거형으로 두고 전이 표를 주석이나 문서로 남긴다. 상태가 늘어나면 표가 없이는 유지가 안 되고, 이 표가 곧 테스트 케이스 목록이 된다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 베어메탈 설계 — RTOS 없이 여러 일을 하기