본문 바로가기

- Programming/- 개념 잡기

★ 20. 동기화/비동기화란?

반응형

[1]

동기화라는 말이 다방면으로 사용되고 있어 개념을 잡기가 조금 어렵습니다.

비동기식이니 동기식이라는 말도 있습니다.


동기화를 이해하려면 클라이언트와 서버라는 개념을 먼저 이해해야합니다.
클라이언트에서 작업을 요청하면 서버에서 응답하는 형식입니다.
그런데 이 응답하는 방식에 따라서 동기식, 비동기식이라고 합니다.

여기서 동기식은 클라이언트의 요청이 있어야만 서버가 응답을하며 서버의 응답을 기다리다가 응답이 와야만 그에 따라 클라이언트가 반응하는 방식으로 서버와 클라이언트의 작업을 하나로 일치시키는 방식입니다.
요청과 응답, 응답과 작업, 다시 요청과 반응 이런 방식입니다.

폴더의 자료를 최신으로 유지하는 것도 클라이언트에서 자료 갱신을 요청하면 서버에서 응답해 최신 자료를 보내주고 클라이언트에 받아 갱신하는 것입니다.(하나의 작업으로 일치시켜 작동하는 동기식)

일반화 해보자면 "어떤 작업을 하기 위해 두 개의 별개의 장치간에 시간적으로 동시에 하나의 연결을 만드는 것"입니다.
그렇게하면 두 개의 장치 안의 자료가 시간적으로 일치하게 됩니다.
이런 방식은 시간적으로 데이터가 서로 일치해야 하는 경우에는 꼭 필요한 방식입니다.
예를 들어 은행계좌 입/출금시 동기화식으로 데이터가 처리됩니다.
만약 비동기식으로 처리된다면 CD기에서 출금을 했지만 은행의 중앙 컴퓨터에서는 처리가 되지 않게 되는 자료의 불일치성이 나타나게 됩니다.

[2]
이 개념은 네트워크나 컴퓨터 구조에서 아주 널리 쓰이는 개념입니다.
동기화는 시간에 딱딱 맞춰 무슨 일을 진행시키는 것을 말합니다.

대한민국 군인들은 모두 아침 6시에 기상해 8시에 일을 하고 11시쯤 밥을 먹고 5시 30분부터 휴식을 취한 후 밤 10시에 취침에 듭니다. 이런게 바로 동기화의 예입니다. 기준(보통은 시간)에 맞추어 동작이 딱딱 이루어집니다.

네트워크에서 송신측과 수신측이 동기화되어있다고 말 하는 것은 한마디로 어떤 시간에 누가 데이터를 보내는지 모두 알고 있다는 뜻입니다. 맨처음 1분은 A가 데이터를 보내고 그다음 1분은 B가 데이터를 보내고 그다음 1분은 C가 데이터를 보낸다는 것을 송신측과 수신측 모두 알고 있기 때문에 누가 데이터를 보내고 있는지에 대한 혼란이 없습니다.

전산쪽에서는 TDM 이라는 방식이 있습니다. 각각의 source(데이터를 보내는 쪽)는 자신에게 주어진 시간동안만 데이터를 전송할 수 있도록 디자인되어 있는데 대표적인 동기화 방식이라고 할 수 있습니다.

그리고 비동기식은 어떤 기준에 맞추어 데이터가 전송되는 것이 아니라 필요할 때마다 그때그때 데이터를 전송하는 것입니다. 그때그때 보내야 하기 때문에 가장 큰 문제는 지금 전송되는 데이터가 누구에게 도착하는 것이고 또 누가 보내고 있는지, 그 길이는 어느정도인지(어디까지만 받아야 하는지)를 결정해야합니다. 따라서 보내기 전에 "내가 이제부터 A에게 보내려고 한다"라고 알려주고 다 보내고 나면 "이제 다 보냈다"라는 것 등을 알려줘야 합니다.

게다가 동시에 여러명이 보내려고 할 수도 있습니다. 동기식에서는 기준에 맞춰 보내는 순서가 있으니 질서가 잡혀있지만 비동기식에는 이런 순서가 없으니 한마디로 개판이라고 생각할 수도 있습니다. (서로 보내겠다고 난리치는 경우도 생길 수 있을 것입니다.) 따라서 비동기화가 질서를 잡는데 더 어렵습니다.

그렇다고 동기화가 더 좋은 것은 아닙니다. 동기화는 매 단위 시간마다 데이터를 전송할 수 있는 송신자가 정해져있는데, 만일 B는 더이상 보낼 데이터가 없어도 자신에게 주어진 시간은 여전히 B만 데이터를 보낼 수 있어서 많은 데이터를 보내야 하는 다른 송신자들은 데이터 전송에 더 오랜 시간이 걸릴 수 밖에 없습니다.(효율성이 많이 떨어질 수도 있습니다.)

양쪽 모두 일장일단이 있으니 주어진 환경에 맞게 어느 방식을 써야할지 고민하고 결정해야합니다.

 ※ 동기식 Synchronous (transmission)

동기식 전송은 한 문자 단위가 아닌 미리 정해진 수 만큼의 문자열을 한 묶음으로 만들어 일시에 전송하는 방법입니다. 이 방법에서는 데이터와는 별도로 송신측과 수신측이 하나의 기준 클록으로 동기 신호를 맞추어 동작합니다. 수신측에서는 클록에 의해 비트를 구별하게 되므로, 동기식 전송을 위해서는 데이터와 클록을 위한 2회선이 필요합니다. 송신측에서 2진 데이터들을 정상적인 속도로 내보내면 수신측에서는 클록의 한 사이클 간격으로 데이터를 인식하는 것입니다.

동기식 전송은 비동기식에 비해 전송 효율이 높다는 것이 장점이지만 수신측에서 비트 계산을 해야하며 문자를 조립하는 별도의 기억장치가 필요하므로 가격이 다소 높은 것이 단점입니다.

 ※ 비동기식 Asynchronous (transmission)

에디터 내에 동기 신호를 포함시켜 데이터를 전송합니다. 송신측의 송신 클록에 관계 없이 수신신호 클록으로 타임 슬롯의 간격을 식별하여 한번에 한 문자씩 송수신합니다.
이때 문자는 7~8 비트로 구성되며, 문자의 앞에 시작 비트(start bit)를, 끝에는 정지 비트 (stop bit)를 첨가해 보내는 방법입니다.

비동기식 전송은 시작 비트와 정지 비트 사이의 간격이 가변적이므로 불규칙적인 전송에 적합합니다. 또한, 필요한 접속장치와 기기들이 간단하므로 동기식 전송 장비보다 값이 싸다는 장점이 있습니다.

[동기식]은
입력 'A'가 들어가면 출력 'B'가 바로 나오게끔 만들어져 있게 설계됩니다.
비동기식은 그렇지 않습니다.

[비동기식]은
딜레이같은 문제를 해결해야하기 때문에 더 복잡하고 기술적으로 어렵습니다.


참고한 사이트 :

http://hyunity3d.tistory.com/267

반응형