블로킹과 논블로킹, 동기와 비동기

야부엉·2025년 3월 18일

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

동기와 비동기의 차이 그리고 블로킹과 논블로킹의 차이에 대해서 정리해보자. 일단 동기란? 하나의 작업이 완료될 때까지 다른 작업을 대기하는 방식으로 하나의 작업이 끝나야만 다음 작업을 시작합니다. 즉, 일련의 순서를 보장하면 작업을 처리한다.

비동기는 하나의 작업이 완료 될때까지 기다리지 않고 다음 작업을 진행하며 요청에 따른 응답에 대해 순서가 보장되지 않는다.

블로킹I/O(방식) 아래의 그림처럼 하나의 프로세스가 I/O를 진행하는 동안 자신의 작업을 중단한 채 I/O가 끝날때까지 대가하는 방식이다.

즉, 하나의 프로세스가 요청을 하면 완료 될때까지 상대방이 제어권을 가지게 되고, 완료 시에 다시 제어권을 가지게 된다.

논 블로킹I/O(방식)은 아래의 그림처럼 어플리케이션이 요청을 하면, Kernel은 완료 여부와 상관없이 즉시 결과를 Return 해줌으로써 제어권을 반환해준다. 즉, 완료 되기 전까지 다른 작업을 수행 할 수 있다. 그리고 어플리케이션은 다른 작업을 수행하면서 중간 중간 시스템 콜을 보내 작업 완료되었는지 확인하고, 완료되면 I/O 작업을 완료한다.

profile
밤낮없는개발자

0개의 댓글