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