해결된 질문
작성
·
531
0
NIC를 사용한 송신은 i/o buffer, tcp/ip 를 거쳐서 이루어지고 수신은 direct로 이루어진다라고 이해를 했는데요. 송신은 direct로 이루어지지 않는건가요? 안된다면 왜 그런가요?
NIC에 DMA가 지원이되어서 direct로 process까지 수신이 된다 라고 이해를 했는데 IOCP 기능으로도 똑같이 direct로 process까지 수신이 된다 라고 말씀해주신 것 같습니다. DMA가 지원되면 tcp/ip, i/o buffer는 사용하지 않지만 거쳐간다 하지만 IOCP 기능을 사용하면 거쳐가지않고 바로 process로 간다 라고 이해해도 괜찮을까요?
답변 1
0
보통 그렇다는 것입니다. 송신 할 때도 Non-buffered I/O는 가능합니다. 그리고 IOCP도 송신에 적용가능합니다. 안 되는 것은 아니며 개발자 본인 선택의 문제입니다.
'Direct로 Process까지 간다.'는 말의 의미는 Process가 사용하는 메모리로 (중간 버퍼 메모리 사용 및 불필요한 복사 없이) 한 번에 복사 된다는 의미 입니다. 즉, 커널에서 사용자 모드 프로세스가 사용하는 메모리에 Lock을 걸어두고 마치 커널 메모리처럼 써서 데이터를 저장해주는 것입니다.
참고하시기 바랍니다. 감사합니다.