Blocking vs Non-blocking
Blocking
- 시스템 콜 요청시 → 커널 IO 작업 완료할 때까지 응답 대기
- 제어권(IO작업) → 커널 소유 → 응답(Response)전 까지 대기(Block) → 다른 작업 수행 불가(대기)
Non-blocking
- 시스템 콜 요청시 → 커널 IO 작업 완료 여부 상관없이 즉시 응답
- 제어권(IO작업) → 유저 프로세스 전달→ 다른 작업 수행 가능(지속) → 주기적 시스템 콜 통해서 IO 작업 완료 여부 확인
Asynchronous programming
•
비동기 프로그래밍은 매우 효율적인 방식으로, 다양한 작업들이 동시에 실행될 수 있다.
•
비동기라는 용어는 특정 코드가 완료되는 것을 기다리지 않고, 바로 다음 코드로 넘어갈 수 있음을 의미한다.
•
I/O bound 작업과 같이 대기 시간이 많은 작업을 처리하는 데 특히 유용하다.
Sync vs Async
•
Sync : IO 작업 완료 여부에 대한 Noty는 유저프로세스(호출하는 함수) → 커널(호출되는 함수)
•
Async : IO 작업 완료 여부에 대한 Noty는 커널(호출되는 함수) → 유저프로세스(호출하는 함수)