티스토리 뷰

blocking

- system call이 끝날때까지 프로그램은 대기하고 system call이 완료되면 return한다.

- wait queue에 들어간다.

- 예로 c언어의 scanf()처럼 입력하기 전까지 대기하고 입력 받으면 ruturn한다.


non-blocking

- system call이 완료되지 않아도 대기하지 않고 return 한다.

- wait queue에 들어가지 않는다.


blocking, non-blocking 차이

- 프로그램의 실행하는 순서 관점으로 보면된다.

- 프로그램이 바로 실행할 수 있는 유무가 다르다.


-----


synchronous(동기)

- system call이 끝날때까지 기다리고 결과물을 가져온다.


asynchronous(비동기)

- system call이 완료되지 않아도 나중에 완료가 되면 그때 결과물을 가져온다.

- 주로 callback 함수를 통해 결과물을 가져온다.


synchronous, asynchronous

- 결과물을 돌려받는 시첨에 초첨을 맞춰 보면된다.


-----


non-blocking, asynchronous 차이

- asynchronous은 요청에 처리 완료와 관계없이 응답한다. 이후 운영체제에서 응답할 준비가 되면 응답한다.

- non-blocking은 요청에 처리할 수 있으면 바로 응답하고 아니면 error를 반환한다.


blocking, synchronous 차이

- blocking은 system call의 return을 기다리는 동안 필수로 wait queue에 머문다.

- synchronous은 system.call의 return을 기다리는 동안 wait queue에 머물 수도 아닐 수도 있다.

'줍줍 > 알면 좋겠지' 카테고리의 다른 글

SaaS, IaaS, Paas  (0) 2018.12.09