CS/OS

[OS] 동기와 비동기, 블록과 논블럭의 차이

Joonfluence 2023. 10. 16.

오늘은 동기, 비동기 그리고 블록과 논블록의 차이점에 대해서 알아보도록 하겠습니다.

동기와 비동기의 차이

동기 (synchronous)

  • 정의
    • 요청에 대해 결과값을 기다렸다 처리하는 것을 말합니다.
      • 여기서 요청이란 API, 함수에 대한 호출을 말합니다.
  • 장점
    • 설계가 매우 간단하고 직관적이다.
  • 단점
    • 결과가 주어질 때까지 기다려야 하므로, 여러 요청들을 빠르게 처리할 수 없다.

비동기 (asynchronous)

  • 정의
    • 요청의 결과값을 기다리지 않고 처리하는 것을 말합니다.
  • 장점
    • 요청을 보낸 직후, 바로 다른 작업을 수행할 수 있습니다.
  • 단점
    • 동기식보다 설계가 복잡합니다.

블록과 논블록의 차이

블록 (block)

  • 특징
    • 동기에서 파생된 개념입니다.
  • 정의
    • 동기로 처리될 때, 응답을 대기해야 합니다. 이 때, 쓰레드에 대한 제어권 획득을 기다리며, 응답을 기다리는 상태블록이라고 합니다.

논블록 (non-block)

  • 특징
    • 비동기에서 파생된 개념입니다.
  • 정의
    • 비동기로 처리될 때, 응답을 대기해야 합니다. 이 때, 응답을 기다리지 않고 제약없이 쓰레드에 대한 제어권을 획득하여, 자유롭게 사용할 수 있는 상태논블록이라고 합니다.

동기, 비동기 그리고 블록, 논블록

Sync-Blocking

블록 상태에 대한 설명과 일치합니다.

Sync-NonBlocking

요청이 논블록 상태이기 때문에, 호출한 쪽에선 쓰레드에 대한 제어권을 바로 획득합니다. 하지만 응답 결과값을 확인 될 때까지 다른 작업을 수행할 수 없기 때문에, 완료될 때까지 요청이 완료됐는지 계속 확인합니다.

Async-Blocking

Sync-Blocking과 동일하게 동작합니다. 

Async-NonBlocking

비동기로 처리되므로 요청을 처리하는 동안, 쓰레드의 제어권을 획득해 다른 작업을 처리할 수 있습니다.

반응형

댓글