블로킹 vs 논 블로킹, 동기 vs 비동기

이상수·2022년 11월 28일
0

CS - 운영체제

목록 보기
1/4

제어권 : 함수의 코드를 실행할 권리 같은 것으로, 제어권을 가진 함수는 자신의 코드를 끝까지 실행 한 후 자신을 호출한 함수에게 돌려준다.

결과값을 기다림 : A에서 B함수를 호출하였을 때, A함수가 B함수의 결과값을 기다리냐의 여부

1. 블로킹 vs 논 블로킹

1). 블로킹

  1. A함수가 B함수를 호출하였을 때, B함수에게 제어권을 넘겨주고 자신은 제어권이 없어 실행을 멈추고 제어권을 받기를 기다린다.
  2. B함수가 제어권을 받아 모두 처리한 후, 다시 제어권을 되돌려줌
  3. 폴링(: 하나의 프로그램의 충돌 회피, 동기호 처리등을 목적)에 가깝다.

2). 논 블로킹

  1. A함수가 B함수를 호출하고, 자신은 제어권을 그대로 가지고 있어 A함수와 B함수 모두 실행을 유지힌다.

2. 동기 vs 비동기

1). 동기

  1. 함수 A가 B 함수를 호출한 뒤, A 함수가 B함수의 리턴값을 계속 확인하면서 신경쓰는 것

2). 비동기

  1. 함수 A가 B 함수를 호출하면서 B함수에게 콜백함수를 함께 전달하여, A함수는 B함수의 처리완료 여부를 신경쓸 필요가 없다.

  2. 비동기는 병렬처리에 가깝다.


3. 동기 와 블로킹 비교

1). 동기 + 블로킹

  1. A함수가 B함수에게 제어권을 넘겨 줌과 동시에 A함수는 B의 리턴값을 필요로 한다.
  2. B의 함수가 끝나면 B의 리턴값과 제어권을 함께 넘겨받아 처리

2). 동기 + 논 블로킹

  1. A함수는 B함수를 실행하면서 제어권을 주지않고 서로 각 스레드로 실행하며 A함수는 지속적으로 B함수에게 처리 완료 여부를 묻는다.

3). 비동기 + 논블로킹

  1. A함수는 B함수에게 제어권을 주지않고 각 스레드로 실행하며 A함수 또한 B함수의 처리여부를 신경쓰지 않고 콜백함수를 넘겨주며 B함수가 처리되면 A함수의 콜백함수를 실행한다.

  2. 콜백(: 함수 안에서 실행되는 또 다른 함수)

profile
Will be great Backend-developer

0개의 댓글