PREEMPT_RT 리눅스나 차량용 RTOS 환경에서 고신뢰성 제어 소프트웨어를 개발할 때 스레드 설정의 엄격한 규율은 필수적입니다. 제어 루프에서 단 한 번의 페이지 폴트나 우선순위 역전이 발생해도 조향 명령이 지연될 수 있습니다. 본 가이드에서는 핵심 스레드 설계 원칙을 제시합니다.
실시간 주행 제어 루프 중 동적 메모리 할당(malloc)은 페이지 폴트를 유발하여 실시간 스레드를 수 밀리초 동안 멈추게 만듭니다. 차량용 POSIX 애플리케이션은 스레드 생성 전 `mlockall(MCL_CURRENT | MCL_FUTURE)`을 호출하여 모든 메모리를 물리 RAM에 잠그고, 스택 사전 터치 및 정적 메모리 풀을 강제해야 합니다.
낮은 우선순위의 로깅 스레드가 뮤텍스를 점유한 상태에서 중간 순위 태스크에 선점되면, 최우선 순위인 브레이크 제어 스레드가 무기한 대기하는 우선순위 역전이 발생합니다. POSIX에서는 `PTHREAD_PRIO_INHERIT`을 설정하여 락을 쥔 스레드의 우선순위를 대기자 수준으로 즉시 승격시켜 지연 없이 락을 해제하도록 보장합니다.