항상 동기-비동기와 블로킹-넌블로킹 이 두가지 분야가 매우 헷갈렸다.
일단 이해가 쉽게 하기 위해 다음과 같이 생각하면 된다.
블로킹과 논블로킹은 작업의 수행 여부를 결정하는 방식에 대한 차이,
동기와 비동기는 작업의 완료 시점을 어떻게 처리할지에 대한 방식의 차이
동기/비동기
동기 방식:
작업을 요청하고 작업이 완료될 때까지 기다리는 방식.
작업의 처리 결과가 반환될때까지 다음 작업을 할 수 없음.
장점: 처리방식이 간단하다
단점: 특정 작업의 처리가 길어질 경우 시스템의 전체적인 처리 속도가 느려질 수 있다. 왜냐하면 다음 작업이 대기 상태에 머무르기 때문
비동기 방식:
작업을 요청한 후 결과와 상관없이 다음 작업을 수행할 수 있는 방식.
작업의 완료와 결과 처리는 별도의 매커니즘을 통해 이루어짐.
예시) 애니메이션 실행, 네트워크 통신, 마우스 키보드 입력, 타이머 등
장점: 시스템 자원을 효율적으로 사용 가능.
단점: 동기방식에 비해 프로그램의 복잡도 증가.
블로킹/넌블로킹
블로킹:
호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 반환하지 않는다.
이는 호출한 함수가 결과를 기다리는 동안 다른 작업을 수행할 수 없게 만든다.
단점: 특정 작업을 처리하는 동안 다른 작업을 수행할 수 없다는 점. CPU 자원을 효율적으로 사용하기 어렵기 때문
논블로킹:
호출된 함수가 바로 제어권을 호출한 함수에게 반환하며, 작업의 완료 여부와 상관없이 호출한 함수는 다른 작업을 계속할 수 있습니다.
장점: 비동기적으로 작업을 처리할 수 있기 때문에 시스템 자원을 효율적으로 사용할 수 있다.
단점: 이 작업의 완료를 체크가호 결과를 처리하는 추가적인 로직 필요
이부분은 말이 어렵다.
좀더 쉽게 설명해보자면
프로세스A가 실행되다가 프로세스B가 실행되었다고 치자.
여기서 블로킹 방식은
프로세스A에게 제어권이 있지 않고 호출된 프로세스B에 있기때문에 프로세스B가 끝날때까지 프로세스A는 아무것도 하지 못하고 기다려야한다.
하지만 넌블로킹 방식은
똑같이 프로세스B가 호출되었을때 그 함수 제어권이 프로세스A에게 있기때문에 결과 반환 여부와 상관없이 프로세스A는 계속 진행할 수 있다.
비동기와 논브로킹의 개념차이
비동기는 작업의 처리 방식을,
논블로킹은 작업을 기다리는 방식을 설명
'운영체제' 카테고리의 다른 글
멀티스레드 프로그래밍과 ThreadSafe (1) | 2025.02.01 |
---|---|
Context Switching이란 (0) | 2025.01.31 |
프로세스와 스레드의 차이 (0) | 2025.01.31 |