본문 바로가기

CS(Computer Science)

CS Study : 11주차 - Synchronous(동기) / Asynchronous(비동기)

Synchronous(동기)

  • 동기 방식은 클라이언트(Client)인 내가 동작시킨 어떠한 특정 실행 흐름 안에서 서버(Server)라고 통칭하는 모든 것들에 대해서 요청(Request)을 보냈을 경우, 이에 대한 응답(response)이 오고 난 것을 확인한 후에 다음 동작을 하는것을 말한다.
  • 순차적이고 직렬적으로 주어진 일을 처리하는 것이다.

Asynchronous(비동기)

  • 비동기 방식은 클라이언트(Client)인 내가 동작하고 있는 어떠한 프로그램의 실행 흐름 안에서 서버(Server)의 총칭에 대하여
    요청(Request)을 보낼 경우, 이에 대한 응답(response)이 오는 것을 따로 확인하지 않고 다음 동작을 하는 것을 말한다.

 

Blocking(블록)

  • 어떤 함수를 호출 했을 떄, 원하는 작업들을 모두 끝마칠 때 까지 기다렸다가 return 되면 이것을 블로킹 되었다고 한다.

Blocking I/O Model

  • System call이 끝날때까지 프로그램을 대기해아 하고 System call이 완료가 되면 그 때 return한다.
  • Wait Queue에 들어간다

 

Non-Blocking(논블록)

  • 어떤 함수를 호출 했을 때, 원하는 작업들을 요청하고 바로 리턴되면 이것을 논 블로킹이라고 한다.

Non-Blocking I/O Model

  • System call이 완료되지 않아도 대기하지 않고 return 한다.
  • Wait Queue에 들어가지 않는다.

Synchronous vs Asynchronous

  • 보통 블로킹/동기 , 논블로킹/비동기를 함께 묶어서 말한다.
  • 동기와 비동기는 결과물을 돌려받는 시점이 다르다.

Synchronous

  • Synchronous에서는 System call이 끝날때까지 기다리고 결과물을 가져온다.
  • System call의 return을 기다리는 동안 필수로 Wait Queue에 머문다.

Asynchronous

  • Asynchronous에서는 System call이 완료되지 않아도 나중에 완료가 되면 그때 결과물을 가져온다.
  • 주로 Callback함수를 통해서 가져온다.
  • System call의 return을 기다리는 동안 Wait Queue에 머물 수도 아닐 수도 있다.

 


참고 블로그

[CS][OS] Synchronous, Asynchronous

Synchronous(동기) Vs Asynchronous(비동기)

동기 ( synchronous ) vs 비동기 ( asynchronous )