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

+ Recent posts