문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: 메모리]] [[분류: 컴퓨터 네트워킹]] == 개요 == 제로카피란 컴퓨터 시스템에서 CPU의 개입을 받지 않고 한 메모리의 영역에서 다른 메모리의 영역으로 데이터를 카피하는 작업을 말한다. 이는 CPU 사이클을 절약하여서 네트워크나 SSD와 같이 빠른 데이터가 필요한 시스템에서 유용하게 이용된다. == 원리 == 제로 카피는 [[디바이스 드라이버]], [[파일 시스템]], [[네트워크 스택]]과 같은 빠른 메모리/ 하드웨어 접근을 필요로 하는 곳에서 사용하여 write/ read시간을 극적으로 줄인다. 또한 제로 카피는 user space와 kernel space의 문맥교환도 줄임과 동시에 복사나 읽기에 소요되는 CPU 시간도 줄여서 시스템의 전반적인 성능향상도 도모할 수 있다. 한 예로, 파일을 네트워크에 보이는 전통적인 방식은 각각의 패킷마다 CPU의 문맥전환과 메모리 접근을 수반하여야 했지만, 제로 카피를 이용하여 이러한 시스템의 불필요한 자원소모를 줄일 수 있었다. == 하드웨어 구현 == 초창기 제로카피는 채널을 이용하여 버퍼에 쓰고 지우는 방식으로 구현되었다. 제로카피를 구현하는 방식으로는 [[DMA]](직접 메모리 접근)방식이나 [[MMU]](메모리 관리 장치)와 같은것이 포함된다. 이러한 장치의 동기화에 CPU를 소모하지않고 지정된 메모리 영역을 바로 카피하게 함으로써 소요 시간을 줄일 수 있었다. 또한 이러한 작업은 메모리 정렬이나 커럽션 판단과 같은 기본적인 하드웨어 체킹또한 자동적으로 수행할 수 있다. == 소프트웨어적 구현 == 일부 운영체제들은 제로카피를 API단에서 제공하여 사용자가 제로카피를 할 수 있도록 하였다. 리눅스에서는 다양한 시스템 콜을 이용하여 이러한 제로카피를 구현하였다. 이러한 제로카피를 위한 시스템콜은 [[POSIX]]규격에도 병시되어 있으며, 적절한 시스템 콜을 호출하여 제로카피를 수행할 수 있다. [[RDMA]]는 이러한 제로카피를 네트워크단까지 확장하여 NIC의 불필요한 CPU자원을 줄이고자한 방식이다. RDMA는 DMA와 Zero-copy에 개념적으로 의존한다. Zero copy 문서로 돌아갑니다.