상태
정의
컴퓨터 과학 분야에서 상태(state)는 시스템·프로그램·알고리즘이 특정 시점에 보유하고 있는 모든 정보를 총칭한다. 상태는 외부 입력에 대한 현재의 반응을 결정하며, 시스템이 시간에 따라 어떻게 변하는지를 기술한다.
주요 사용 맥락
| 분야 | 상태의 의미 및 역할 |
|---|---|
| 유한 상태 기계(FSM) | 상태는 기계가 점유하고 있는 현재 위치를 나타낸다. 입력 심볼에 따라 상태 전이(transition)가 발생한다. |
| 프로그램 실행 | 변수 값, 메모리 내용, 레지스터 값 등 실행 중인 프로세스가 보유하는 모든 런타임 정보를 의미한다. 프로그램이 상태를 저장하고 복원함으로써 스레드 컨텍스트 스위칭이 가능하다. |
| 데이터베이스 | 트랜잭션이 진행 중인 단계(예: active, committed, aborted)와 같은 내부 관리 정보를 상태라고 한다. 또한 레코드 수준의 “현재 상태”(예: 주문 상태)도 데이터 모델링에서 사용된다. |
| 네트워크·분산 시스템 | 세션, 연결, 캐시 등 서비스가 유지하고 있는 정보를 상태라고 하며, 무상태(stateless)와 대비된다. |
| 상태 기반 설계 | 객체지향·함수형 프로그래밍 등에서 불변(immutable) 상태와 가변(mutable) 상태를 구분해 설계한다. |
| 인공지능·강화학습 | 에이전트가 환경으로부터 관찰하는 현재 상황을 “상태”라 하며, 행동 선택 정책(policy)은 상태에 기반한다. |
특징
- 명시적·암묵적 구분 – 일부 시스템은 상태를 명시적으로 저장(예: 상태 변수)하고, 다른 시스템은 암묵적으로 상태를 유지(예: 함수 호출 스택)한다.
- 상태 불변성 – 함수형 프로그래밍에서는 상태 변경을 피하고 새로운 상태를 반환하는 방식으로 부작용을 최소화한다.
- 상태 전이 규칙 – 상태 머신에서는 전이 함수를 통해 현재 상태와 입력에 따라 다음 상태가 결정된다.
관련 개념
- 상태 전이(state transition): 현재 상태와 입력에 따라 새로운 상태로 이동하는 과정.
- 상태 저장(state persistence): 시스템 종료 후에도 상태를 유지하기 위해 디스크 등에 기록하는 메커니즘.
- 상태 관리(state management): 특히 UI 프레임워크(React, Vue 등)에서 UI와 데이터의 현재 상태를 일관되게 유지·갱신하는 기술이다.
참고 문헌
- Hopcroft, J. E., & Ullman, J. D. (1979). Introduction to Automata Theory, Languages, and Computation.
- Tanenbaum, A. S., & Bos, H. (2015). Modern Operating Systems.
- Codd, E. F. (1970). “A Relational Model of Data for Large Shared Data Banks.” Communications of the ACM.
위와 같이 상태는 컴퓨터 과학 전반에 걸쳐 핵심적인 개념으로, 시스템의 동작을 이해하고 설계하는 데 필수적인 용어이다.