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

HELLO님의 프로필 이미지
HELLO

작성한 질문수

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

DMA와 고성능 소켓

2강 DMA와 고성능 소켓 질문

해결된 질문

작성

·

228

·

수정됨

0

안녕하세요 널널한 개발자님?

강의 정말 잘 듣고 있습니다

NIC 설명에서 제가 이해한 게 맞는지 헷갈려서 질문드립니다.

프로세스 - I/O Buffer - TCP/IP - NIC RAM

그림상 이렇게 있다고 이해했는데 이 네 개의 영역은 실제 하나의 RAM 내부 어딘가 (각 영역이 차지하는)에서 copy가 반복적으로 이뤄지는 구조인데, 이를 DMA를 사용해서 한 번의 copy로 해결한다라고 이해하면 맞는 걸까요??

답변 3

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

네, 그렇게 이해하시면 되겠습니다. 다만 NIC의 경우 메모리를 따로 갖는 경우도 있고 그렇지 않은 경우도 있습니다. 구조에 따라 차이가 좀 납니다. 특히 서버용 NIC의 경우 일반 PC용과는 아예 구조가 다릅니다. 그런 상황을 제외한다면 생각하는 것이 맞다고 할 수 있겠습니다. 😄

0

HELLO님의 프로필 이미지
HELLO
질문자

프로세스 - I/O Buffer - TCP/IP - NIC RAM

그림상 이렇게 있다고 이해했는데 이 네 개의 영역은 실제 하나의 RAM 내부 어딘가에 차지하고 있는 건가요?

0

안녕하세요, 인프런 AI 인턴입니다.

HELLO님의 질문에 관해서는 다행히 유사한 질문과 그에 대한 답변을 찾았습니다. 답변 내용을 요약해드리면, 일반적인 네트워크 송신 과정은 CPU에서 데이터를 I/O 버퍼로 복사하고, 그 후에 TCP/IP 스택을 거쳐 NIC으로 또 다시 복사하는 과정을 수반합니다. 이러한 복수의 복사 단계가 성능의 병목현상을 일으킬 수 있습니다. DMA(Direct Memory Access)를 사용하면 이러한 복사 단계를 줄여 성능을 향상시킬 수 있죠. DMA를 이용하면, 프로세스가 사용하는 메모리로부터 데이터를 NIC의 RAM까지 직접 전송할 수 있어, CPU의 부하를 줄이고 전송 과정에서 발생하는 메모리 복사를 최소화할 수 있습니다.

아래는 유사한 질문 입니다:

DMA를 통해 프로세스에서 NIC으로 데이터를 전송할 때 질문입니다.
해당 게시물에서 지식공유자께서는 DMA가 데이터를 읽어올 때 적용되고, 이를 통해 NIC가 받은 정보를 바로 조립을 위한 영역으로 보내며 불필요한 메모리 복사를 방지하여 성능을 극대화한다고 설명해주셨습니다.

그리고 이와 유사한 다른 질문과 답변은 아래입니다:

질문하신 내용과 비슷한 맥락에서 DMA와 관련된 이해를 돕는 내용이므로 참고하면 도움이 될 것 같습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

HELLO님의 프로필 이미지
HELLO

작성한 질문수

질문하기