프로그래밍

Zero Copy 란?

Victory_HA 2023. 3. 5. 18:09

참조 : https://soft.plusblog.co.kr/7

Normal Copy (일반복사)

  • 애플리케이션은 디스크에서 정적 파일을 읽어 네트워크 소켓으로 데이터를 전송하는 일을 반복적으로 수행한다.
  • 간단한 이 동작에는 운영체제 내부에서의 불필요한 컨텍스트 스위칭(Context Switching)과 데이터 복사(Data Copy)가 수반된다.
  • 버퍼를 할당 받고 디스크에서 파일을 버퍼로 읽어들여서 다시 소켓으로 전송하는 형태다.


Zero Copy

  • Java의 Transferto()를 사용한 예로 설명하겠다.
  • Transferto()를 사용하면, 2~3번 과정 없이 애플리케이션을 거치지 않고
  • ReadBuffer -> SocketBuffer로 데이터가 복사된다.
  • 컨텍스트 전환은 4회 -2회, 데이터 복사는 4회 -> 3회로 줄어든다.





DMA (Direct Memory Access 직접 메모리 접근)

  • CPU 개입 없이 하드디스크, 그래픽 카드 등이 MEM에 직접 접근하여 Data I/O하는 방식

NIC (Network Interface Card/Controller)

  • 네트워크 인터페이스 카드 or 네트워크 인터페이스 컨트롤러
  • 컴퓨터가 LAN에 연결할 때 사용되는 네트워크 인터페이스 카드
  • ex) Lan카드

'프로그래밍' 카테고리의 다른 글

VisualStudio Copilot 설치하기  (0) 2023.03.30
[MinIO] MinIO Windows에 설치하기  (0) 2023.03.10
[프로그래밍] 디자인패턴  (0) 2022.11.07
[gRPC] gRPC란?  (0) 2022.06.16
[Git] 실수로 지운 commit 복구  (0) 2022.06.16