정보통신망에서 서로 통신을 하기 위해서 신호의 동기화가 중요하다.  다른 이름으로는 "초치기" 라고도 부르는 이 기술은 고등학교 학생들이 시험 볼 때 부정행위를 저지르기 위하여 사용하면서 유명해진 기술이다. 동기화에는 두가지가 있는데 하나는 클럭 동기화이고, 다른 하나는 글자 동기화이다.

클럭 동기화는, 0과 1을 구별하기 위한 동기화이다.

컴퓨터가 신호를 0과 1만을 이용해서 주고받는건 맞는데, 문제는 뭐가 0이고 뭐가 1인지도 가르쳐 줘야 한다는 것이다. 이걸 어떻게 하냐면, 신호를 보내는 쪽에서 계속 클럭 신호를 보내면 받는 쪽에서 클럭 속도를 조금씩 조절하면서 똑같이 들어올 때 까지 맞춰보는 것이다. 만화에도 나왔다 - "너의 공격패턴을 파악했다. 강약강강..." 뭐 이런거.

이렇게 해서 클럭 동기화를 해 놓고 나면, 이제 그 다음은 글자 동기화이다.

가령, 어느 순간에 다음과 같은 신호를 받았다고 하자.
01011011101010100001010110101010110101010101010101010001010110101010

이게 0과 1로 이루어진 신호인건 알겠고, 이제 이걸 8자리씩 끊어서 아스키 코드로 해석한 후, 글자로 바꾸면 되는데, 문제는 어디서부터 8자리씩 끊느냐이다. 언제부터 시작해야 하는지가 문제인데, 무려 8가지 가능성이 있는 것이다. 그리고 한번 틀리면 그 뒤로 전부 다 틀린다.

그래서 시작할 때 동기화를 위해서 "동기"라는 문자를 보낸다. 뭐 "동기"라는 건 그 신호에 담긴 의미가 그렇다는 것이고.
가령 "01001010"이 그런 의미를 담고 있다고 하자. 그럼 신호를 받는 쪽에서는, 계속 기다리면서 01001010이 연속적으로 들어올 때 까지 기다린다. 그리고 기다리다가 그 신호가 들어오면 그때부터 8자리씩 끊어서 해석을 시작한다.

근데 뭐 이게 하다보면, "10100100"으로 들어오더라도 연속적으로 몇번 들어오면 동기 신호가 될 수도 있다. 그래서 그걸 방지하기 위해서 동기화 신호를 연속적으로 3번정도 보내고 그 다음부터 진짜 신호를 전송하기 시작한다.

이제 독자들의 관심사는, 도대체 이게 초치기랑 무슨 관련인가 - 왜냐하면 성적은 잘 받으면 좋으니까 - 하는 의문이 들 것이다.

초치기 테크닉은, 우선 클럭 동기화에서 시작한다. 시험장에 일반적으로 손목시계는 차고 들어갈 수 있으므로 미리 계획한 인원들이 시간을 초 단위로 모두 동일하게 맞춰놓는다. 이것이 바로 클럭 동기화이다.

그 다음, 인원들 중 공부를 잘하는 인간이 미리 시험 문제를 빠르게 푼다. 한 10분에서 15분 정도.
그리고 미리 약속해둔 시간 - 가령 시작 후 15분 부터 - 이 되면, 신호를 전달한다. 미리 풀어둔 그 사람은 시계를 보다가 적당한 시간에 헛기침을 하는데, 1초때 기침하면 1번, 2초때 기침하면 2번, 등등.
이것이 곧 문자 동기화이다.

하지만 완전 무결점인 방법은 완벽하기 때문에 발생하는 치명적인 단점이 있는데, 시험지 넘기는 시간까지 동기화 되어서, 시험지 넘길 때가 되면 초치기에 참가한 사람이 모두 동시에 시험지를 넘긴다는 점이다.
나 고등학교 다닐 때, 3학년 선배들 중 어느 한 반에서, 반 전체가 이 방법으로 모의고사 풀다가, 시험지 넘길 때 모든 책상에서 "휘리리릭"하는 소리가 동시에 나는 바람에 걸렸다고 한다. -_-;

아무튼. 이런식의 테크닉은 자연계에서도 나타나는데, 유전자가 단백질로 번역될 때 나타난다.

유전자는 알다시피 염기 A, G, T, C로 이루어져 있다. 이 네가지가 어떤 순서로 나타나느냐에 따라 아미노산이 뭐가 오느냐가 결정된다. 근데 아미노산은 20종류고 염기는 4종류니까, 염기 1개가 아미노산 1개로 번역될 수는 없다.(비둘기집의 원리) 따라서, 대충 때려맞춰봐도 염기 3개가 모여 있어야 20종 중의 1개를 지정할 수 있을 것이다. 이 3개를 "부호의 단위"라는 의미로 코돈(Codon)이라고 부른다. 맛있는 돈까스집 이름이 아님에 주의하자.

AGCTCGTCCTCGTATGACGTC...

이런식으로 DNA염기가 배열되어 있다고 하자. 그럼, 도대체 어디서부터 번역을 시작해야 하는 걸까.

그래서, "개시 코돈"이라는 것이 있다. 그것이 바로 AUG인데, AUG는 아미노산 중 메티오닌을 지정하면서 "시작"을 지정하기도 한다. 참고로, DNA의 T는 RNA의 U이다.

위의 신호는 RNA로 전사되면서
AGCUCGUCCUCGUAUGACGUC...
이 된다. 참고로 DNA-RNA-아미노산 번역 과정에서 클럭 동기화는 자동으로 수행된다. A와 T(=U)가 서로 달라붙고 G와 C가 서로 달라붙기 때문에 저절로 잘 맞는다. A와 G사이에 C가 붙는다거나, 그렇게 되진 않는다.

어쨌든, 번역기(=리보솜)는 RNA를 쭉 읽으면서 AUG가 나올때까지 그냥 보낸다. 그러다가 AUG가 나오면 거기에 메티오닌을 붙이고 번역을 시작한다. 이제 그 뒤로 계속해서 적당한 아미노산이 달라붙으면서 번역이 시작된다. 하지만, 여기서도 AUG가 오인받을 수도 있다. 그래서 AUG가 세번 정도는 나와 줘야 번역이 시작된다.

여기서 흥미로운 것은, 자연이 선택한 신호 동기화 방법과 인간이 선택한 신호 동기화 방법과 컴퓨터에게 주어진 신호 동기화 방법이 거의 같다는 것이다. 매체(medium)는 다르지만 결국은 다 거기서 거기라는 걸까.

by snowall 2010.08.07 23:22
  • 구차니 2010.08.08 01:22 신고 ADDR EDIT/DEL REPLY

    mpeg의 start code를 찾는것과 RNA와 비슷한 느낌이네요 ^^;