본문 바로가기

이론/CS

Blocking vs Non-Blocking

출처: https://tech.peoplefund.co.kr/2017/08/02/non-blocking-asynchronous-concurrency.html

https://www.slipp.net/questions/367


Non-blocking vs blocking

Non-blocking algorithm(Non-blocking synchronization)

어떤 쓰레드에서 오류가 발생하거나 멈추었을 때 다른 쓰레드에 영향을 끼치지 않도록 만드는 방법

공유자원을 안전하게 동시에 사용할 수 있도록 함

Non-blocking I/O(Asynchronous I/O 또는 Non-sequential I/O)

입출력 처리는 시작만 해두고 완료되지 않은 상태에서 다른 작업을 계속 진행할 수 있도록 하는 방법

cf) non-blocking vs asynchronous

system call이 반환될 때 실행된 결과와 함께 반환될 경우 non-blocking, 결과와 함께 반환되지 않는 경우 asynchronous

async는 처리 완료 여부와 관계 없이 바로 응답하고 non-blocking은 바로 응답할 수 있는 경우에는 응답하고 그러기 힘든 경우 에러반환

cf) synchronous vs blocking

시스템의 반환을 기다리는 동안 대기 큐에 머무르는 것이 필수가 아니면 sync, 필수라면 blocking


blocking

애플리케이션 실행 시 운영체제 대기 큐에 들어가면서 요청에 대한 system call이 완료된 후에 응답을 보낼 경우


Concurrency vs Parallelism

concurrency

각 프로그램 조각들이 실행순서와 무관하게 동작할 수 있도록 만들어 한 번에 여러 개의 작업을 처리할 수 있도록 만든 구조. 즉, 여러 개의 작업을 번갈아가며 수행할 수 있도록 만드는 것.

Parallelism

많은 작업을 물리적으로 동시에 수행하는 것. 한 개의 프로세서로는 병렬성을 획득하지 못함.

'이론 > CS' 카테고리의 다른 글

[OS] Process vs Thread (feat. Thread in Spring F/W)  (0) 2018.09.26
[네트워크] 포트포워딩  (0) 2018.07.18