본문 바로가기

Infomation

동기(synchronous)방식과 비동기(asynchronous)방식 차이점

동기, 비동기 의 원래 의미는 통신에서
상대방의 일정 신호에 의해서 다음 동작이 이루어지면 동기
상대방의 상태와 관계없이 일방적으로 동작하면 비동기 입니다

즉, 상대방이 받을준비 됬다는 신호를 받아서 한byte 보내고
수신측에서 한byte받은 후 또 보내도 된다는 신호를 보내고
이 신호 확인후 보내고.. 이런식이 동기식입니다
이에 반하여 비동기에서는 일단 한번 전송 시작되면 좌~~~악 보냅니다

이와 비슷한 개념으로 일반 software에서 동기식이라 함은
어떤 루틴을 완전히 끝내고 제어를 반납하면 동기식
동작이 안 끝났어도 일단 제어권을 반납한 후 지 할일 계속하면 비동기식입니다

이게 무슨 말이냐 하면
예를 들어 siren 소리를 낼때

play_sound("siren.wav","동기")
a=b+c;
..

이러면 사이렌 소리가 다 끝난후 a=b+c가 실행되고

play_sound("siren.wav","비동기")
a=b+c;
..

이러면 a=b+c 이하 프로그램을 계속 수행하면서 siren소리가 납니다

file조작에서도 이와 마찬가지입니다
즉 file조작이 완전히 끝난후 다음 동작이 이루어지는 방식이 동기식,
다음 code를 진행하면서 file조작을 하면 비동기식입니다

이러한 비동기식은 DOS같은 단일 운영체제에서는 근본적으로 불가능하고 windows같은 multi task 환경에서만 가능합니다.

file조작에서는 cpu속도와 hard,floppy등의 저장매체와는 엄청난 속도 차이가 있기 때문에 비동기로 처리해도 대용량 data를 read/write 할때는 일시적으로 system 이 버벅이게 됩니다 

일반적으로 windows와 같은 multi task 환경에서 동기식 처리는 시스템 효율을 저하 시킵니다.
동기식에서는 어떤일을 처리할동안 다른 프로그램은 정지하게 되므로 실제 cpu가 느려지는 것은 아니지만 시스템 전체적으로는 효율이 저하된다 할 수 있는거지요

'Infomation' 카테고리의 다른 글

LLVM , Clang  (0) 2016.11.25
CUDA example & start & sample  (0) 2016.11.14
CUDA programming_01  (0) 2016.11.10
CUDA ("Compute Unified Device Architecture", 쿠다) - GPU  (0) 2016.11.10
MySQL 데이터 타입  (0) 2016.11.07