오늘 아침 산책하며 횡단보도 신호가 보였다. 멈추지 않고 계속 걷고 싶어 옆 아파트 단지 주차장으로 돌아가는 길이었다. 문득 실시간 시스템과 비실시간 시스템을 설명하기 좋은 메타포 같아서 정리해 본다 😆
앞에 있는 횡단보도를 건너는데 곧바로 신호가 바뀔수도 있고, 최대 5분 뒤에 신호가 바뀔 수 있는 횡단보도 신호 시스템이 있다고 가정하자. 그리고 조금 옆으로 돌아가면 신호 없이 곧바로 건널 수 있는 길이 있고 그길은 항상 2분이 걸린다고 하나 더 가정해 보자.
실시간 시스템은 한마디로 Deterministic(결정론적)한 특성을 가짐을 의미한다. 풀어보면 결과가 상황에 따라 이랬다가 저랬다가 하는 것이 아니라 항상 결정되어 있다는 것이고 그래서 결과가 예측 가능 하다는 뜻이다.
위의 가정으로 돌아가보자. 길을 건널 때 신호가 즉시 바뀌면 빨리 건널 수 있지만 어떨 때는 5분이 걸리는 횡단보도 신호 시스템은 실시간 시스템일까? 답은 사용자의 요구(요구되는 Deadline)에 따라 다르다. 사용자가 2분 내에 항상 건너야 하는 요구가 있다면 이는 실시간 시스템이 될 수 없다. 반면 사용자가 5분 안에 건너야 한다면 이는 실시간 시스템이 될 수 있다.
사용자가 전자의 요구(항상 2분 내에 건너야 함)를 가진다면 두번째 시스템 곧 즉시 바뀌어 빨리 건너는 기회를 놓치칠 수 있더라도 힝상 2분내에 건넘을 보장하는 우회 도로가 답이될 것이다.
이처럼 실시간 시스템은 사용자의 Deadline 요구사항과 Deterministic 한 특성으로 설명될 수 있다.
정리하면 실시간 시스템은 항상 정해진 결과를 보장하면서 사용자의 Deadline 요구사항을 만족하는 시스템이다. 실시간 시스템은 그냥 반응이 빠른 모호한 정의로 표현 될 수 없는 것이다.