인프런 커뮤니티 질문&답변

김주영님의 프로필 이미지
김주영

작성한 질문수

곰책으로 쉽게 배우는 최소한의 운영체제론

DMA와 고성능 소켓

NIC 송수신과 IOCP

해결된 질문

작성

·

531

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을 걸어두고 마치 커널 메모리처럼 써서 데이터를 저장해주는 것입니다.

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

김주영님의 프로필 이미지
김주영

작성한 질문수

질문하기