본문 바로가기

CS(Computer Science)

CS Study 4주차 : Blocking/Non-Blocking

Blocking/Non-Blocking

블로킹과 논 블로킹은 처리되어야 하는 작업이 전체적인 작업 흐름을 막는지에 대한 관점이다.

 

Blocking

블로킹(Blocking)은 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 자신의 작업을 멈추고
해당 작업을 기다렸다가 다시 자신의 작업을 시작한다.

위 과정을 정리하면 아래와 같다.

  • 유저가 커널에게 read 작업을 요청
  • 커널은 데이터가 입력될 때까지 무한정 대기한다(Blocking) -> 리소스가 일을 하지 않고 낭비된다.
  • 데이터가 입력되면 커널이 유저에게 결과를 전달한다.

 

Non-Blocking

논 블로킹(Non-Blocking)은 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것을 의미한다.

위 과정을 정리하면 아래와 같다.

  • 유저가 커널에게 read 작업을 요청
  • 커널은 데이터 입력 여부와 관계 없이 결과를 반환
  • 이후 커널은 유저로부터 입력 데이터가 올때까지 수차례 확인
  • 입력 데이터가 있으면 커널이 유저에게 결과를 전달한다.