동기와 비동기의 차이
- 동기란?
- 동시에 일어난다는 뜻
- 어떠한 요청을 하였을때 응답(결과)이 한자리에서 동시에 일어난다는 뜻. 즉, 한 가지 일을 하면 결과가 나올때까지는 다른 일은 정지 상태가 된다.
- 비동기
- 동시에 일어나지 않는다는 뜻
- 어떠한 요청을 하였을때 응답이 한자리에 동시에 일어나지 않아도 된다는 뜻. 즉, 한 가지일을 마칠동안 다른 일도 실행이 된다는 뜻. 마치 멀티 태스킹과 같음.
- 동기의 장/단점
- 장점 : 설계가 단순(직관)하다.(구성하기 쉽다.)
- 단점 : 효율성이 떨어진다.
- 비동기의 장/단점
- 장점 : 결과가 나오기까지 시간이 걸리지만 다른 작업을 수행할수 있다. (효율성이 좋다.)
- 단점 : 각각의 일마다 결과시간이 달라서 설계가 복잡하다.
추가적인 궁금한부분
- 비동기와 병렬의 차이?
- 비동기는 눈속임으로 동시에 돌아가는 것처럼 보이지만, 이건 스위칭이 매우 빠르게 이루어져서 동시에 일어난것처럼 보이는 것
- 병렬은 진짜 동시에 실행이 된다. 멀티 작업하듯이.
시나리오 정리
• 동기와 비동기 : 처리해야 할 작업들의 흐름을 결정하는 방식 (팀장 입장)
• 블로킹과 논블로킹 : 처리되어야 하는 (하나의) 작업이, 전체적인 작업 '흐름'을 막느냐 안막느냐에 대한 관점(사원들 입장)
시나리오 1. 비동기+논블로킹
- 개발 팀장이 사원2명에게 동시에 업무를 지시합니다(비동기적인 지시)
- (팀장은 일시키고 자기가 수행해야할 작업을 쭉 이어나간다.)
- A사원과 B사원이 각각 일을 마치고 팀장님에게 보고를 해준다.(논블로킹적인 작업 방식)
제어권을 쭉 들고 나가는 것이 논블로킹
시나리오 2. 동기+논블로킹
- 팀장이 A사원에게 작업을 지시한다.
- 팀장은 A사원이 끝나기를 기다리면서 뒤에서 묵묵히 지켜보면서 본인 일은 하지못한체 가만히 있는다. (동기적 작업지시)
- A사원이 끝나면 뒤에 있는 팀장에게 다끝났다고 보고를 해준다.
- B사원 에게도 팀장이 작업을 내려준다.
- 팀장은 B사원이 끝나기를 기다리면서 뒤에서 묵묵히 지켜보면서 본인 일은 하지못한체 가만히 있는다. (동기적 작업지시)
- ...
시나리오 3. 비동기 + 블로킹
- 팀장은 일을 얼른 빨리 끝내고 싶어서 A,B에게 동시에 일은 전달해주려고한다. (비동기적인 작업 지시를 예상)
- 지시를 받은 A사원이 아무것도 모르겠다면서 팀장님을 붙잡는다. (블로킹적인 작업 처리)
- 팀장은 "이 녀석 뭐야" 하면서 어이 없지만 A사원은 끝까지 팀장님을 놓아주지 않는다.
- A사원이 작업을 마치고 팀장에게 보고를 하고 팀장은 B사원에게 작업을 지시한다.
- B사원 역시 아무것도 모른다면서 붙잡는다. -> 블락킹 함
시나리오 4. 동기+블로킹
시나리오 2와 같다.
3줄 요약
- 동기 비동기는 팀장의 입장에서 생각을 해보자(작업 지시)
- 블로킹과 논블로킹은 사원들의 작업을 처리하는 입장에서 생각해보자(작업 처리)
- 흔히 말하는 ‘비동기적 처리’는 시나리오 1(비동기+논블로킹)과 같은 방식을 비동기적인 처리 라고 한다.
추가 순차적으로 작업이 처리되어야 한다면 '동기' 혹은 '블로킹' 방식을 사용해야 한다.
'Computer Science' 카테고리의 다른 글
[운영체제] Swapping, 스와핑 (0) | 2022.03.04 |
---|---|
[운영체제] Context Switching, 컨텍스트 스위칭 (0) | 2022.03.03 |
[운영체제] Multithread, 멀티쓰레드 (0) | 2022.03.02 |
[운영체제] 사용자 수준 쓰레드와 커널 수준 쓰레드 (0) | 2022.03.02 |
[운영체제] 프로세스와 쓰레드의 차이 (0) | 2022.03.01 |