튜링 머신, 상태 머신에 대한 고찰

sith-call.dev·2022년 5월 4일
0

Computer Science

목록 보기
9/15

고찰

튜링 머신은 상태 머신이라고 생각할 수 있다. 왜냐하면 튜링 머신은 그 자체로 가질 수 있는 상태의 집합이 있고, 어떤 상태에서 다른 상태로 전이해 가면서 주어진 명령을 수행하기 때문이다. 그런데 이 상태 머신이란 개념이 무척이나 자주 다른 영역에서도 사용된다.


위키백과(튜링 기계)

운영체제

튜링 머신은 하나의 소프트웨어에 대응된다. 그리고 이런 소프트웨어들은 프로세스가 되어 컴퓨터 상에서 실행된다. 그리고 이 프로세스들은 원래의 튜링 머신이 그러했듯 상태를 가진다. 그리고 이러한 상태를 관리하는 소프트웨어를 운영체제라고 부른다. (덧붙여 운영체제 또한 튜링 머신이기에 상태를 가진다. 이때 운영체제는 컴퓨터가 켜져 있는 한 항상 running 상태이고, 컴퓨터가 꺼지면 그제서야 terminated 상태가 된다.)

네트워크 프로그래밍

네트워크 프로그램 또한 튜링 머신이다. 그렇기에 상태 머신이고 상태를 갖으며, 상태를 전이하면서 주어진 명령을 수행한다. 사실 TCP 소켓 프로그래밍을 하면 너무나 당연하게 Flow Chart를 보게 된다.

  1. SOCKET
  2. Bind
  3. Listen
  4. Accept
  5. Read & Write
  6. Close

대략 위의 순서대로 소켓 구조체는 라이프 사이클을 갖는다. 그리고 이때 임의적으로 해당 라이프 사이클 간의 전이 관계를 변경하여 소켓이 계속 새로운 요청을 accept할 수 있도록 iterater를 만들 수도 있다. 즉, 상태 전이를 개발자가 조작하여 원하는 명령어를 수행하도록 만드는 것이다.


Wikipedia(Transmission Control Protocol)

World Wide Web

World Wide Web, 줄여서 W3 또는 Web(웹)이라고 부르는 기술 또한 상태 머신이다. 그러나 이것이 상태를 갖고 전이한다는 메커니즘을 알기 위해선 REST 구조에 대해서 알아야 한다. 로이 필딩이 웹의 붕괴를 막기 위해서 고안한 구조로서, 이 구조를 제시한 논문에서 웹이 상태를 갖고 있으면 이 상태를 전이하면서 원하는 바를 이룬다는 것을 표현한다. 사실상 웹 또한 상태 머신이지만 이를 깨닫기는 꽤나 오랜 시간이 걸렸다.

위의 사진에 대해서 설명을 해보자면, 서버에는 추상적으로 resource란 것들이 저장되어 있다. 이때 클라이언트가 갖고 있는 하나의 resource가 클라이언트의 상태라고 볼 수 있다. 그리고 이 정보들은 유기적으로 연결되어 있기 때문에, 클라이언트는 서버 내의 resource를 전이하면서 자신의 상태를 바꿔가고, 이에 따라서 원하는 명령을 수행할 수 있는 것이다.

자세한 내용은 아래의 링크를 참조하라.
https://velog.io/@chldntjr0425/REST-Architecture

결론

모든 프로그램은 상태 머신이다.
그 예시로서, OS, Network TCP Protocol, Web을 들었다. 그러나 찾고자 한다면 모든 프로그램에서 상태 머신을 찾아낼 수 있다. 특히 DB에서도 영속성 관리 또한 상태 머신으로 나타낼 수 있다.

profile
lim (time → ∞) Life(time) = LOVE

0개의 댓글