Computer Science

[운영체제] 동기와 비동기의 차이

Supreme_YS 2022. 3. 3. 12:00

동기와 비동기의 차이

  • 동기란?
    • 동시에 일어난다는 뜻
    • 어떠한 요청을 하였을때 응답(결과)이 한자리에서 동시에 일어난다는 뜻. 즉, 한 가지 일을 하면 결과가 나올때까지는 다른 일은 정지 상태가 된다.
  • 비동기
    • 동시에 일어나지 않는다는 뜻
    • 어떠한 요청을 하였을때 응답이 한자리에 동시에 일어나지 않아도 된다는 뜻. 즉, 한 가지일을 마칠동안 다른 일도 실행이 된다는 뜻. 마치 멀티 태스킹과 같음.
  • 동기의 장/단점
    • 장점 : 설계가 단순(직관)하다.(구성하기 쉽다.)
    • 단점 : 효율성이 떨어진다.
  • 비동기의 장/단점
    • 장점 : 결과가 나오기까지 시간이 걸리지만 다른 작업을 수행할수 있다. (효율성이 좋다.)
    • 단점 : 각각의 일마다 결과시간이 달라서 설계가 복잡하다.

추가적인 궁금한부분

  • 비동기와 병렬의 차이?
    • 비동기는 눈속임으로 동시에 돌아가는 것처럼 보이지만, 이건 스위칭이 매우 빠르게 이루어져서 동시에 일어난것처럼 보이는 것
    • 병렬은 진짜 동시에 실행이 된다. 멀티 작업하듯이.

시나리오 정리

• 동기와 비동기 : 처리해야 할 작업들의 흐름을 결정하는 방식 (팀장 입장)

• 블로킹과 논블로킹 : 처리되어야 하는 (하나의) 작업이, 전체적인 작업 '흐름'을 막느냐 안막느냐에 대한 관점(사원들 입장)


시나리오 1. 비동기+논블로킹

  1. 개발 팀장이 사원2명에게 동시에 업무를 지시합니다(비동기적인 지시)
  2. (팀장은 일시키고 자기가 수행해야할 작업을 쭉 이어나간다.)
  3. A사원과 B사원이 각각 일을 마치고 팀장님에게 보고를 해준다.(논블로킹적인 작업 방식)

제어권을 쭉 들고 나가는 것이 논블로킹


 

시나리오 2. 동기+논블로킹

  1. 팀장이 A사원에게 작업을 지시한다.
  2. 팀장은 A사원이 끝나기를 기다리면서 뒤에서 묵묵히 지켜보면서 본인 일은 하지못한체 가만히 있는다. (동기적 작업지시)
  3. A사원이 끝나면 뒤에 있는 팀장에게 다끝났다고 보고를 해준다.
  4. B사원 에게도 팀장이 작업을 내려준다.
  5. 팀장은 B사원이 끝나기를 기다리면서 뒤에서 묵묵히 지켜보면서 본인 일은 하지못한체 가만히 있는다. (동기적 작업지시)
  6. ...


시나리오 3. 비동기 + 블로킹

  1. 팀장은 일을 얼른 빨리 끝내고 싶어서 A,B에게 동시에 일은 전달해주려고한다. (비동기적인 작업 지시를 예상)
  2. 지시를 받은 A사원이 아무것도 모르겠다면서 팀장님을 붙잡는다. (블로킹적인 작업 처리)
  3. 팀장은 "이 녀석 뭐야" 하면서 어이 없지만 A사원은 끝까지 팀장님을 놓아주지 않는다.
  4. A사원이 작업을 마치고 팀장에게 보고를 하고 팀장은 B사원에게 작업을 지시한다.
  5. B사원 역시 아무것도 모른다면서 붙잡는다. -> 블락킹 함


시나리오 4. 동기+블로킹

시나리오 2와 같다.


3줄 요약

  1. 동기 비동기는 팀장의 입장에서 생각을 해보자(작업 지시)
  2. 블로킹과 논블로킹은 사원들의 작업을 처리하는 입장에서 생각해보자(작업 처리)
  3. 흔히 말하는 ‘비동기적 처리’는 시나리오 1(비동기+논블로킹)과 같은 방식을 비동기적인 처리 라고 한다.

추가 순차적으로 작업이 처리되어야 한다면 '동기' 혹은 '블로킹' 방식을 사용해야 한다.