FSM 정리


1. 상태 / States

- 시스템이 작동하는 동안의 상황이나 조건

- 특정 외부 이벤트를 기다리기도 한다


2. 확장상태 / Extended States

- 프로그램 변수는 상태와 분리해서 생각

- 시스템의 완전한 조건(확장상태)은 질적인 면인 상태와 양적인 면인 확장상태변수를 합한 것

- 예를 들어 키보드의 비헤비어가 지금까지 입력한 문자의 수에 좌우되며, 100,000번을 누르면 키보드가 망가져서 broken 상태에 들어간다고 하면,,100,000개의 상태를 도입해야한다

- 32비트 카운터가 있는 확장상태머신을 만들어 카운터만 1씩 증가시키고, 100,000번에 도달하면 상태머신이 broken상태로 들어가게 함


3. 가드 / Guards

- 확장상태변수이 값에 임계치를 정해두는 것

- 가드조건은 상태전이 같은 어떤 작업을 허용하거나 금지하는 방식을 통해 상태머신의 비헤비어에 영향을 미친다

- 가드는 상태머신 형식에 메모리(확장상태변수)가 추가되면서 필요해짐


4. 이벤트 / Event

- 시스템에 있어 중요한 사건이 어떤 시간과 공간에서 발생하는 것

- 이벤트란 사건의 유형(Type)

- 매개변수

- 허가된 이벤트 인스턴스는 전달되어 처리를 기다림 -> 이벤트 인스턴스는 상태머신에 보내짐(현재 이벤트) -> 상태머신이 처리를 마치면 이벤트 인스턴스는 소멸


5. 액션과 전이 / Actions and Transitions

- 이벤트 인스턴스가 넘어오면 상태머신은 액션을 수행함으로써 응답

- 현재 이벤트에 연결된 모든 매개변수 값은 이 이벤트로 인해 수행되는 모든 액션에서 직접 사용가능

- 한 상태에서 다른 상태로 넘어가는 것을 상태전이

- 전이를 일으킨 이벤트를 촉발 이벤트(Triggering event), 간단히 트리거(trigger)라고 한다

- Exit from to Current state -> Action -> Enter to the next state


6. Mealy Automata & Moore Automata

- Mealy Automata : 상태전이와 Action을 한덩어리로 봄, 액션이 실행되는 동안에는 어떤 상태에도 위치하지 않고, 두 상태 사이에 있음

- Moore Automata : 상태전이와 Action 사이에 경계를 둠, 액션이 없는 전이는 순간적인 것으로 간주, 액션은 여전히 시간을 요하지만, 명확히 정의된 상태 문맥에서 실행된다


7. 실행모델 /  RTC단계

- RTC(Run to Completion)

- 액션을 수행하는 도중 두 가지 모드를 취사선택할 수 있다

- idle(다음 이벤트가 도착하기를 기다림), busy(이벤트에 응답함)

- 이벤트 처리중 다른 이벤트가 도착할때 선점형처리와 비선점형 처리에 따라 틀림

- 선점형 모델은 낮은 우선순위의 이벤트를 일시 정지하고 높은 새 이벤트 처리를 시작

- 비선점형 모델은 새 이벤트를 저장하고 있다가 먼저 발생한 이벤트의 처리가 끝나면 처리 (RTC)


8. 상태전이 다이어그램 / State Transition Diagram

- 책참조


참조문헌 : 실시간 임베디드 퀀텀 프로그래밍 (원본:Practical Statechares in C/C++)

Posted by 용학도리
,