728x90
반응형
[블로킹(Blocking) 함수]
- 한번 호출되면, 완료될 때까지 블로킹되는 함수.
- 호출된 함수가 일을 다 끝낸 다음에 반환함.
[논블로킹(Non-Blocking) 함수]
- 호출되자마자 바로 반환을 하기 때문에 일이 완료되는 시점과 반환하는 시점이 서로 다른 함수.
- I/O 작업이 진행되는 동안에도 유저 프로세스의 작업을 중단시키지 않음.
[동기(Synchronous) I/O]
- 블로킹 함수들을 활용한 입, 출력 연산. 최종 목적지인 클라이언트에게로 데이터 전송이 완료되어야만 반환하는 구조가 아니라, 전송을 위해 할당된 내부 메모리 버퍼에 복사가 이뤄지고 나면 반환하는 구조.
- 명령 수행 속도는 빠르지만 입출력 연산은 상대적으로 느려서 기다리는 과정에서 자원 낭비를 초래한다.
- 보통 I/O가 진행되면 CPU는 다른 프로그램의 작업을 수행.
[비동기(Asynchronous) I/O]
- 논블로킹 함수들을 활용 CPU의 제어권을 입출력 연산을 호출한 프로그램에게 곧바로 다시 부여함.
- I/O 결과와 관련 없는 연산이 있을 경우 주로 사용됨.
- CPU는 I/O 결과와 상관 없이 처리 가능한 작업부터 처리함.
- I/O 연산이 완료되면 인터럽트를 통해 알린다.
동기 | 비동기 | Blocking | Non-Blocking | |
제어권 반납 | I/O 완료 후 | 즉시 | I/O 완료 후 | 즉시 |
I/O 진행중 CPU | 다른 프로세스 수행 | 기존 프로세스 | 일시정지 | I/O 완류 확인 반복 |
I/O 완료 알림 | 인터럽트로 알림 | 인터럽트로 알림 | I/O 결과 반환 | 시스템 호출에 대한 I/O 결과 반환 |
완료 시점과 결과 반환 시점의 일치 |
일치 | 불일치 | 일치 | 일치 |
728x90
반응형
'서버 > 시스템 프로그래밍' 카테고리의 다른 글
Windows 제공 동기화 기법 (0) | 2022.08.05 |
---|---|
Thread 관련 (0) | 2022.08.05 |
함수 호출규약 (0) | 2022.08.05 |
스케줄링 (0) | 2022.08.05 |
컨텍스트 스위칭(Context Switching) (0) | 2021.09.03 |