Block IO/Non-Block IO 개념 정리
I/O Input/Output의 약자로써 데이터의 입출력을 의미한다. 네트워크(소켓), File, Pipe, Device와 관련된 IO가 존재한다. Socket 네트워크 통신은 소켓을 통해 데이터가 입출력된다. 컴퓨터의 각 프로세스에서 서로 데이터를 주고 받을때는 반드시 소켓을 열고 데이터를 주고 받을 수 있다. 예를 들어 백엔드 서버의 경우 여러 클라이언트들과 각각 소켓을 열고 통신하며 요청을 처리한다고 볼 수 있다. Block I/O IO작업을 요청한 프로세스/스레드는 요청이 완료될 때까지 블락된다. 아래 그림을 통해 대략적으로 설명해보자면, - 스레드가 실행되다가 read라는 시스템 콜을 호출한다. - 만약 호출한 시스템 콜이 Blocking 시스템 콜이라면 호출한 스레드는 블락 상태가 된다. 그리..