Linux의 C++ 응용 프로그램에서 "버스 마스터 링"을 통해 네트워크 패킷에 액세스하는 데 관심이 있습니다.Linux의 C++에서 사용자 공간 네트워크 카드 "버스 마스터 링"구현
1) "버스 마스터 링"가능 네트워크 카드가 데이터를 쓰고있는 메모리 주소 범위를 알 수 있습니까? 이것이 커널 또는 사용자 공간입니까?
2) # 2가 "Kernel space"인 경우 어떻게 사용자 공간의 메모리에 쓸 수 있도록 카드를 바꿀 수 있습니까?
3a) C++에서이 특정 사용자 공간 메모리 영역에 어떻게 액세스합니까?
3b) 한 응용 프로그램에서 다른 프로세스의 메모리 영역에 액세스 할 수는 있지만 명시 적으로 "공유"된 것만을 시작할 수는 없습니다. 네트워크 카드로 직접 작성된 메모리 영역을 명시 적으로 공유하도록 보장하려면 어떻게해야합니까?
4) 네트워크 카드가 "버스 마스터 링"을 구현하는지 여부를 어떻게 알 수 있습니까?
나는이 용어를 발견했습니다. PACKET_MMAP
- 이것이 내가 원하는 것일까요?
기술적으로 isnt해도 대부분의 사람들이이 개념을 "DMA"라고 이해하는 것이 합리적입니까? – user997112
귀하의 조언을 반영하여 수정했습니다 - 감사합니다. – user997112
http://en.wikipedia.org/wiki/Zero-copy – didierc