Overlapped
소켓 입출력 모델 - Overlapped 모델
Overlapped 모델완료 루틴을 통해 비동기 입출력 결과를 처리한다.완료루틴 - 애플리케이션이 정의한 일종의 콜백함수로 운영체제가 적절한 시점에 자동으로 호출하도록 되어 있다.동작 원리비동기 입출력 함수를 호출함으로써 운영체제에 입출력 작업을 요청한다.해당 스레드는 곧바로 alertable wait 상태로 진입한다비동기 입출력 작업이 완료되면, 운영체제는 스레드의 APC 큐에 결과를 저장한다비동기 입출력 함수를 호출한 스레드가 alertable wait 상태에 있으면, 운영체제가 APC 큐에 저장된 정보를 참조하여 완료 루틴을 호출한다 APC 큐에 저장된 정보를 토대로 모든 완료 루틴 호출이 끝나면, 스레드는 alertable wait 상태에서 빠져나온다APC Queue (Asynchronous Pr..
Overlapped (비동기) I/O, epoll, iocp 정의 및 코드
Overlapped I/O 논블록 소켓 단점을 보완한 네트워크 통신 방법이 Overlapped I/ 논블로킹 소켓 프로세스 소켓 I/O 함수가 리턴한 코드 would block 인 경우 재시도 호출 낭비 발생. 소켓 I/O 함수를 호출할 때 입력하는 데이터 블록에 대한 복사 연산 발생. CPU 안에 있는 캐시 메모리에 메모리 내용이 복사되어 있으면 데이터 액세스는 매우 빠르지만 캐시에 없는 데이터를 액세스할 때는 메인 메모리 RAM을 액세스하는데, 이 속도는 매우 느림. 물론 하드디스크나 네트워크 데이터보다는 빠르지만 고성능 서버 개발 시 이 복사 연산 무시할 수 없음. TCP, UDP 논블록 소켓에서 재시도용 호출 낭비 TCP 소켓 send() 함수를 호출하면 would block 은 절대 발생하지 않..