• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

NIC 송수신과 IOCP

23.03.17 18:41 작성 조회수 458

0

  1. NIC를 사용한 송신은 i/o buffer, tcp/ip 를 거쳐서 이루어지고 수신은 direct로 이루어진다라고 이해를 했는데요. 송신은 direct로 이루어지지 않는건가요? 안된다면 왜 그런가요?

  2. NIC에 DMA가 지원이되어서 direct로 process까지 수신이 된다 라고 이해를 했는데 IOCP 기능으로도 똑같이 direct로 process까지 수신이 된다 라고 말씀해주신 것 같습니다. DMA가 지원되면 tcp/ip, i/o buffer는 사용하지 않지만 거쳐간다 하지만 IOCP 기능을 사용하면 거쳐가지않고 바로 process로 간다 라고 이해해도 괜찮을까요?

답변 1

답변을 작성해보세요.

0

  1. 보통 그렇다는 것입니다. 송신 할 때도 Non-buffered I/O는 가능합니다. 그리고 IOCP도 송신에 적용가능합니다. 안 되는 것은 아니며 개발자 본인 선택의 문제입니다.

  2. 'Direct로 Process까지 간다.'는 말의 의미는 Process가 사용하는 메모리로 (중간 버퍼 메모리 사용 및 불필요한 복사 없이) 한 번에 복사 된다는 의미 입니다. 즉, 커널에서 사용자 모드 프로세스가 사용하는 메모리에 Lock을 걸어두고 마치 커널 메모리처럼 써서 데이터를 저장해주는 것입니다.

참고하시기 바랍니다. 감사합니다.