1. Blocking (블로킹) vs Non-Blocking (논 블로킹)
위 두 개념은 어떤 하나의 함수가 어떻게 동작하는지에 관한 이야기다.
함수 A와 B가 존재한다고 가정하자. 또한, 함수 A가 함수 B를 호출한다.
이때 함수 A가 어떻게 행동하는지에 따라 Blocking과 Non-Blocking이 결정된다.
즉, 해당 개념과 함수 B는 아무런 관련이 없다.
어떠한 상황에서도 함수 A가 아무것도 하지 못하고 함수 B의 결과를 기다리는 상황이 바로 Blocking이다.
반대로 함수가 A가 다른 일을 하며 함수 B의 결과를 기다리는 상황은 Non-Blocking이다.
예를 들어, 함수 A는 주기적으로 함수 B의 상태를 확인하는 폴링 (Polling)을 수행하거나,
함수 B로부터 작업이 완료되었다는 알림을 받는 콜백 (Callback) 등을 사용할 수 있다.
2. Synchronous (동기적) vs Asynchronous (비동기적)
위 두 개념은 어떤 두 개 이상의 함수가 어떤 관계를 맺는지에 관한 이야기다.
이는 하나의 함수 동작으로 설명될 수 없기 때문에, Blocking 및 Non-Blocking과는 전혀 다른 이야기다.
메인 함수와 함수 A와 B가 존재한다고 가정하자. 또한, 메인 함수가 함수 A와 함수 B를 호출한다.
Synchronous의 경우, 함수 B를 호출하기 위해선 함수 A가 반드시 실행 완료되어야 한다.
이때 함수 A와 함수 B를 Synchronous라고 할 수 있다.
즉, 함수들의 순서가 논리적 맥락에 맞게 지켜져야 하는 것이 바로 Synchronous이다.
Asynchronous의 경우, 함수 B를 호출하기 위해 함수 A가 실행 완료되어야 필요가 없다.
이는 두 함수를 동시에 실행시켜도 된다는 것을 의미한다.
이때 함수 A와 함수 B를 Asynchronous라고 할 수 있다.
즉, 함수들이 서로 기다리지 않고 동시에 실행 흐름을 가져갈 수 있는 것이 바로 Asynchronous이다.
Reference
'운영체제' 카테고리의 다른 글
10. 파일 시스템 (0) | 2024.01.23 |
---|---|
9. 가상 메모리 (0) | 2024.01.19 |
8. 메모리 관리 (0) | 2024.01.12 |
7. 교착 상태 (Deadlock) (0) | 2024.01.09 |
6. 프로세스 동기화 (0) | 2024.01.03 |