Network - Blocking/Non-blocking & Sync/Async + I/O

김준영·2023년 3월 1일
1

CS공부

목록 보기
20/20

한눈에 바로보기

Blocking/Non-blocking


블로킹과 논블로킹은 A함수가 B함수를 호출했을 때, 제어권을 어떻게 처리하느냐에 따라 달라진다.

만약 A가 B함수를 호출하고 현재 B가 호출되면서 B는 자신의 일을 진행해야 한다.(제어권은 B)

  • Blocking : 함수 B는 자기 할 일을 다 마칠 때까지 제어권을 가지고 있는다. A는 끝날 때까지 기다려야됨.
  • Non-blocking : 함수 B는 할 일을 마치지 않았어도 A에게 제어권을 바로 넘겨준다. A는 B를 기다리면서 다른 일을 진행할 수 있다.

Synchronous/Asynchronous


동기/비동기는 일을 수행 중인 동시성에 주목한다.
즉, 호출되는 함수의 작업 완료 여부를 신경쓰는지의 여부 차이다.

  • Sync : 함수 A는 함수 B가 일을 하는 중에 기다리면서, 현재 상태가 어떤지 계속 체크
  • Async : 함수 B의 수행 상태를 B 혼자 직접 신경쓰면서 처리(Callback)

간단하게 호출된 함수를 호출한 함수가 신경쓰는지, 아님 스스로 신경쓰는지이다.


Blocking I/O & Non-blocking I/O


Blocking I/O란

I/O 작업이 진행되는 동안 유저 프로세스가 자신의 작업을 중단한채, I/O가 끝날때까지 대기하는 방식

Non-blocking I/O

A함수가 I/O작업을 호출했을 떄 I/O작업이 완료될 때까지 A함수의 작업을 중단하지 않고 I/O에 대해 즉시 리턴하고, A함수가 이어서 다른 일을 수행할 수 있도록 하는 방식

참조 : https://gyoogle.dev/blog/computer-science/network/Blocking,Non-blocking%20&%20Synchronous,Asynchronous.html, https://velog.io/@nittre/%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-Vs.-%EB%B9%84%EB%8F%99%EA%B8%B0

profile
ㅎㅎ

0개의 댓글