프로세스가 다른 프로세스의 작업 및 시스템을 호출하여 해당 작업이 완료될 때까지 진행중인 작업을 보류하는 과정
리눅스 프로세스에서 입출력 장치를 처리하거나 커널함수를 호출할 때, 현재 프로세스의 진행을 잠시 보류하는 과정을 blocking status 처리한다고 한다.
네트워크에서도 유사한 의미로 사용되며, 다른 작업이 완료될 때까지 지금의 작업 진행을 보류한다.
다른 작업의 수행 완료를 기다리지 않고, 기존 작업도 같이 병렬적으로 수행한다.
네트워크나 node.js에서 중요한 모델이며, 특히 node.js에서 I/O입출력 이슈를 해결하기 위한 기술이기도 하다.
javaScript 언어의 대표적인 특징이기도 하며, 기본적으로 non-blocking을 지원하기때문에 웹브라우저 동작이 병렬적으로 처리될 수 있는 것이다.
"일치"한다의 개념, 요청이 있다면 이를 처리하는 대상이 있다.
이때 요청하는 대상과 처리하는 대상이 모두 동일 상태, 시점에서 작업하는 것.
"비일치"의 개념, 요청대상과 처리대상이 모두 독립적인 상태와 시점에서 작업하는 것.
node.js는 비동기방식으로, 우리가 흔히 알고있는 순차적인 알고리즘이나 직렬적인 처리 개념과 상이하다.
코드자체는 사용자가 기재한 순서대로 처리하되, 일전의 처리를 요청한 과정이 완료될 때까지 기다리지 않고 바로 다음 처리를 진행한다.
이는 Javascript 엔진인 event loop의 존재로 가능하다(사용자의 요청에 따른 반응으로 로직이 실행).
javascript 기반의 언어들은 비동기 처리로 인한 이슈발생을 미리 예상하여 await - async 함수 등으로 순차처리를 해줘야 한다.