컴퓨터과학/운영체제

[운영체제] 동기와 비동기, 블로킹과 논블로킹

PureStack 2021. 11. 28. 01:35

동기와 비동기

  • 동기(Synchronous, 동시에 발생)
    • 동시에 일어난다는 의미이다. 즉, 요청과 그 결과가 동시에 일어난다는 약속을 의미한다.
    • 요청을 하면, 시간이 얼마나 걸리든 상관없이 요청한 자리에서 결과가 주어져야 한다.
    • 요청과 결과가 모두 한 자리에서 동시에 일어나게 된다.
    • 여러 노드 사이의 작업 처리 단위를 동시에 맞추겠다는 의도를 포함하고 있다.
    • 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 존재한다.
  • 비동기(Asynchronous, 동시에 발생하지 않는)
    • 동시에 일어나지 않음을 의미한다. 즉, 요청과 결과가 동시에 일어나지 않는다는 약속을 의미한다.
    • 요청한 그 자리에서 결과가 주어지지 않는다.
    • 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
    • 비동기 방식은 동기보다 복잡하지만 결과가 주어지는데 시간이 오래 걸려도 그 시간 동안 다른 작업들을 할 수 있으므로 자원을 효율적으로 사용할 수 있다는 장점이 존재한다.

블로킹과 논블로킹

  • 블로킹(Blocking, 타 작업 수행 차단)
    • 특정 작업이 실행 요청을 받아서 실행하는 동안 다른 작업은 진행하지 못하고 대기하는 방식을 의미한다.
    • 제어권이 호출된 함수에게 넘어가서 호출된 함수 내에서 작업이 모두 끝난 후 값이 리턴되고, 호출한 함수에게 다시 제어권이 넘어온다.
    • 작업이 순차적으로 이루어지므로 작업 흐름을 쉽게 이해할 수 있다는 장점이 있다,
    • 블로킹이 이루어지는 동안 하드웨어 리소스를 효율적으로 이용하지 못한다는 단점이 있고, 특히 블로킹이 일어나는 작업이 오래 걸리는 작업인 경우에 이러한 단점은 더욱 부각된다.
  • 논 블로킹(Non-Blocking, 타 작업 수행 허용)
    • 특정 작업이 이미 수행중이여도, 그것과 상관없이 바로 다른 작업을 수행 시키는 방식을 의미한다.
    • 제어권은 계속 호출한 함수에 있고, 값의 리턴이 함수의 실행과 동시에 이루어진다.
    • 리소스가 낭비되는 시간이 없으므로, 하드웨어 리소스를 효율적으로 이용할 수 있다.
    • 작업 흐름이 복잡해져서 이해가 쉽지 않다는 단점이 있다.

동기/비동기, 블로킹/논블로킹 조합

  • 동기/블로킹
    • 실행 흐름이 순차적이고 프로그램을 제어하기 쉽다.
    • 호출한 함수는 호출된 함수의 작업이 끝날 때까지 아무것도 하지 않으며 기다린다.
    • 팀장은 A사원에게 어떤 작업을 시킨 후 A사원의 작업이 끝날 때까지 아무것도 하지 않으며 기다린다.
  • 동기/논 블로킹
    • 호출한 함수는 호출된 함수의 작업이 끝날 때까지 기다리며 그 동안 다른 작업을 진행 할 수 있다.
    • 팀장은 A사원에게 어떤 작업을 시킨 후 A사원의 작업 완료 여부를 지속적으로 확인하면서 자신의 일을 한다.
  • 비동기/블로킹
    • 호출한 함수는 호출된 함수의 작업 완료에 신경쓰지 않지만 호출된 함수가 작업을 완료 할 때까지 아무것도 하지 않는다.
    • 팀장은 A사원에게 어떤 작업을 시켰는데, A사원이 계속 작업 관련해서 팀장을 붙들고 있고, A사원의 작업이 끝날 때까지 팀장을 놓아주지 않는다.
  • 비동기/논 블로킹
    • 호출한 함수는 호출된 함수의 작업 완료 여부는 신경쓰지 않고 자신의 작업을 진행한다.
    • 팀장은 A사원에게 어떤 작업을 시킨 후 자신은 다른 업무를 보기 시작한다. 이후 A사원이 일을 마친 후 팀장에게 보고한다.
    • 가장 효율적인 방식이다.

 

참고자료

https://siyoon210.tistory.com/147

 

동기 vs 비동기, 블로킹 vs 논블로킹 쉽게 이해하기

동기(sync) vs 비동기(async), 블로킹 vs 논블로킹 사전적 의미는 일단 치워두고 , 대조되는 개념들을 어떤 관점으로 봐야하는지 짧게 설명해보겠습니다. 동기 vs 비동기 : 처리해야 할 작업들을 어떠

siyoon210.tistory.com

 

https://slowly-steadily.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EB%B8%94%EB%A1%9C%ED%82%B9-vs-%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0

 

[운영체제] 블로킹 vs 논블로킹, 동기 비동기

용어 정리 제어권 - 자신의 코드를 실행할 권리, 제어권을 가진 함수는 자신의 코드를 끝까지 실행 후 호출한 함수에 제어권을 반환 Blocking(블로킹) Thread에서 A 함수가 B 함수를 호출하면, 제어권

slowly-steadily.tistory.com