[FreeRTOS] Inter Task Communication
보통 프로세스간 통신을 IPC (Inter Process Communication) 라고 많이 부르지만, RTOS 에서는 보통 프로세스 보다는 Task 라는 용어를 사용하므로 ITC (Inter Task Communication) 가 될 수 있겠다.
목적은 Task 또는 ISR(Interrupt Service Routine) 이 다른 Task에게 정보 전달 하는 것 이다.
이를 수행하는 방법에는 다음과 같은 방법들이 있다.
⁜ 전역 변수 사용 ( 상호 배제에 유의 하여야 함 )
⁜ 이벤트 플래그, 세마포어 : 이벤트 발생 여부만 알려 줌
⁜ 메일박스, 메시지 큐 : 이벤트와 데이터도 함께 전달
세마포어로 구현하는 이벤트 전달 방법은 아래와 같을 수 있다.
Task는 Semaphore Take를 통해 Blocked 상태에 진입하게 되고,
다른 Task 또는 ISR로부터 Semaphore를 Give 받았을 때 blocked 상태에서 깨어 나게 된다.
양방향의 경우, ISR → Task 는 일반적인 이벤트 전달 방향이지만, 그 반대 방향 (TASK → ISR) 은 보통 사용 되지 않는다.